@sunbird-cb/consumption 0.0.88 → 0.0.89

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.
Files changed (70) hide show
  1. package/bundles/sunbird-cb-consumption.umd.js +1587 -1497
  2. package/bundles/sunbird-cb-consumption.umd.js.map +1 -1
  3. package/bundles/sunbird-cb-consumption.umd.min.js +2 -2
  4. package/bundles/sunbird-cb-consumption.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.js +4 -7
  6. package/esm2015/lib/_common/cards/card-karma-programs/card-karma-programs.component.js +3 -3
  7. package/esm2015/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.js +3 -3
  8. package/esm2015/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.js +3 -3
  9. package/esm2015/lib/_common/cards/card-portrait/card-portrait.component.js +3 -3
  10. package/esm2015/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.js +3 -3
  11. package/esm2015/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.js +3 -3
  12. package/esm2015/lib/_common/cards/cards.component.js +4 -24
  13. package/esm2015/lib/_common/common-strip/common-strip.component.js +5 -5
  14. package/esm2015/lib/_common/competency-passbook/competency-passbook.component.js +3 -3
  15. package/esm2015/lib/_common/competency-passbook-mdo/competency-passbook-mdo.component.js +3 -3
  16. package/esm2015/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.js +50 -54
  17. package/esm2015/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.component.js +5 -7
  18. package/esm2015/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.component.js +8 -8
  19. package/esm2015/lib/_common/user-progress/user-progress.component.js +1 -2
  20. package/esm2015/lib/_services/widget-content-lib.service.js +899 -0
  21. package/esm2015/lib/_services/widget-user-lib.service.js +523 -0
  22. package/esm2015/public-api.js +3 -2
  23. package/esm2015/sunbird-cb-consumption.js +77 -78
  24. package/esm5/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.js +4 -7
  25. package/esm5/lib/_common/cards/card-karma-programs/card-karma-programs.component.js +3 -3
  26. package/esm5/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.js +3 -3
  27. package/esm5/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.js +3 -3
  28. package/esm5/lib/_common/cards/card-portrait/card-portrait.component.js +3 -3
  29. package/esm5/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.js +3 -3
  30. package/esm5/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.js +3 -3
  31. package/esm5/lib/_common/cards/cards.component.js +4 -27
  32. package/esm5/lib/_common/common-strip/common-strip.component.js +5 -5
  33. package/esm5/lib/_common/competency-passbook/competency-passbook.component.js +3 -3
  34. package/esm5/lib/_common/competency-passbook-mdo/competency-passbook-mdo.component.js +3 -3
  35. package/esm5/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.js +83 -87
  36. package/esm5/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.component.js +5 -7
  37. package/esm5/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.component.js +8 -9
  38. package/esm5/lib/_common/user-progress/user-progress.component.js +1 -2
  39. package/esm5/lib/_services/widget-content-lib.service.js +1170 -0
  40. package/esm5/lib/_services/widget-user-lib.service.js +607 -0
  41. package/esm5/public-api.js +3 -2
  42. package/esm5/sunbird-cb-consumption.js +77 -78
  43. package/fesm2015/sunbird-cb-consumption.js +1152 -1089
  44. package/fesm2015/sunbird-cb-consumption.js.map +1 -1
  45. package/fesm5/sunbird-cb-consumption.js +1512 -1422
  46. package/fesm5/sunbird-cb-consumption.js.map +1 -1
  47. package/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.d.ts +2 -3
  48. package/lib/_common/cards/card-karma-programs/card-karma-programs.component.d.ts +2 -2
  49. package/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.d.ts +2 -2
  50. package/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.d.ts +2 -2
  51. package/lib/_common/cards/card-portrait/card-portrait.component.d.ts +2 -2
  52. package/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.d.ts +2 -2
  53. package/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.d.ts +2 -2
  54. package/lib/_common/cards/cards.component.d.ts +2 -5
  55. package/lib/_common/common-strip/common-strip.component.d.ts +3 -3
  56. package/lib/_common/competency-passbook/competency-passbook.component.d.ts +3 -3
  57. package/lib/_common/competency-passbook-mdo/competency-passbook-mdo.component.d.ts +3 -3
  58. package/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.d.ts +4 -6
  59. package/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.component.d.ts +3 -4
  60. package/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.component.d.ts +3 -4
  61. package/lib/_services/{widget-content.service.d.ts → widget-content-lib.service.d.ts} +6 -3
  62. package/lib/_services/{widget-user.service.d.ts → widget-user-lib.service.d.ts} +9 -4
  63. package/package.json +1 -1
  64. package/public-api.d.ts +2 -1
  65. package/sunbird-cb-consumption.d.ts +75 -76
  66. package/sunbird-cb-consumption.metadata.json +1 -1
  67. package/esm2015/lib/_services/widget-content.service.js +0 -852
  68. package/esm2015/lib/_services/widget-user.service.js +0 -475
  69. package/esm5/lib/_services/widget-content.service.js +0 -1109
  70. package/esm5/lib/_services/widget-user.service.js +0 -542
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@sunbird-cb/consumption/lib/consumption.service.ts","ng://@sunbird-cb/consumption/lib/consumption.component.ts","ng://@sunbird-cb/consumption/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.module.ts","ng://@sunbird-cb/consumption/lib/_models/widget-content.model.ts","ng://@sunbird-cb/consumption/lib/_services/viewer-route-util.ts","ng://@sunbird-cb/consumption/lib/_services/widget-content.service.ts","ng://@sunbird-cb/consumption/lib/_services/configurations.service.ts","ng://@sunbird-cb/consumption/lib/_services/multilingual-translations.service.ts","ng://@sunbird-cb/consumption/lib/_models/card-content-v2.model.ts","ng://@sunbird-cb/consumption/lib/_services/widget-user.service.ts","ng://@sunbird-cb/consumption/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/sliders/sliders.component.ts","ng://@sunbird-cb/consumption/lib/_directives/image-responsive/image-responsive.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/image-responsive/image-responsive.module.ts","ng://@sunbird-cb/consumption/lib/_directives/navigation/navigation.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/navigation/navigation.module.ts","ng://@sunbird-cb/consumption/lib/_common/sliders/sliders.module.ts","ng://@sunbird-cb/consumption/lib/_services/insite-data.service.ts","ng://@sunbird-cb/consumption/lib/_common/data-points/data-points.component.ts","ng://@sunbird-cb/consumption/lib/_common/skeleton-loader-lib/skeleton-loader-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/skeleton-loader-lib/skeleton-loader-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/data-points/data-points.module.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender.component.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender-day/calender-day.component.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender.module.ts","ng://@sunbird-cb/consumption/lib/_services/common-methods.service.ts","ng://@sunbird-cb/consumption/lib/_common/common-strip/common-strip.component.ts","ng://@sunbird-cb/consumption/lib/_common/common-strip/common-strip.module.ts","ng://@sunbird-cb/consumption/lib/_common/announcements/announcements.component.ts","ng://@sunbird-cb/consumption/lib/_common/announcements/announcements.module.ts","ng://@sunbird-cb/consumption/lib/_common/top-learners/top-learners.component.ts","ng://@sunbird-cb/consumption/lib/_common/top-learners/top-learners.module.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.directive.ts","ng://@sunbird-cb/consumption/lib/_common/cbp-plan/cbp-plan.component.ts","ng://@sunbird-cb/consumption/lib/_common/sliders-ng-content/sliders-ng-content.component.ts","ng://@sunbird-cb/consumption/lib/_common/sliders-ng-content/sliders-ng-content.module.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.module.ts","ng://@sunbird-cb/consumption/lib/_common/cbp-plan/cbp-plan.module.ts","ng://@sunbird-cb/consumption/lib/consumption.module.ts","ng://@sunbird-cb/consumption/lib/consumption.config.ts","ng://@sunbird-cb/consumption/lib/_models/card-content.model.ts","ng://@sunbird-cb/consumption/lib/_common/cards/cards.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-resource/card-resource.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-portrait/card-portrait.component.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-public-URL/pipe-public-URL.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-public-URL/pipe-public-URL.module.ts","ng://@sunbird-cb/consumption/lib/_pipes/object-to-array/object-to-array.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/object-to-array/object-to-array.pipe.module.ts","ng://@sunbird-cb/consumption/lib/_common/display-content-type-lib/display-content-type-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/display-content-type-lib/display-content-type-lib.module.ts","ng://@sunbird-cb/consumption/lib/_directives/default-thumbnail/default-thumbnail.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/default-thumbnail/default-thumbnail.module.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-duration-transform/pipe-duration-transform.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-user/card-user.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-landscape/card-landscape.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-wide/card-wide.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-wide-v2/card-wide-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-karma-programs/card-karma-programs.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-karma-programs-v2/card-karma-programs-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/provider-card/provider-card.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.ts","ng://@sunbird-cb/consumption/lib/_services/certificate.service.ts","ng://@sunbird-cb/consumption/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-progress/content-progress.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-progress/content-progress.module.ts","ng://@sunbird-cb/consumption/lib/_common/dialog-components/dialog-components.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.ts","ng://@sunbird-cb/consumption/lib/_common/avatar-photo-lib/avatar-photo-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/avatar-photo-lib/avatar-photo-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/cards.module.ts","ng://@sunbird-cb/consumption/lib/registration-lib.config.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.model.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.component.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.component.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.module.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.module.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook/competency-passbook.service.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook/competency-passbook.component.ts","ng://@sunbird-cb/consumption/lib/_common/pills/pills.component.ts","ng://@sunbird-cb/consumption/lib/_common/pills/pills.module.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook/competency-passbook.module.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook-mdo/competency-passbook-mdo.service.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook-mdo/competency-passbook-mdo.component.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook-mdo/competency-passbook-mdo.module.ts","ng://@sunbird-cb/consumption/lib/_services/rating.service.ts","ng://@sunbird-cb/consumption/lib/_common/user-content-rating/user-content-rating-lib.service.ts","ng://@sunbird-cb/consumption/lib/_common/user-content-rating/user-content-rating-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/user-content-rating/user-content-rating-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/mdo-channels/mdo-channel-v1/mdo-channel-v1.component.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/mdo-channels/mdo-channel-v2/mdo-channel-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/mdo-channels/mdo-channel.module.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/providers/providers-v2/providers-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/providers/providers.module.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/national-learning-week/national-learning/national-learning.component.ts","ng://@sunbird-cb/consumption/lib/_common/key-highlights/key-highlights.component.ts","ng://@sunbird-cb/consumption/lib/_common/key-highlights/key-highlights.module.ts","ng://@sunbird-cb/consumption/lib/_common/events/events.component.ts","ng://@sunbird-cb/consumption/lib/_common/events/event-card/event-card.component.ts","ng://@sunbird-cb/consumption/lib/_common/events/events.module.ts","ng://@sunbird-cb/consumption/lib/_common/mdo-leaderboard/mdo-leaderboard.component.ts","ng://@sunbird-cb/consumption/lib/_common/mdo-leaderboard/mdo-leaderboard.module.ts","ng://@sunbird-cb/consumption/lib/_common/highlights-of-week/highlights-of-week.component.ts","ng://@sunbird-cb/consumption/lib/_common/highlights-of-week/highlights-of-week.module.ts","ng://@sunbird-cb/consumption/lib/_common/speakers/speakers.component.ts","ng://@sunbird-cb/consumption/lib/_common/speakers/speakers.module.ts","ng://@sunbird-cb/consumption/lib/_common/user-progress/user-progress.component.ts","ng://@sunbird-cb/consumption/lib/_common/user-progress/user-progress.module.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/national-learning-week/national-learning.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__createBinding","o","m","k","k2","undefined","__exportStar","exports","__values","__read","ar","error","__spread","concat","__spreadArrays","il","a","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","ConsumptionService","Injectable","args","providedIn","ConsumptionComponent","ngOnInit","Component","selector","template","HorizontalScrollerV2Component","valueSvc","loadStatus","id","onHover","sliderConfig","showNavs","showDots","cerificateCardMargin","loadNext","EventEmitter","horizontalScrollElem","enablePrev","enableNext","activeNav","cardSubType","bottomDotsArray","scrollObserver","isMobile","defaultMenuSubscribe","isLtMedium$","_this","stripConfig","horizontalScrollElem_1","fromEvent","nativeElement","pipe","debounceTime","throttleTime","subscribe","updateNavigationBtnStatus","setTimeout","getBottomDotsArray","isLtMedium","ngOnChanges","timer","ngOnDestroy","unsubscribe","showPrev","clientWidth","scrollTo","left","scrollLeft","behavior","elem","scrollWidth","arrowsAlwaysOn","showNext","widthDiff","Math","abs","round","emit","ceil","slideTo","ele","diff","arrLength_1","cardWidth","document","getElementsByClassName","getElementById","scrollerWidth","widgetsLength","defaultMaxWidgets","ValueService","Input","Output","ViewChild","static","HorizontalScrollerV2Module","NgModule","declarations","imports","CommonModule","MatButtonModule","MatIconModule","MatProgressSpinnerModule","NsContent","IContinueLearningData","IContinueLearningDataReq","IContent","IContentResponse","IBatch","IBatchListResponse","ICourse","IContentMinimal","ICollectionHierarchyResponse","IRelatedContentMeta","ICreator","IContentTopic","IContact","IViewerContinueLearningRequest","EPrimaryCategory","EMiscPlayerSupportedCollectionTypes","EMimeTypes","EContentTypes","ECourseCategory","WFBlendedProgramStatus","WFBlendedProgramApprovalTypes","WFSTATUS_MSG_MAPPING","INITIATE","SEND_FOR_MDO_APPROVAL","SEND_FOR_PC_APPROVAL","APPROVED","REJECTED","WITHDRAWN","REMOVED","EXPIRED","EResourcePrimaryCategories","PLAYER_SUPPORTED_COLLECTION_TYPES","COURSE","MODULE","PROGRAM","CURATED_PROGRAM","BLENDED_PROGRAM","STANDALONE_ASSESSMENT","PLAYLIST","KB_SUPPORTED_CONTENT_TYPES","RESOURCE","PLAYLIST_SUPPORTED_CONTENT_TYPES","EDisplayContentTypes","EFilterCategory","ETagType","UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS","PUBLIC_SUPPORTED_CONTENT_TYPES","APPLICATION_JSON","FINAL_ASSESSMENT","HTML","HTML_TEXT","ZIP","ZIP2","M4A","MP3","MP4","PDF","YOUTUBE","TEXT_WEB","SURVEY","VIEWER_ROUTE_FROM_MIME","mimeType","COLLECTION","CHANNEL","CERTIFICATION","window","location","href","includes","IAP","ILP_FP","M3U8","WEB_MODULE","WEB_MODULE_EXERCISE","CLASS_DIAGRAM","HANDS_ON","RDBMS_HANDS_ON","HTML_PICKER","QUIZ","PRACTICE_RESOURCE","COLLECTION_RESOURCE","OFFLINE_SESSION","viewerRouteGenerator","collectionId","collectionType","forPreview","primaryCategory","batchId","courseName","collId","collType","url","forcreator","queryParams","preview","editMode","moment","moment_","PROTECTED_SLAG_V8","type","ɵ1","contentId","ɵ2","certId","ɵ3","API_END_POINTS","CONTENT","AUTHORING_CONTENT","CONTENT_LIKES","SET_S3_COOKIE","SET_S3_IMAGE_COOKIE","FETCH_MANIFEST","FETCH_WEB_MODULE_FILES","MULTIPLE_CONTENT","CONTENT_SEARCH_V5","CONTENT_SEARCH_V6","TRENDING_CONTENT_SEARCH","CONTENT_SEARCH_RELATED_CBP_V6","CONTENT_SEARCH_REGION_RECOMMENDATION","CONTENT_HISTORY","CONTENT_HISTORYV2","COURSE_BATCH_LIST","COURSE_BATCH","AUTO_ASSIGN_BATCH","AUTO_ASSIGN_CURATED_BATCH","AUTO_ASSIGN_OPEN_PROGRAM","USER_CONTINUE_LEARNING","CONTENT_RATING","COLLECTION_HIERARCHY","REGISTRATION_STATUS","MARK_AS_COMPLETE_META","ENROLL_BATCH","ENROLL_BATCH_WF","WITHDRAW_BATCH_WF","BLENDED_USER_WF","BLENDED_USER_COUNT","CERT_ADD_TEMPLATE","CERT_ISSUE","CERT_DOWNLOAD","READ_KARMAPOINTS","CONTENT_READ","READ_COURSE_KARMAPOINTS","CLAIM_KARMAPOINTS","USER_KARMA_POINTS","AGGREGATION_SEARCH","FEATURE_SEARCH","WidgetContentService","http","configSvc","tocConfigData","BehaviorSubject","tocConfigData$","asObservable","telemetryData","Subject","telemetryData$","programChildCourseResumeData","programChildCourseResumeData$","changeTelemetryData","message","isResource","LEARNING_RESOURCE","COMP_ASSESSMENT","fetchMarkAsCompleteMeta","identifier","of","toPromise","updateTocConfig","data","fetchContent","hierarchyType","_additionalFields","shareReplay","fetchAuthoringContent","fetchMultipleContent","ids","join","fetchCollectionHierarchy","pageNumber","pageSize","fetchBlendedCourse","fetchCourseBatches","req","post","retry","map","response","fetchCourseBatch","autoAssignBatchApi","autoAssignCuratedBatchApi","request","programType","MODERATED_PROGRAM","enrollUserToBatch","enrollAndUnenrollUserToBatchWF","fetchBlendedUserWF","fetchBlendedUserCOUNT","fetchContentLikes","contentIds","fetchContentRatings","fetchContentHistory","fetchContentHistoryV2","fields","courseId","subscribeData","resumeData","contentList","continueLearning","toLowerCase","reqBody","contextPathId","resourceId","JSON","stringify","timestamp","Date","now","contextFullPath","dateAccessed","contextType","saveContinueLearning","catch","finally","_a","content","setS3Cookie","_contentId","EMPTY","setS3ImageCookie","catchError","_err","fetchManifest","fetchWebModuleContent","encodeURIComponent","search","query","searchRegionRecommendation","preLabelValue","userProfile","country","filters","labels","searchV6","apiPath","_.get","searchRelatedCBPV6","fetchContentRating","deleteContentRating","delete","addContentRating","getFirstChildInHierarchy","children","artifactUrl","MANDATORY_COURSE_GOAL","child","KNOWLEDGE_ARTIFACT","firstChild","getRegistrationStatus","source","fetchConfig","addCertTemplate","patch","issueCert","downloadCert","trendingContentSearch","getKarmaPoitns","limit","offset","fetchProgramContent","getCourseKarmaPoints","claimKarmapoints","userKarmaPoints","getEnrolledData","doId","parse","localStorage","getItem","getResourseLink","enrolledCourseData","courseCategory","INVITE_ONLY_PROGRAM","isBatchInProgress","batch","checkForDataToFormUrl","gotoTocPage","enrollData","completionPercentage","lrcProgressDetails","modifyEnrollData","name","lastReadContentId","getResourseDataWithData","firstChildId","res","contentData","urlData","resourseId","endDate","planType","batchData","format","startDate","isSameOrBefore","isSameOrAfter","postApiMethod","apiUrl","getApiMethod","HttpClient","ConfigurationsService","appSetup","userUrl","baseUrl","sitePath","hostPath","replace","userRoles","userGroups","restrictedFeatures","restrictedWidgets","instanceConfig","appsConfig","rootOrg","org","activeOrg","isProduction","hasAcceptedTnc","profileDetailsStatus","isActive","userPreference","userProfileV2","nodebbUserProfile","isAuthenticated","isNewUser","pinnedApps","Set","prefChangeNotifier","ReplaySubject","tourGuideNotifier","authChangeNotifier","updateProfile","updateProfileObservable","updateTourGuide","updateTourGuideObservable","updatePlatformRating","bottom","updatePlatformRatingObservable$","languageTranslationFlag","activeThemeObject","activeFontObject","isDarkMode","isIntranetAllowed","isRTL","activeLocale","activeLocaleGroup","completedActivity","completedTour","profileSettings","primaryNavBar","color","pageNavBar","primaryNavBarConfig","welcomeTabs","cstoken","changeNavBarFullView","openExploreMenuForMWeb","updateGlobalProfile","state","updateTourGuideMethod","updatePlatformRatingMethod","MultilingualTranslationsService","translate","selectedLang","languageSelected","languageSelectedObservable","editProfileDetails","getLanguage","unMappedUser","profileDetails","additionalProperties","webPortalLang","lang","use","setItem","setDefaultLang","translateLabelWithoutspace","subtype","nlabel","translationKey","instant","translationKeyn","translateLabel","sl_1","split","forEach","w","index","toUpperCase","slice","translateActualLabel","sl","editProfileDetailsAPI","updatelanguageSelected","userid","reqUpdates","userId","TranslateService","NsCardContent","ICard","IContentTags","ICompetency","EContentStatus","ACBPConst","IGOTConst","dayjs","dayjs_","ɵ1$1","COMPETENCIES","ɵ2$1","ɵ3$1","orgdetails","licenseDetails","batchDetails","FETCH_USER_GROUPS","FETCH_CPB_PLANS","FETCH_USER_ENROLLMENT_LIST","FETCH_USER_ENROLLMENT_LIST_PROFILE","FETCH_USER_ENROLLMENT_LIST_V2","WidgetUserService","environment","handleError","errorMessage","ErrorEvent","throwError","fetchUserGroupDetails","fetchUserBatchList","path","headers","HttpHeaders","Cache-Control","Pragma","Expires","checkStorageData","coursesData","courses","contentStatus","storeUserEnrollmentInfo","userCourseEnrolmentInfo","removeItem","setTime","mapEnrollmentData","getData","fetchProfileUserBatchList","dataKey","checkTime","parsedData","apiCache","Observable","getSavedData","getTime","resetTime","fetchCbpPlanList","mapData","contentNew","todayDate","enrollList","count","childData","childEnrollData","daysCount","OVERDUE","SUCCESS","UPCOMING","status","RETIRED","competencyArea","competencyTheme","competencyThemeType","competencySubTheme","competencyAreaId","competencyThemeId","competencySubThemeId","competencies_v5","element","sortedData","sort","firstDate","uniqueUsersByID","lodash.uniqBy","sortedByEndDate","lodash.orderBy","sortedByStatus","courseData","enrollmentData","enrolledCourseCount","userData","Inject","IStripUnitContentData","ContentStripWithTabsLibComponent","_super","contentSvc","loggerSvc","eventSvc","utilitySvc","router","userSvc","langtranslations","emptyResponse","viewAllResponse","telemtryResponse","providerId","emitViewAll","channnelName","random","stripsResultDataMap","stripsKeyOrder","showAccordionData","showParentLoader","showParentError","showParentNoData","errorDataCount","noDataCount","successDataCount","contentAvailable","veifiedKarmayogi","changeEventSubscription","todaysEvents","tslib_1.__extends","initData","showAccordion","mode","setHiddenForStrip","showStrip","sessionStorage","getIfStripHidden","storageItem","Boolean","widgetData","strips","strip","loader","_b","tslib_1.__values","_c","checkForEmptyWidget","fetchStripFromRequestData","processStrip","keyAndEvent","refreshEvent","eventType","from","toString","filter","eventTypeSet","events$","event","fetchStripFromKey","calculateParentStatus","stripData","find","isStripShowing","programStripKey","tabs","stripTitle","programStripName","widgets","programStripPrimaryCategory","getdata","stripInfo","widget","checkCondition","wData","hideShowAll","viewMoreUrl","checkVisible","visibilityMode","getContineuLearningLenth","getLength","tabWithMaxWidgets","reduce","prev","current","getFiltersFromArray","v6filters","keys","transformSearchV6FiltersV2","checkForDateFilters","eval","organisation","rootOrgId","designation","professionalDetails","loaderWidgets","transformSkeletonToWidgets","fetchFromEnrollmentList","fetchFromSearchV6","fetchFromTrendingContent","fetchAllCbpPlans","fetchAllTopContent","fetchAllFeaturedContent","fetchAllBookMarkData","fetchAllPlaylistSearch","fetchPlaylistReadData","fetchCiosContentData","enrollmentList","content_1","contentNew_1","tabResults_1","postCardForSearch","contentTemp","progress","completionStatus","enrolledDate","lastContentAccessTime","lastReadContentStatus","issuedCertificates","dateA","splitEnrollmentTabsData","transformContentsToWidgets","tabResults","splitData","getInprogressAndCompleted","fetchTabStatus","itmInner","array","customFilter","inprogress","completed","idx","arr","statusRetired","statusA","statusB","originalFilters","console","log","requestRequired","allTabs","currentTabFromMap","getTabDataByNewReqSearchV6","searchV6Request","response_1","results","enrollInterval","setInterval","checkInvitOnlyAssessments","Event","transformEventsToWidgets","enrollmentMapData","filteredArray_1","now_1","clearInterval","tab","trendingSearch","getTabDataByNewReqTrending","trendingSearchRequest","responseKey","userRootOrgId","proccesedResult","certifications","toggleInfo","warn","contents","widgetType","widgetSubType","widgetHostClass","cardCustomeClass","customeClass","context","pageSection","position","intranetMode","deletedMode","contentTags","setEventListData","_content","loaderConfig","fetchStatus","_viewMoreUrl","tabsResults","canHideStrip","noDataWidget","errorWidget","info","title","stripTitleLink","disableTranslate","tabsType","stripName","stripBackground","secondaryHeading","preWidgets","postWidgets","showOnNoData","showOnLoader","showOnError","checkParentStatus","stripWidgetsCount","settledCount","totalCount","api","cbpList","topContent","featureContent","bookmarkRead","playlistSearch","playlistRead","ciosContent","tabClicked","tabEvent","stripMap","stripKey","tabLoading","textLabel","raiseInteractTelemetry","WsEvents","EnumInteractTypes","CLICK","subType","EnumInteractSubTypes","HOME_PAGE_STRIP_TABS","_.camelCase","module","EnumTelemetrymodules","HOME","currentStrip","tabSelected","computeDataOnClick","getTabDataByNewReqTopContent","getTabDataByNewReqPlaylistReadContent","getTabDataByCiosSearch","getTabDataByfilter","tabIndex","currentTab","splitCbpTabsData","getTabsList","all","upcoming","overdue","planDuration","allCompleted","allData","allInCompleted","allCompletedOverDue","allCompletedAll","getSelectedIndex","returnValue","translateLabels","identify","item","tracker","postMethodFilters","postRequestMethod","raiseTelemetry","getRequestMethod","showViewMore","orgList","featuredProvider","featuredProviders","getFullUrl","formedUrl","mdoChannelsBookmarkId","providerDataKey","redirectViewAll","queryParamsData","navigate","bookmarkId","transformAllContentsToWidgets","transformAllTabContentsToWidgets","finalPlaylistData_1","prgData","error_11","firstTab","extContentData","_currentTab","error_13","LoggerService","EventService","UtilityService","Router","HostBinding","WidgetBaseComponent","HttpLoaderFactory","TranslateHttpLoader","ContentStripWithTabsLibModule","SbUiResolverModule","RouterModule","MatToolbarModule","MatTooltipModule","MatListModule","MatSidenavModule","MatCardModule","MatExpansionModule","MatRadioModule","MatChipsModule","MatInputModule","MatFormFieldModule","MatDialogModule","MatSnackBarModule","MatSelectModule","MatDatepickerModule","MatNativeDateModule","MatTableModule","MatCheckboxModule","MatButtonToggleModule","MatTabsModule","MatAutocompleteModule","TranslateModule","forRoot","provide","TranslateLoader","useFactory","deps","entryComponents","SlidersLibComponent","events","currentIndex","slideInterval","reInitiateSlideInterval","interval","currentData","redirectUrl","openInNewTab","open","bannerUrl","pathname","pageUrl","bannerRedirectUrl","pageIdExt","IImageResponsiveUnit","customBreakPoints","xs","l","xl","xxl","ImageResponsiveDirective","breakpointObserver","src","srcBindUrl","currentSize","breakpointSubscription","observe","distinctUntilChanged","breakpoints","setSrc","Directive","BreakpointObserver","ImageResponsiveModule","NavigationDirective","wsUtilsNavigation","routeUrl","onMouseEnter","$event","preventDefault","stopPropagation","HostListener","NavigationModule","MyHammerConfig","buildHammer","Hammer","touchAction","HammerGestureConfig","SlidersLibModule","providers","HAMMER_GESTURE_CONFIG","useClass","PROVIDER_INSIGHTS","TRAINING_DETAILS","ANNOUNCEMENTS_DETAILS","LEARNERS","LEADERBOARD","LEADERBOARD_USERS","NLW_LEADERBOARD","INSIGHTS","USER_PROGRESS","InsiteDataService","fetchSearchData","fetchAnnouncementsData","fetchTrainingDetails","fetchLearner","channelId","fetchLeaderboard","fetchMdoUsers","orgId","fetchNwlStats","fetchInsightsData","payload","fetchUserProgress","DataPointsComponent","insightSvc","layoutType","fetchDataFromApi","pageLayout","customArray","isDataLoading","objectData","createCustomArray","metrics","getStats","getInsiteData","nByn","dataColSpan","organisations","requestType","nudges","nudgeData","converToIndianSystem","integerPart","decimalPart","lastThree","otherNumbers","formattedIntegerPart","substr","SkeletonLoaderLibComponent","bindingClass","height","width","SkeletonLoaderLibModule","FormsModule","ReactiveFormsModule","DataPointsModule","CalenderComponent","datePipe","showHeader","defaultDays","fullCalendor","days","trainings","currentDate","allMonths","monthsDropdown","currentMonthAndYear","transform","selectedMonth","getDaysInMonth","getFullYear","getMonth","getMonthsDropdownData","getDays","locale","category","contentType",">=","<=","channel","sort_by","lastUpdatedOn","resp","prevData","location_1","formatObject","startTime","convertTo12HourFormat","endTime","formatDate","registrationLink","getKeys","obj","date","timeString","time","hours","minutes","ampm","cDate","counter","initDate","myDate","setDate","getDate","year","month","selectMonth","DatePipe","CalenderDayComponent","webDisplayDate","mobileDisplayDate","openLink","link","fDate","CalenderModule","schemas","CUSTOM_ELEMENTS_SCHEMA","CommonMethodsService","handleCapitalize","str","_str","charAt","IStripUnitCommonData","CommonStripComponent","commonMethodsSvc","dataType","ɵ0$2","CommonStripModule","AnnouncementsComponent","mobileHeight","openDialog","isLoading","announcements","expand","expanded","fetchData","filterCriteriaMap","requestedFields","orderBy","orderDirection","facets","description","list","viewMoreOrLess","openAnnouncements","showMoreOrLess","AnnouncementsModule","TopLearnersComponent","loading","colors","toLocaleString","Number","_error","getRank","rank","getColor","randomIndex","floor","createInititals","initials","TopLearnersModule","ScrollableItemDirective","el","scrollIntoView","blockValue","block","ElementRef","CbpPlanComponent","styleData","contentdata","sliderData","contentEle","localData","downloaUrl","getCurrentIndex","indexValue","getFileName","downloadUrl","at","downloadCBPPlan","xhr","XMLHttpRequest","responseType","onload","blob","Blob","URL","createObjectURL","createElement","download","appendChild","click","removeChild","revokeObjectURL","statusText","onerror","send","ViewChildren","SlidersNgContentLibComponent","loadNgContentData","autoScroll","customBanner","currentIndexValue","SlidersNgContentLibModule","ScrollableItemModule","CbpPlanModule","ConsumptionModule","ROOT_WIDGET_CONFIG","card","_type","cardResource","CardsComponent","contSvc","triggerTelemetry","isIntranetAllowedSettings","cbPlanInterval","getCbPlanData","getEnrollmentData","isInIntranet","getRedirectUrlData","externalId","cbpListArr","cbPlanMapData","raiseCardClick","CardResourceComponent","CardPortraitComponent","snackBar","isCardLoading","isCardFlipped","acbpConstants","showFlip","defaultThumbnail","logos","defaultContent","sourceLogos","sources","defaultSLogo","defaultSourceLogo","showSnackbar","showIntranetContent","duration","isLiveOrMarkForDeletion","MatSnackBar","PipePublicURL","mainUrl","finalURL","contentHost","contentBucket","Pipe","PipePublicURLModule","ObjectToArrayPipe","_i","ObjectToArrayPipeModule","DisplayContentTypeLibComponent","useTranslation","displayContentType","DEFAULT","displayContentTypeEnum","DisplayContentTypeLibModule","DefaultThumbnailDirective","wsUtilsDefaultThumbnail","isSrcUpdateAttemptedForDefault","srcUrl","updateSrc","DefaultThumbnailModule","PipeDurationTransformPipe","h","defaultDuration","hmsCalculation","duration2","moment.duration","moment.utc","asMilliseconds","duration2H","padStart","dur","space","PipeDurationTransformModule","CardUserComponent","rollup","CardLandscapeComponent","CardWideComponent","ver","version","CardMDOChannelComponent","channelData","emitTelemetry","channelClick","channeldata","redirectTo","orgName","CardWideV2Component","CardKarmaProgramsComponent","randomColorApply","randomColors","setRandomColor","randomIndex1","playListKey","CardKarmaProgramsV2Component","raiseTemeletry","ProviderCardComponent","CardPortraitExtComponent","CardAssessmentComponent","activeResource","daysRemaining","daysPending","daysFinish","startCountdown","updateCountdown","distance","ɵ0$3","ɵ1$2","urls","DOWNLOAD_CERTIFICATE","DOWNLOAD_CERTIFICATE_v2","CertificateService","downloadCertificate","downloadCertificate_v2","CertificateDialogComponent","dialogRef","navUrl","cet","raiseIntreactTelemetry","style","remove","downloadCertPng","uriData","img","Image","canvas","ctx","getContext","drawImage","toDataURL","append","downloadCertPdf","dataImg","pdf","jsPDF","addImage","save","shareCert","raiseShareIntreactTelemetry","action","CERTIFICATE","host","class","MatDialogRef","MAT_DIALOG_DATA","CardProgressPortraitLibComponent","certificateService","dialog","downloadCertificateLoading","certificateData","certData_1","printUri","MatDialog","ContentProgressComponent","progressType","className","customClassName","rendom","role","aria-valuemin","aria-valuemax","[attr.aria-valuenow]","ContentProgressModule","MatProgressBarModule","ɵ0$4","DialogComponentsModule","MatMenuModule","PipeSafeSanitizerModule","CardMdoChannelV1Component","AvatarPhotoLibComponent","size","defaulfColor","randomColor","showBadge","showInitials","randomcolors","photoUrl","datalen","circleColor","change","currentValue","previousValue","firstChange","AvatarPhotoLibModule","MatRippleModule","ɵ0$5","CardsModule","WIDGET_REGISTERED_LIB_MODULES","WIDGET_REGISTRATION_LIB_CONFIG","component","NsContentStripWithFacets","IContentStripMultiple","IContentStripUnit","IStripRequestApi","INetworkRequestApi","IStripInfo","IContentStripResponseApi","IContentStripTab","SEARCH","IStripUnitContentData$1","ContentStripFacetFilterComponent","_fb","facetForm","group","stripRequestFor","ApiRequestFor","onTabClickRequest","fetchFromSearch","hideViewMoreUrl","requestBody","getSelectedPillIndex","tabdata","pillsData","findIndex","pill","selected","pillIndex","currentPillFromMap","pillSelected","resetFilter","resetSelectedPill","pillClicked","pillData","tabWithMaxWidgets_1","mapAllDataWithFacets","filteredData","contEle","nlwUserExp","contentFilteredData","getorgData","eventData","selectedValue","returnedValues","nlwOrgs","reset","FormBuilder","IStripUnitContentData$2","ContentStripWithTabsPillsComponent","fetchForYouData","allPills","currenPillsFromMap","countOfWidget_1","HttpLoaderFactory1","ContentStripWithTabsPillsModule","ɵ0$6","ContentStripFacetFilterModule","API_POINTS","COMPETENCY_LIST","COMPETENCY_LIST_V2","CERTIFICATE_URL","CompetencyPassbookService","getCompetencyList","getCompetencyListv_V2","fetchCertificate","CompetencyPassbookComponent","competencySvc","cardDisplayCount","dynamicAlignPills","temeletryResponse","loadCometency","loadCompetencyArea","competencyVersion","allcompetencyTheme","competencyStrength","competencyThemeLength","showAllTheme","showAll","comeptencyKeys","compentency","compentencyVersionKey","getAllCompetencies","showMore","viewMore","getCompetencyArea","addfilter","createdFor","vCompetencyArea","callCompetencySearch","fact","values","area","addFilter","getcompetencyThemeCount","getThemeDataByArea","competencyChange","originalCompetencyArray","childEle","getcompetencyTheme","vCompetencyTheme","competencyThemeData_1","ele1","ele2","resetViewMore","areaData","competencyThemeData","themeData","getcompetencySubTheme","returnedData_1","competencyThemeData_2","comp","viewMoreChildren","displayAllTheme","navigateToCompetency","compData","navigateByUrl","compArea","vCompetencySubTheme","competencySubThemeData_1","areaEle","themeEle","obj1","some","obj2","every","PillsComponent","pillClick","dynamicClass","dynamicColor","requiredTitlecase","selectedPill","PillsModule","CompetencyPassbookModule","competency_URL","CompetencyPassbookMdoService","mdoCompetency","CompetencyPassbookMdoComponent","getMdoCompetencies","getMdoCompetency","facet","getCompetencyTheme","CompetencyPassbookMdoModule","PROXY_SLAG_V8","ɵ1$3","ɵ2$2","userID","GET_RATING","ADD_OR_UPDATE","GET_RATING_SUMMARY","GET_RATING_LOOKUP","GET_AUTHOR_REPLY","POST_AUTHOR_REPLY","RatingService","getRating","addOrUpdateRating","getRatingSummary","getRatingLookup","getRatingReply","getRatingIcon","ratingIndex","avg","avgRating","ratingFloor","getRatingIconClass","getAuthorReply","TOP_REVIEWS","UserContentRatingLibService","fetchTopReviews","UserContentRatingLibComponent","ratingService","userRatingSvc","formData","getTopReviews","contentInfo","rating","review","userDetails","handleScrollClick","dataValue","scrollableItems","x","UserContentRatingLibModule","MdoChannelV1Component","MdoChannelV2Component","route","sectionList","selectedIndex","hideCompetencyBlock","contentTabEmptyResponseCount","titles","icon","showModal","descriptionMaxLength","isTelemetryRaised","snapshot","form","onResize","setWidth","stripWidth","innerWidth","params","hideContentStrip","colData","contentStripData","triggerOpenDialog","overflow","onClose","raiseTelemetryInteratEvent","viewMoreText","_.kebabCase","typeOfTelemetry","toLocaleLowerCase","LEARN","raiseCompetencyTelemetry","hideCompetency","showAllContent","_stripData","columnData","contentStrip","sectionKey","ActivatedRoute","ɵ0$8","MDOChannelModule","ProvidersV2Component","providerName","getNavitems","navList","enabled","navigation","navOrder","scrollToSection","section","top","offsetTop","navItem","column","colEle","hideLearnerReview","learnerReview","pageDetails","raiseNavTelemetry","ɵ0$9","ProvidersModule","NationalLearningComponent","hideKeyHightlight","raiseTabClick","KeyHighlightsComponent","titleMaxLength","KeyHighlightsModule","EventsComponent","daysBetween","<","getEventsList","getDaysBetweenDates","nwlEventsConfig","localObj","isSame","currentDay","add","getEvents","slectedDate","nextDay","EventCardComponent","getEventDate","getPublicUrl","EventsModule","MdoLeaderboardComponent","insiteDataService","searchTerm","mdoLeaderBoard","user","getTabData","nameStr","getMedal","handleSearchQuery","org_name","toggleWeekHightlits","MdoLeaderboardModule","HighlightsOfWeekComponent","videoUrl","HighlightsOfWeekModule","SpeakersComponent","profileImage","SpeakersModule","UserProgressComponent","insitesData","userProgress","insights","getUserProgress","getInsightsData","userLeaderBoard","fullname","firstName","profileImageUrl","roundTo","number","UserProgressModule","NationalLearningModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsumptionService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-consumption',\n template: `\n <p>\n consumption works!\n </p>\n `,\n styles: []\n})\nexport class ConsumptionComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core';\nimport {\n fromEvent,\n Subscription,\n timer,\n} from 'rxjs';\nimport { debounceTime, throttleTime } from 'rxjs/operators';\nimport { TFetchStatus } from '../../_constants/misc.constants';\nimport { ValueService } from '@sunbird-cb/utils-v2';\nimport { NsCommonStrip } from '../common-strip/common-strip.model';\nimport { NsContentStripMultiple } from '../../_models/content-strip-multiple.model';\n\n@Component({\n selector: 'sb-uic-horizontal-scroller-v2',\n templateUrl: './horizontal-scroller-v2.component.html',\n styleUrls: ['./horizontal-scroller-v2.component.scss'],\n})\n\nexport class HorizontalScrollerV2Component implements OnInit, OnChanges, OnDestroy {\n\n @Input() loadStatus: TFetchStatus = 'fetching';\n @Input() id: string = '';\n @Input() onHover = false;\n @Input() sliderConfig: any = {\n showNavs: true,\n showDots: true,\n cerificateCardMargin: false,\n };\n @Output() loadNext = new EventEmitter();\n @Input() widgetsLength: any;\n @Input() defaultMaxWidgets: any;\n @Input() stripConfig: any;\n @ViewChild('horizontalScrollElem', { static: true })\n horizontalScrollElem: ElementRef | null = null;\n\n enablePrev = false;\n enableNext = false;\n activeNav = 0;\n cardSubType = 'standard';\n bottomDotsArray: any = [];\n private scrollObserver: Subscription | null = null;\n isMobile = false\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n\n constructor(private valueSvc: ValueService) { }\n\n ngOnInit() {\n this.cardSubType = this.stripConfig && this.stripConfig.cardSubType ? this.stripConfig.cardSubType : 'standard';\n if (this.horizontalScrollElem) {\n const horizontalScrollElem = this.horizontalScrollElem;\n this.scrollObserver = fromEvent(\n horizontalScrollElem.nativeElement,\n 'scroll',\n )\n .pipe(debounceTime(100), throttleTime(100))\n .subscribe(_ => {\n this.updateNavigationBtnStatus(horizontalScrollElem\n .nativeElement as HTMLElement);\n });\n setTimeout(() => {\n this.getBottomDotsArray();\n }, 700);\n }\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n\n ngOnChanges() {\n timer(100).subscribe(() => {\n if (this.horizontalScrollElem) {\n this.updateNavigationBtnStatus(this.horizontalScrollElem\n .nativeElement as HTMLElement);\n }\n });\n setTimeout(() => {\n this.getBottomDotsArray();\n }, 700);\n }\n\n ngOnDestroy() {\n if (this.scrollObserver) {\n this.scrollObserver.unsubscribe();\n }\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n\n showPrev() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft -= 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\n behavior: 'smooth',\n });\n \n const elem = this.horizontalScrollElem.nativeElement\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav -= 1;\n } else {\n if(this.sliderConfig.arrowsAlwaysOn) {\n if(this.horizontalScrollElem.nativeElement.scrollLeft === 0){\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: elem.scrollWidth,\n behavior: 'smooth',\n });\n this.activeNav = this.bottomDotsArray.length - 1;\n }\n }\n }\n }\n }\n\n showNext() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft += 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\n behavior: 'smooth',\n });\n const elem = this.horizontalScrollElem.nativeElement\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav += 1;\n } else {\n if(this.sliderConfig.arrowsAlwaysOn) {\n if(this.horizontalScrollElem.nativeElement.scrollLeft !== 0 && elem.clientWidth + elem.scrollLeft >= elem.scrollWidth ){\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: 0,\n behavior: 'smooth',\n });\n this.activeNav = 0;\n }\n }\n }\n }\n }\n\n private updateNavigationBtnStatus(elem: HTMLElement) {\n this.enablePrev = true;\n this.enableNext = true;\n if (elem.scrollLeft === 0) {\n if(!this.sliderConfig.arrowsAlwaysOn) {\n this.enablePrev = false;\n }\n this.activeNav = 0;\n }\n // if (elem.scrollWidth === Math.round(elem.clientWidth + elem.scrollLeft)) {\n // if (this.loadStatus === 'hasMore') {\n // this.loadNext.emit();\n // } else {\n // if(!this.sliderConfig.arrowsAlwaysOn) {\n // this.enableNext = false;\n // }\n // if (this.bottomDotsArray.length) {\n // this.activeNav = this.bottomDotsArray.length - 1;\n // }\n // }\n // }\n // if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n // this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth);\n // }\n\n\n const widthDiff = Math.abs(elem.scrollWidth - Math.round(elem.clientWidth + elem.scrollLeft))\n if (widthDiff === 0 || widthDiff === 1) {\n if (this.loadStatus === 'hasMore') {\n this.loadNext.emit()\n } else {\n this.enableNext = false\n if (this.bottomDotsArray.length) {\n this.activeNav = this.bottomDotsArray.length - 1\n }\n }\n }\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth)\n }\n }\n\n slideTo(ele: any) {\n const diff = ele - this.activeNav;\n // if (ele > this.activeNav && ele !== this.activeNav) {\n // if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // } else {\n // if (this.horizontalScrollElem && ele >= 0 && ele !== this.activeNav) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft - (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // }\n if (this.horizontalScrollElem) {\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth * diff),\n behavior: 'smooth',\n });\n }\n this.activeNav = ele;\n }\n\n getBottomDotsArray() {\n if (this.horizontalScrollElem) {\n this.bottomDotsArray = [];\n let cardWidth;\n let arrLength;\n if (this.cardSubType !== 'card-wide-v2') {\n cardWidth = this.cardSubType === 'standard' ? 245 :\n ((document.getElementsByClassName(this.cardSubType) &&\n document.getElementsByClassName(this.cardSubType)[0] !== undefined)\n ? document.getElementsByClassName(this.cardSubType)[0].clientWidth : 245);\n if (document.getElementById(`${this.id}`)) {\n const scrollerWidth = document.getElementById(`${this.id}`).clientWidth;\n const totalCardsLength = cardWidth * this.widgetsLength;\n if (totalCardsLength > scrollerWidth) {\n arrLength = Math.round(scrollerWidth / cardWidth);\n this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?\n this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets;\n arrLength = this.defaultMaxWidgets / arrLength;\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i);\n }\n }\n }\n } else {\n setTimeout(() => {\n this.bottomDotsArray = []\n arrLength = document.getElementsByClassName(this.cardSubType).length;\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i);\n }\n }, 1000);\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HorizontalScrollerV2Component } from './horizontal-scroller-v2.component';\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material';\n\n@NgModule({\n declarations: [HorizontalScrollerV2Component],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n ],\n exports: [HorizontalScrollerV2Component],\n})\nexport class HorizontalScrollerV2Module { }\n","export namespace NsContent {\n export interface IContinueLearningData extends IContent {\n continueData: any;\n }\n\n export interface IContinueLearningDataReq {\n request: {\n userId: string | undefined,\n courseId: string,\n contentIds: string[],\n batchId: string | undefined | null\n fields?: string[]\n };\n }\n\n export interface IContent {\n platform?: any;\n addedOn: string;\n appIcon: string;\n artifactUrl: string;\n averageRating?: any;\n // this will be used to content form enrollment user list\n batches?: any;\n batch?: any;\n body?: string;\n certificationList?: IRelatedContentMeta[];\n certificationStatus?: TCertificationStatus;\n certificationSubmissionDate?: string;\n certificationUrl: string;\n childNodes?: string[];\n children: IContent[];\n childrenClassifiers?: string[];\n clients?: IClient[];\n collections?: IContent[];\n completionPercentage?: number | null;\n completionStatus?: number;\n difficultyLevel: string;\n contentId: string;\n contentType: EContentTypes;\n contentUrlAtSource: string;\n creatorContacts: ICreator[];\n\n creatorDetails: ICreator[];\n creatorLogo: string;\n creatorPosterImage: string;\n creatorThumbnail: string;\n\n curatedTags: string[];\n description: string;\n displayContentType: EDisplayContentTypes; // For UI\n downloadUrl?: string;\n duration: number;\n enrolledDate?: string;\n exclusiveContent?: boolean;\n expiryDate?: string;\n equivalentCertifications?: IRelatedContentMeta[];\n hasAccess: boolean;\n hasAssessment?: string;\n idealScreenSize?: string;\n identifier: string;\n introductoryVideo?: string;\n introductoryVideoIcon?: string;\n learningTrack?: string;\n isExternal: boolean;\n isIframeSupported: 'Yes' | 'No' | 'Maybe';\n isInIntranet?: boolean;\n keywords?: string[];\n kArtifacts?: IRelatedContentMeta[];\n lastContentAccessTime?: string;\n lastUpdatedOn: string;\n learningMode?: TLearningMode;\n learningObjective: string;\n labels?: string[];\n locale?: string;\n hasTranslations?: { identifier: string; locale: string }[];\n isTranslationOf?: { identifier: string; locale: string }[];\n me_totalSessionsCount: number;\n mediaType: string;\n mimeType: EMimeTypes;\n msArtifactDetails?: IMSArtifactDetails;\n mode?: ETagType;\n name: string;\n nextCertificationAttemptDate?: string;\n playgroundInstructions?: string;\n playgroundResources?: IResourcePlayground[];\n postContents?: IPrePostContent[];\n posterImage?: string;\n preContents?: IPrePostContent[];\n preRequisites: string;\n price?: {\n currency: string\n value: number\n };\n primaryCategory: EPrimaryCategory;\n proctorUrl?: string;\n progress?: IMarkAsCompleteProgress;\n publishedOn: string;\n recentCertificationAttemptScore?: number;\n recommendationReasons?: string[];\n region?: string[];\n registrationUrl?: string;\n registrationInstructions?: string;\n resourceCategory?: string[];\n resourceType: string;\n size?: number;\n skills: ISkill[];\n softwareRequirements?: IResourceDetail[];\n sourceName: string;\n sourceShortName: string;\n sourceIconUrl?: string;\n sourceUrl?: string;\n ssoEnabled?: boolean;\n lastReadContentId?: string;\n status:\n | 'Draft'\n | 'InReview'\n | 'QualityReview'\n | 'Reviewed'\n | 'Processing'\n | 'Live'\n | 'Deleted'\n | 'MarkedForDeletion'\n | 'Expired';\n subTitle?: string;\n subTitles?: ISubtitle[];\n studyMaterials?: IRelatedContentMeta[];\n systemRequirements?: string[];\n tags: ITag[];\n topics: IContentTopic[];\n totalLikes?: { [key: string]: number };\n totalRating?: number;\n track: ITrack[];\n uniqueLearners?: number;\n viewCount?: { [key: string]: number };\n reason?: string; // required for Knowledge board\n trainingLHubCount?: number; // for LHub trainings\n verifiers?: {\n // required for External Certifications\n name: string\n email: string\n id: string\n }[];\n references?: { url: string; title: string }[];\n resumePage?: number; // For player WebModule in UI\n [key: string]: any;\n optionalReading: boolean;\n additionalTags?: string[];\n }\n\n export interface IContentResponse {\n id: string;\n params: any;\n responseCode: string;\n result: {\n content: IContent\n };\n ts: string;\n ver: string;\n }\n\n export interface IBatch {\n batchId: string;\n createdBy: string;\n endDate: string | null;\n enrollmentType: string;\n identifier: string;\n name: string;\n startDate: string;\n status: number;\n cert_templates?: null;\n collectionId: string;\n courseId: string;\n createdDate: string;\n createdFor: string[];\n description?: null;\n enrollmentEndDate: string | null;\n id: string;\n mentors?: string[] | null;\n tandc?: null;\n updatedDate?: string | null;\n }\n\n export interface IBatchListResponse {\n content?: IBatch[];\n count?: number;\n enrolled?: boolean;\n workFlow?: {\n wfInitiated?: boolean\n batch?: any\n wfItem?: any\n };\n }\n\n export interface ICourse {\n active: true;\n addedBy: string;\n batch: IBatch;\n batchId: string;\n certificates: [];\n collectionId: string;\n completedOn: string | null;\n completionPercentage: number | null;\n completionStatus?: number;\n content: IContent;\n contentId: string;\n contentStatus: any;\n courseId: string;\n courseLogoUrl: string;\n courseName: string;\n dateTime: number;\n description: string;\n enrolledDate: string;\n issuedCertificates: [];\n lastContentAccessTime?: string;\n lastReadContentId?: string;\n lastReadContentStatus: string | null;\n leafNodesCount: number;\n progress: number;\n status: number;\n userId: string;\n }\n\n export interface IContentMinimal {\n appIcon: string;\n artifactUrl: string;\n difficultyLevel: string;\n contentType: EContentTypes;\n description: string;\n displayContentType?: EDisplayContentTypes;\n duration: number;\n identifier: string;\n hasAccess?: boolean;\n isInIntranet?: boolean;\n learningMode?: TLearningMode;\n mimeType: EMimeTypes;\n name: string;\n creatorDetails: ICreator[];\n creatorContacts: ICreator[];\n posterImage: string;\n primaryCategory: EPrimaryCategory;\n resourceType?: string;\n totalRating?: number;\n }\n\n export interface ICollectionHierarchyResponse {\n data: IContent;\n hasMore: boolean;\n totalContents: number;\n }\n\n export interface IRelatedContentMeta {\n identifier: string;\n name: string;\n }\n\n type TCertificationStatus = 'ongoing' | 'passed' | 'canAttempt' | 'cannotAttempt';\n export type TLearningMode = 'Self-Paced' | 'Instructor-Led' | 'Open' | 'Closed';\n\n interface IMarkAsCompleteProgress {\n progressStatus: 'open' | 'started' | 'completed';\n showMarkAsComplete: boolean;\n markAsCompleteReason: string;\n progressSupported: boolean;\n progress: number | null;\n }\n\n interface ITag {\n id: string;\n type: string;\n value: string;\n }\n interface IMSArtifactDetails {\n channelId: string;\n videoId: string;\n }\n interface IClient {\n displayName: string;\n id: string;\n name: string;\n }\n interface ISubtitle {\n srclang: string;\n label: string;\n url: string;\n }\n interface IPrePostContent {\n identifier: string;\n name: string;\n }\n interface IResourceDetail {\n title?: string;\n url?: string;\n }\n interface IResourcePlayground {\n appIcon: string;\n artifactUrl: string;\n identifier: string;\n name: string;\n }\n interface ITrack {\n id: string;\n name: string;\n status: string;\n visibility: string;\n }\n interface ISkill {\n id: string;\n category: string;\n skill: string;\n name: string;\n }\n export interface ICreator {\n id: string;\n name: string;\n email: string;\n }\n export interface IContentTopic {\n identifier: string;\n name: string;\n }\n // API Based\n\n export interface IContact {\n id: string;\n name: string;\n email: string;\n }\n\n export interface IViewerContinueLearningRequest {\n resourceId: string;\n contextPathId: string;\n data: string;\n dateAccessed: number;\n contextType?: string;\n }\n /**\n * @deprecated Enum EContentTypes should not be used in future\n */\n export enum EContentTypes {\n PROGRAMV2 = 'Program',\n PROGRAM = 'Learning Path',\n CHANNEL = 'Channel',\n COURSE = 'Course',\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\n KNOWLEDGE_BOARD = 'Knowledge Board',\n LEARNING_JOURNEY = 'Learning Journeys',\n MODULE = 'CourseUnit',\n RESOURCE = 'Resource',\n }\n export enum EPrimaryCategory {\n PROGRAM = 'Program',\n COURSE = 'Course',\n MODULE = 'Course Unit',\n RESOURCE = 'Learning Resource',\n GOALS = 'GOALS',\n PLAYLIST = 'PLAYLIST',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n COMP_ASSESSMENT = 'Competency Assessment',\n FTB_QUESTION = 'FTB Question',\n MTF_QUESTION = 'MTF Question',\n MULTIPLE_CHOICE_QUESTION = 'Multiple Choice Question',\n SINGLE_CHOICE_QUESTION = 'Single Choice Question',\n MANDATORY_COURSE_GOAL = 'Mandatory Course Goal',\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\n BLENDED_PROGRAM = 'Blended Program',\n OFFLINE_SESSION = 'Offline Session',\n CURATED_PROGRAM = 'Curated Program',\n // following will not be available soon\n /**\n * @deprecated The type should not be used\n */\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\n /**\n * @deprecated The type should not be used\n */\n KNOWLEDGE_BOARD = 'Knowledge Board',\n /**\n * @deprecated The type should not be used\n */\n LEARNING_JOURNEY = 'Learning Journeys',\n /**\n * @deprecated The type should not be used\n */\n CHANNEL = 'Channel',\n }\n\n export enum ECourseCategory {\n INVITE_ONLY_PROGRAM = 'Invite-Only Program',\n MODERATED_PROGRAM = 'Moderated Program',\n BLENDED_PROGRAM = 'Blended Program',\n CURATED_PROGRAM = 'Curated Program',\n COURSE = 'Course',\n MODERATED_COURSE = 'Moderated Course',\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\n MODERATED_ASSESSEMENT = 'Moderated Assessment',\n }\n\n export enum WFBlendedProgramStatus {\n INITIATE = 'INITIATE',\n SEND_FOR_MDO_APPROVAL = 'SEND_FOR_MDO_APPROVAL',\n SEND_FOR_PC_APPROVAL = 'SEND_FOR_PC_APPROVAL',\n APPROVED = 'APPROVED',\n REJECTED = 'REJECTED',\n WITHDRAWN = 'WITHDRAWN',\n REMOVED = 'REMOVED',\n WITHDRAW = 'WITHDRAW',\n }\n export enum WFBlendedProgramApprovalTypes {\n ONE_STEP_PC = 'oneStepPCApproval',\n ONE_STEP_MDO = 'oneStepMDOApproval',\n TWO_STEP_MDO_PC = 'twoStepMDOAndPCApproval',\n TWO_STEP_PC_MDO = 'twoStepPCAndMDOApproval',\n }\n\n export const WFSTATUS_MSG_MAPPING: any = {\n INITIATE: '',\n SEND_FOR_MDO_APPROVAL: 'BatchEnrollL1Msg',\n SEND_FOR_PC_APPROVAL: 'BatchEnrollL2Msg',\n APPROVED: 'BatchEnrollApprovedMsg',\n REJECTED: 'BatchEnrollRejectedMsg',\n WITHDRAWN: 'BatchEnrollWithdrawMsg',\n REMOVED: 'BatchEnrollRemoveMsg',\n EXPIRED: 'BatchListExpiredMsg',\n };\n\n export enum EResourcePrimaryCategories {\n LEARNING_RESOURCE = 'Learning Resource',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n COMP_ASSESSMENT = 'Competency Assessment',\n OFFLINE_SESSION = 'Offline Session',\n }\n\n export enum EMiscPlayerSupportedCollectionTypes {\n PLAYLIST = 'Playlist',\n }\n export const PLAYER_SUPPORTED_COLLECTION_TYPES: string[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.CURATED_PROGRAM,\n EPrimaryCategory.BLENDED_PROGRAM,\n EPrimaryCategory.STANDALONE_ASSESSMENT,\n EMiscPlayerSupportedCollectionTypes.PLAYLIST,\n ];\n export const KB_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.RESOURCE,\n ];\n export const PLAYLIST_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.RESOURCE,\n ];\n export enum EMimeTypes {\n COLLECTION = 'application/vnd.ekstep.content-collection',\n ZIP = 'application/vnd.ekstep.html-archive',\n ZIP2 = 'application/vnd.ekstep.ecml-archive',\n HTML = 'application/html',\n HTML_TEXT = 'text/html',\n ILP_FP = 'application/ilpfp',\n IAP = 'application/iap-assessment',\n M4A = 'audio/m4a',\n MP3 = 'audio/mpeg',\n MP4 = 'video/mp4',\n M3U8 = 'application/x-mpegURL',\n INTERACTION = 'video/interactive',\n PDF = 'application/pdf',\n QUIZ = 'application/quiz',\n DRAG_DROP = 'application/drag-drop',\n HTML_PICKER = 'application/htmlpicker',\n WEB_MODULE = 'application/web-module',\n WEB_MODULE_EXERCISE = 'application/web-module-exercise',\n YOUTUBE = 'video/x-youtube',\n HANDS_ON = 'application/integrated-hands-on',\n RDBMS_HANDS_ON = 'application/rdbms',\n CLASS_DIAGRAM = 'application/class-diagram',\n CHANNEL = 'application/channel',\n COLLECTION_RESOURCE = 'resource/collection',\n APPLICATION_JSON = 'application/json',\n PRACTICE_RESOURCE = 'application/vnd.sunbird.questionset',\n FINAL_ASSESSMENT = 'application/vnd.sunbird.questionset',\n OFFLINE_SESSION = 'application/offline',\n // Added on UI Only\n CERTIFICATION = 'application/certification',\n PLAYLIST = 'application/playlist',\n TEXT_WEB = 'text/x-url',\n SURVEY = 'application/survey',\n QUESTION_SET = 'application/vnd.sunbird.questionset',\n QUESTION = 'application/vnd.sunbird.question',\n UNKNOWN = 'application/unknown',\n }\n export enum EDisplayContentTypes {\n ASSESSMENT = 'ASSESSMENT',\n STANDALONE_ASSESSMENT = 'STANDALONE ASSESSMENT',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n AUDIO = 'AUDIO',\n CERTIFICATION = 'CERTIFICATION',\n CHANNEL = 'Channel',\n CLASS_DIAGRAM = 'CLASS_DIAGRAM',\n COURSE = 'COURSE',\n DEFAULT = 'DEFAULT',\n DRAG_DROP = 'DRAG_DROP',\n EXTERNAL_CERTIFICATION = 'EXTERNAL_CERTIFICATION',\n EXTERNAL_COURSE = 'EXTERNAL_COURSE',\n GOALS = 'GOALS',\n HANDS_ON = 'HANDS_ON',\n IAP = 'IAP',\n INSTRUCTOR_LED = 'INSTRUCTOR_LED',\n INTERACTIVE_VIDEO = 'INTERACTIVE_VIDEO',\n KNOWLEDGE_ARTIFACT = 'KNOWLEDGE_ARTIFACT',\n MODULE = 'MODULE',\n PDF = 'PDF',\n SURVEY = 'SURVEY',\n PLAYLIST = 'PLAYLIST',\n PROGRAM = 'PROGRAM',\n QUIZ = 'QUIZ',\n RESOURCE = 'RESOURCE',\n RDBMS_HANDS_ON = 'RDBMS_HANDS_ON',\n VIDEO = 'VIDEO',\n WEB_MODULE = 'WEB_MODULE',\n WEB_PAGE = 'WEB_PAGE',\n YOUTUBE = 'YOUTUBE',\n LINK = 'LINK',\n KNOWLEDGE_BOARD = 'Knowledge Board',\n LEARNING_JOURNEY = 'Learning Journeys',\n BLENDED_PROGRAM = 'BLENDED PROGRAM',\n CURATED_PROGRAM = 'CURATED PROGRAM',\n }\n // for UI\n export enum EFilterCategory {\n ALL = 'ALL',\n LEARN = 'LEARN',\n PRACTICE = 'PRACTICE',\n ASSESS = 'ASSESS',\n }\n\n // for UI\n export enum ETagType {\n NEWLY_ADDED = 'NEWLY ADDED',\n }\n\n export const UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS: string[] = [\n // this is comment now for enabling links in the toc page for enrolled users\n // EMimeTypes.QUIZ,\n // EMimeTypes.APPLICATION_JSON,\n // EMimeTypes.WEB_MODULE_EXERCISE,\n\n ];\n export const PUBLIC_SUPPORTED_CONTENT_TYPES: EMimeTypes[] = [\n EMimeTypes.APPLICATION_JSON,\n EMimeTypes.FINAL_ASSESSMENT,\n EMimeTypes.HTML,\n EMimeTypes.HTML_TEXT,\n EMimeTypes.ZIP,\n EMimeTypes.ZIP2,\n EMimeTypes.M4A,\n EMimeTypes.MP3,\n EMimeTypes.MP4,\n EMimeTypes.PDF,\n EMimeTypes.YOUTUBE,\n EMimeTypes.TEXT_WEB,\n EMimeTypes.SURVEY,\n ];\n}\n","import { NsContent } from '../_models/widget-content.model';\n\nexport const VIEWER_ROUTE_FROM_MIME = (mimeType: NsContent.EMimeTypes) => {\n switch (mimeType) {\n case NsContent.EMimeTypes.MP3:\n return 'audio';\n case NsContent.EMimeTypes.M4A:\n return 'audio-native';\n case NsContent.EMimeTypes.COLLECTION:\n return 'html';\n case NsContent.EMimeTypes.CHANNEL:\n // case 'application/json' as any:\n // return 'channel'\n case NsContent.EMimeTypes.CERTIFICATION:\n return 'certification';\n case NsContent.EMimeTypes.HTML_TEXT:\n case NsContent.EMimeTypes.HTML:\n case NsContent.EMimeTypes.ZIP:\n if (window.location.href.includes('mobile/html')) {\n return 'mobile/html';\n }\n return 'html';\n case NsContent.EMimeTypes.TEXT_WEB:\n return 'youtube';\n case NsContent.EMimeTypes.SURVEY:\n return 'survey';\n case NsContent.EMimeTypes.IAP:\n return 'iap';\n case NsContent.EMimeTypes.ILP_FP:\n return 'ilp-fp';\n case NsContent.EMimeTypes.PDF:\n return 'pdf';\n case NsContent.EMimeTypes.MP4:\n case NsContent.EMimeTypes.M3U8:\n return 'video';\n case NsContent.EMimeTypes.YOUTUBE:\n return 'youtube';\n // return 'html'\n case NsContent.EMimeTypes.WEB_MODULE:\n return 'web-module';\n case NsContent.EMimeTypes.WEB_MODULE_EXERCISE:\n return 'web-module';\n case NsContent.EMimeTypes.CLASS_DIAGRAM:\n return 'class-diagram';\n case NsContent.EMimeTypes.HANDS_ON:\n return 'hands-on';\n case NsContent.EMimeTypes.RDBMS_HANDS_ON:\n return 'rdbms-hands-on';\n case NsContent.EMimeTypes.HTML_PICKER:\n return 'html-picker';\n case NsContent.EMimeTypes.QUIZ:\n case NsContent.EMimeTypes.APPLICATION_JSON:\n return 'quiz';\n case NsContent.EMimeTypes.PRACTICE_RESOURCE:\n return 'practice';\n case NsContent.EMimeTypes.COLLECTION_RESOURCE:\n return 'resource-collection';\n case NsContent.EMimeTypes.OFFLINE_SESSION:\n return 'offline-session';\n default:\n return 'html';\n }\n};\n\nexport function viewerRouteGenerator(\n id: string,\n mimeType: NsContent.EMimeTypes,\n collectionId?: string,\n collectionType?: string,\n forPreview = false,\n primaryCategory?: string,\n batchId?: string,\n courseName?: string,\n): { url: string; queryParams: { [key: string]: any } } {\n let collId = collectionId;\n let collType = collectionType;\n if (collType && !NsContent.PLAYER_SUPPORTED_COLLECTION_TYPES.includes(collType)) {\n collId = undefined;\n collType = undefined;\n }\n const url = `/viewer/${VIEWER_ROUTE_FROM_MIME(mimeType)}/${id}`;\n // tslint:disable-next-line\n // console.log(url,'========>Route from MIME TYPE<==========')\n const forcreator = window.location.href.includes('editMode=true');\n let queryParams = {};\n if (primaryCategory) {\n queryParams = {\n primaryCategory,\n };\n }\n if (collectionId && collectionType) {\n queryParams = { ...queryParams, collectionId: collId, collectionType: collType };\n }\n if (batchId) {\n queryParams = { ...queryParams, batchId };\n }\n if (courseName) {\n queryParams = { ...queryParams, courseName };\n }\n if (forPreview) {\n queryParams = { ...queryParams, preview: true };\n }\n if (forcreator) {\n queryParams = { ...queryParams, editMode: true };\n }\n return {\n queryParams,\n url,\n };\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationsService } from '@sunbird-cb/utils-v2';\nimport { Observable, of, EMPTY, BehaviorSubject, Subject } from 'rxjs';\nimport { catchError, retry, map, shareReplay } from 'rxjs/operators';\nimport { NsContentStripMultiple } from '../_models/content-strip-multiple.model';\nimport { NsContent } from '../_models/widget-content.model';\nimport { NSSearch } from '../_models/widget-search.model';\n// tslint:disable\nimport * as _ from 'lodash'\nimport { viewerRouteGenerator } from './viewer-route-util'\nimport * as moment_ from 'moment';\nconst moment = moment_;\n// tslint:enable\n\n// TODO: move this in some common place\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\n\nconst API_END_POINTS = {\n CONTENT: `${PROTECTED_SLAG_V8}/content`,\n AUTHORING_CONTENT: `/api/course/v1/hierarchy`,\n CONTENT_LIKES: `${PROTECTED_SLAG_V8}/content/likeCount`,\n SET_S3_COOKIE: `${PROTECTED_SLAG_V8}/content/setCookie`,\n SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8}/content/setImageCookie`,\n FETCH_MANIFEST: `${PROTECTED_SLAG_V8}/content/getWebModuleManifest`,\n FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8}/content/getWebModuleFiles`,\n MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8}/content/multiple`,\n CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8}/content/searchV5`,\n CONTENT_SEARCH_V6: `/apis/proxies/v8/sunbirdigot/search`,\n TRENDING_CONTENT_SEARCH: `apis/proxies/v8/trending/content/search`,\n CONTENT_SEARCH_RELATED_CBP_V6: `/apis/proxies/v8/sunbirdigot/search`,\n CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8}/content/searchRegionRecommendation`,\n CONTENT_HISTORY: `${PROTECTED_SLAG_V8}/user/history`,\n CONTENT_HISTORYV2: `/apis/proxies/v8/read/content-progres`,\n COURSE_BATCH_LIST: `/apis/proxies/v8/learner/course/v1/batch/list`,\n COURSE_BATCH: `/apis/proxies/v8/course/v1/batch/read`,\n AUTO_ASSIGN_BATCH: `/apis/protected/v8/cohorts/user/autoenrollment/`,\n AUTO_ASSIGN_CURATED_BATCH: `/apis/proxies/v8/curatedprogram/v1/enrol`,\n AUTO_ASSIGN_OPEN_PROGRAM: `/apis/proxies/v8/openprogram/v1/enrol`,\n USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8}/user/history/continue`,\n CONTENT_RATING: `${PROTECTED_SLAG_V8}/user/rating`,\n COLLECTION_HIERARCHY: (type: string, id: string) =>\n `${PROTECTED_SLAG_V8}/content/collection/${type}/${id}`,\n REGISTRATION_STATUS: `${PROTECTED_SLAG_V8}/admin/userRegistration/checkUserRegistrationContent`,\n MARK_AS_COMPLETE_META: (contentId: string) => `${PROTECTED_SLAG_V8}/user/progress/${contentId}`,\n ENROLL_BATCH: `/apis/proxies/v8/learner/course/v1/enrol`,\n ENROLL_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/enrol`,\n WITHDRAW_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/unenrol`,\n BLENDED_USER_WF: `/apis/proxies/v8/workflow/blendedprogram/user/search`,\n BLENDED_USER_COUNT: `apis/proxies/v8/workflow/blendedprogram/enrol/status/count`,\n CERT_ADD_TEMPLATE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/template/add`,\n CERT_ISSUE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/issue`,\n CERT_DOWNLOAD: (certId: any) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,\n READ_KARMAPOINTS: `/apis/proxies/v8/karmapoints/read`,\n CONTENT_READ: (contentId: any) => `/apis/proxies/v8/action/content/v3/read/${contentId}`,\n READ_COURSE_KARMAPOINTS: '/apis/proxies/v8/karmapoints/user/course/read',\n CLAIM_KARMAPOINTS: '/apis/proxies/v8/claimkarmapoints',\n USER_KARMA_POINTS: '/apis/proxies/v8/user/totalkarmapoints',\n AGGREGATION_SEARCH: '/apis/proxies/v8/content/aggregation/search',\n FEATURE_SEARCH: '/apis/proxies/v8/featured/content/search',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetContentService {\n constructor(\n private http: HttpClient,\n private configSvc: ConfigurationsService,\n ) {\n }\n\n tocConfigData: any = new BehaviorSubject<any>({});\n tocConfigData$ = this.tocConfigData.asObservable();\n\n private telemetryData: any = new Subject<any>()\n public telemetryData$ = this.telemetryData.asObservable()\n currentMetaData!: NsContent.IContent;\n currentContentReadMetaData!: NsContent.IContent;\n currentBatchEnrollmentList!: NsContent.ICourse[];\n programChildCourseResumeData = new BehaviorSubject<any>({});\n programChildCourseResumeData$ = this.programChildCourseResumeData.asObservable();\n\n changeTelemetryData(message: string) {\n this.telemetryData.next(message);\n }\n isResource(primaryCategory: string) {\n if (primaryCategory) {\n const isResource = (primaryCategory === NsContent.EResourcePrimaryCategories.LEARNING_RESOURCE) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.PRACTICE_RESOURCE) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.FINAL_ASSESSMENT) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.COMP_ASSESSMENT) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.OFFLINE_SESSION);\n return isResource;\n }\n return false;\n }\n\n fetchMarkAsCompleteMeta(identifier: string): Promise<any> {\n // tslint:disable-next-line\n const url = API_END_POINTS.MARK_AS_COMPLETE_META(identifier)\n // return this.http.get(url).toPromise()\n if (url) { }\n return of().toPromise();\n }\n\n updateTocConfig(data: any) {\n this.tocConfigData.next(data);\n }\n\n fetchContent(\n contentId: string,\n hierarchyType: 'all' | 'minimal' | 'detail' = 'detail',\n _additionalFields: string[] = [],\n primaryCategory?: string | null,\n ): Observable<NsContent.IContent> {\n // const url = `${API_END_POINTS.CONTENT}/${contentId}?hierarchyType=${hierarchyType}`\n let url = '';\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\n if (primaryCategory && this.isResource(primaryCategory)) {\n if (!forPreview) {\n url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;\n } else {\n url = `/api/content/v1/read/${contentId}`;\n }\n } else {\n if (!forPreview) {\n url = `/apis/proxies/v8/action/content/v3/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\n } else {\n const forcreator = window.location.href.includes('editMode=true');\n if (forcreator) {\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\n } else {\n url = `/api/course/v1/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\n }\n }\n }\n // return this.http\n // .post<NsContent.IContent>(url, { additionalFields })\n // .pipe(retry(1))\n return this.http\n .get<NsContent.IContent>(url)\n .pipe(shareReplay(1));\n // if (apiData && apiData.result) {\n // return apiData.result.content\n // }\n }\n fetchAuthoringContent(contentId: string): Observable<NsContent.IContent> {\n const forcreator = window.location.href.includes('editMode=true');\n let url = '';\n if (forcreator) {\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\n } else {\n url = `${API_END_POINTS.AUTHORING_CONTENT}/${contentId}?hierarchyType=detail`;\n }\n return this.http.get<NsContent.IContent>(url).pipe(shareReplay(1), r => r);\n }\n fetchMultipleContent(ids: string[]): Observable<NsContent.IContent[]> {\n return this.http.get<NsContent.IContent[]>(\n `${API_END_POINTS.MULTIPLE_CONTENT}/${ids.join(',')}`,\n );\n }\n fetchCollectionHierarchy(type: string, id: string, pageNumber: number = 0, pageSize: number = 1) {\n return this.http.get<NsContent.ICollectionHierarchyResponse>(\n `${API_END_POINTS.COLLECTION_HIERARCHY(\n type,\n id,\n )}?pageNumber=${pageNumber}&pageSize=${pageSize}`,\n );\n }\n\n fetchBlendedCourse() {\n\n }\n\n fetchCourseBatches(req: any): Observable<NsContent.IBatchListResponse> {\n return this.http\n .post<NsContent.IBatchListResponse>(API_END_POINTS.COURSE_BATCH_LIST, req)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n // fetch individual batch\n fetchCourseBatch(batchId: string): Observable<NsContent.IContinueLearningData> {\n return this.http.get<NsContent.IContinueLearningData>(\n `${API_END_POINTS.COURSE_BATCH}/${batchId}`,\n );\n }\n\n autoAssignBatchApi(identifier: any): Observable<NsContent.IBatchListResponse> {\n return this.http.get<NsContent.IBatchListResponse>(`${API_END_POINTS.AUTO_ASSIGN_BATCH}${identifier}`)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n autoAssignCuratedBatchApi(request: any, programType: any): Observable<NsContent.IBatchListResponse> {\n const url = programType === NsContent.ECourseCategory.MODERATED_PROGRAM ?\n API_END_POINTS.AUTO_ASSIGN_OPEN_PROGRAM : API_END_POINTS.AUTO_ASSIGN_CURATED_BATCH;\n return this.http.post<NsContent.IBatchListResponse>(`${url}`, request)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n enrollUserToBatch(req: any) {\n return this.http\n .post(API_END_POINTS.ENROLL_BATCH, req)\n .toPromise();\n }\n\n enrollAndUnenrollUserToBatchWF(req: any, type: any) {\n const url: any = type === 'WITHDRAW' ? API_END_POINTS.WITHDRAW_BATCH_WF : API_END_POINTS.ENROLL_BATCH_WF;\n return this.http\n .post(url, req)\n .toPromise();\n }\n\n fetchBlendedUserWF(req: any) {\n return this.http\n .post(API_END_POINTS.BLENDED_USER_WF, req)\n .toPromise();\n }\n\n fetchBlendedUserCOUNT(req: any) {\n return this.http\n .post(API_END_POINTS.BLENDED_USER_COUNT, req)\n .toPromise();\n }\n\n fetchContentLikes(contentIds: { content_id: string[] }) {\n return this.http\n .post<{ [identifier: string]: number }>(API_END_POINTS.CONTENT_LIKES, contentIds)\n .toPromise();\n }\n fetchContentRatings(contentIds: { contentIds: string[] }) {\n if (contentIds) { }\n // return this.http\n // .post(`${API_END_POINTS.CONTENT_RATING}/rating`, contentIds)\n // .toPromise()\n return of().toPromise();\n }\n\n fetchContentHistory(contentId: string): Observable<NsContent.IContinueLearningData> {\n return this.http.get<NsContent.IContinueLearningData>(\n `${API_END_POINTS.CONTENT_HISTORY}/${contentId}`,\n );\n }\n\n fetchContentHistoryV2(req: NsContent.IContinueLearningDataReq): Observable<NsContent.IContinueLearningData> {\n req.request.fields = ['progressdetails'];\n const data = this.http.post<NsContent.IContinueLearningData>(\n `${API_END_POINTS.CONTENT_HISTORYV2}/${req.request.courseId}`, req\n );\n data.subscribe((subscribeData: any) => {\n this.programChildCourseResumeData.next({ resumeData: subscribeData.result.contentList, courseId: req.request.courseId });\n });\n return data;\n }\n\n async continueLearning(id: string, collectionId?: string, collectionType?: string): Promise<any> {\n return new Promise(async resolve => {\n if (collectionType &&\n collectionType.toLowerCase() === 'playlist') {\n const reqBody = {\n contextPathId: collectionId ? collectionId : id,\n resourceId: id,\n data: JSON.stringify({\n timestamp: Date.now(),\n contextFullPath: [collectionId, id],\n }),\n dateAccessed: Date.now(),\n contextType: 'playlist',\n };\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\n resolve(true);\n }\n );\n } else {\n const reqBody = {\n contextPathId: collectionId ? collectionId : id,\n resourceId: id,\n data: JSON.stringify({ timestamp: Date.now() }),\n dateAccessed: Date.now(),\n };\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\n resolve(true);\n });\n }\n });\n }\n saveContinueLearning(content: NsContent.IViewerContinueLearningRequest): Observable<any> {\n // const url = API_END_POINTS.USER_CONTINUE_LEARNING\n // return this.http.post<any>(url, content)\n if (content) {\n\n }\n return of() as any;\n }\n\n setS3Cookie(\n _contentId: string,\n // _path: string,\n ): Observable<any> {\n // return this.http\n // .post(API_END_POINTS.SET_S3_COOKIE, { contentId })\n // .pipe(catchError(_err => of(true)))\n\n return EMPTY;\n }\n\n setS3ImageCookie(): Observable<any> {\n return this.http.post(API_END_POINTS.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)));\n }\n\n fetchManifest(url: string): Observable<any> {\n return this.http.post(API_END_POINTS.FETCH_MANIFEST, { url });\n }\n fetchWebModuleContent(url: string): Observable<any> {\n return this.http.get(`${API_END_POINTS.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`);\n }\n search(req: NSSearch.ISearchRequest): Observable<NSSearch.ISearchApiResult> {\n req.query = req.query || '';\n return this.http.post<NSSearch.ISearchApiResult>(API_END_POINTS.CONTENT_SEARCH_V5, {\n request: req,\n });\n }\n searchRegionRecommendation(\n req: NSSearch.ISearchOrgRegionRecommendationRequest,\n ): Observable<NsContentStripMultiple.IContentStripResponseApi> {\n req.query = req.query || '';\n req.preLabelValue =\n (req.preLabelValue || '') +\n ((this.configSvc.userProfile && this.configSvc.userProfile.country) || '');\n req.filters = {\n ...req.filters,\n labels: [req.preLabelValue || ''],\n };\n return this.http.post<NsContentStripMultiple.IContentStripResponseApi>(\n API_END_POINTS.CONTENT_SEARCH_REGION_RECOMMENDATION,\n { request: req },\n );\n }\n searchV6(req: NSSearch.ISearchV6Request): Observable<NSSearch.ISearchV6ApiResultV2> {\n const apiPath = _.get(req, 'api.path');\n req.query = req.query || '';\n if (apiPath) {\n return this.http.get<NSSearch.ISearchV6ApiResultV2>(apiPath);\n }\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_V6, req);\n }\n\n searchRelatedCBPV6(req: NSSearch.ISearchV6RequestV2): Observable<NSSearch.ISearchV6ApiResultV2> {\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_RELATED_CBP_V6, req);\n }\n\n fetchContentRating(contentId: string): Observable<{ rating: number }> {\n return this.http.get<{ rating: number }>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\n }\n deleteContentRating(contentId: string): Observable<any> {\n return this.http.delete(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\n }\n addContentRating(contentId: string, data: { rating: number }): Observable<any> {\n return this.http.post<any>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`, data);\n }\n\n getFirstChildInHierarchy(content: NsContent.IContent): NsContent.IContent {\n if (!(content.children || []).length) {\n return content;\n }\n if (\n (content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM &&\n !(content.artifactUrl && content.artifactUrl.length)) ||\n content.primaryCategory === NsContent.EPrimaryCategory.MANDATORY_COURSE_GOAL ||\n (content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM &&\n !(content.artifactUrl && content.artifactUrl.length)) ||\n (content.primaryCategory === NsContent.EPrimaryCategory.MODULE &&\n !(content.artifactUrl && content.artifactUrl.length))\n ) {\n const child = content.children[0];\n return this.getFirstChildInHierarchy(child);\n }\n if (\n content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE ||\n content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT ||\n content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM ||\n content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE ||\n content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT ||\n content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT ||\n content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\n content.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION\n ) {\n return content;\n }\n const firstChild = content.children[0];\n const resultContent = this.getFirstChildInHierarchy(firstChild);\n return resultContent;\n }\n\n getRegistrationStatus(source: string): Promise<{ hasAccess: boolean; registrationUrl?: string }> {\n return this.http.get<any>(`${API_END_POINTS.REGISTRATION_STATUS}/${source}`).toPromise();\n }\n\n fetchConfig(url: string) {\n return this.http.get<any>(url);\n }\n\n addCertTemplate(body: any) {\n return this.http.patch<any>(`${API_END_POINTS.CERT_ADD_TEMPLATE}`, body);\n }\n\n issueCert(body: any) {\n return this.http.post<any>(`${API_END_POINTS.CERT_ISSUE}`, body);\n }\n downloadCert(certId: any) {\n return this.http.get<any>(`${API_END_POINTS.CERT_DOWNLOAD(certId)}`);\n }\n\n trendingContentSearch(req: any): Observable<any> {\n req.query = req.query || '';\n return this.http.post<any>(API_END_POINTS.TRENDING_CONTENT_SEARCH, req);\n }\n\n getKarmaPoitns(limit: number, offset: any) {\n return this.http.post(API_END_POINTS.READ_KARMAPOINTS, { limit, offset }).pipe(catchError(_err => of(true)));\n }\n fetchProgramContent(contentId: string[]): Observable<NsContent.IContent[]> {\n let url = '';\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\n if (!forPreview) {\n return this.http.get<NsContent.IContent[]>(\n API_END_POINTS.CONTENT_READ(contentId),\n );\n }\n url = `/api/content/v1/read/${contentId}`;\n return this.http.get<NsContent.IContent[]>(url);\n // return this.http.get<NsContent.IContent[]>(API_END_POINTS.CONTENT_READ(contentId))\n }\n\n getCourseKarmaPoints(request: any) {\n return this.http.post<any>(API_END_POINTS.READ_COURSE_KARMAPOINTS, request);\n }\n\n claimKarmapoints(request: any) {\n return this.http.post<any>(API_END_POINTS.CLAIM_KARMAPOINTS, request);\n }\n\n userKarmaPoints() {\n return this.http.post<any>(API_END_POINTS.USER_KARMA_POINTS, {});\n }\n\n getEnrolledData(doId: string) {\n const enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}');\n const enrolledCourseData = enrollmentMapData[doId];\n return enrolledCourseData;\n }\n\n async getResourseLink(content: any) {\n const enrolledCourseData: any = this.getEnrolledData(content.identifier);\n if (enrolledCourseData) {\n if (enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.BLENDED_PROGRAM ||\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.INVITE_ONLY_PROGRAM ||\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.MODERATED_PROGRAM ||\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM) {\n if (!this.isBatchInProgress(enrolledCourseData.batch)) {\n return this.gotoTocPage(content);\n }\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\n return data;\n } {\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\n return data;\n }\n\n }\n return this.gotoTocPage(content);\n\n }\n async checkForDataToFormUrl(content: any, enrollData: any) {\n let urlData: any;\n if (enrollData.completionPercentage === 100) {\n return this.gotoTocPage(enrollData);\n }\n if (enrollData.lrcProgressDetails && enrollData.lrcProgressDetails.mimeType) {\n const modifyEnrollData = {\n ...enrollData,\n identifier: enrollData.collectionId,\n primaryCategory: enrollData.content.primaryCategory,\n name: enrollData.content.name,\n };\n if (modifyEnrollData.lastReadContentId) {\n return this.getResourseDataWithData(modifyEnrollData,\n enrollData.lastReadContentId, enrollData.lrcProgressDetails.mimeType);\n }\n if (modifyEnrollData.firstChildId) {\n return this.getResourseDataWithData(modifyEnrollData,\n enrollData.firstChildId,\n enrollData.lrcProgressDetails.mimeType);\n }\n }\n if (enrollData.firstChildId || enrollData.lastReadContentId) {\n const doId = enrollData.firstChildId || enrollData.lastReadContentId;\n const responseData = await this.fetchProgramContent(doId).toPromise().then(async (res: any) => {\n if (res && res.result && res.result.content) {\n const contentData: any = res.result.content;\n const modifyEnrollData = {\n ...enrollData,\n identifier: enrollData.collectionId,\n primaryCategory: enrollData.content.primaryCategory,\n name: enrollData.content.name,\n };\n urlData = this.getResourseDataWithData(modifyEnrollData, contentData.identifier, contentData.mimeType);\n if (urlData) {\n return urlData;\n }\n }\n });\n return responseData ? responseData : this.gotoTocPage(content);\n }\n return this.gotoTocPage(content);\n\n }\n\n getResourseDataWithData(content: any, resourseId: any, mimeType: any) {\n if (content) {\n const url = viewerRouteGenerator(\n resourseId,\n mimeType,\n content.identifier,\n 'Course',\n false,\n 'Learning Resource',\n content.batchId,\n content.name,\n );\n return url;\n }\n return this.gotoTocPage(content);\n }\n gotoTocPage(content: any) {\n const urlData: any = {\n url: `/app/toc/${content.identifier ? content.identifier : content.collectionId}/overview`,\n queryParams: { batchId: content.batchId },\n };\n if (content.endDate) {\n urlData.queryParams = { ...urlData.queryParams, planType: 'cbPlan', endDate: content.endDate };\n }\n return urlData;\n }\n isBatchInProgress(batchData: any) {\n // if (this.content && this.content['batches']) {\n // const batches = this.content['batches'] as NsContent.IBatch\n if (batchData && batchData.endDate) {\n const now = moment().format('YYYY-MM-DD');\n const startDate = moment(batchData.startDate).format('YYYY-MM-DD');\n const endDate = batchData.endDate ? moment(batchData.endDate).format('YYYY-MM-DD') : now;\n return (\n // batch.status &&\n moment(startDate).isSameOrBefore(now)\n && moment(endDate).isSameOrAfter(now)\n );\n } return true;\n }\n postApiMethod(apiUrl: any, req: any): Observable<NsContent.IContent> {\n return this.http.post<NsContent.IContent>(apiUrl, req);\n }\n getApiMethod(apiUrl: any): Observable<NsContent.IContent> {\n // req.query = req.query || '';\n return this.http.get<NsContent.IContent>(apiUrl);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\nimport { IPortalUrls, IUserPreference, NsAppsConfig, NsInstanceConfig, NsPage, NsUser } from '@sunbird-cb/utils-v2';\nimport { NSProfileDataV3 } from '../_models/profile-v3.models';\n// const instanceConfigPath: string | null = window.location.host\n// const locationHost: string | null = window.location.host\n\n// if (!environment.production && Boolean(environment.sitePath)) {\n// locationHost = environment.sitePath\n// instanceConfigPath = environment.sitePath\n// }\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigurationsService {\n // update as the single source of truth\n constructor() {\n // @Inject('env') env: any\n // if (!env.production && Boolean(env.sitePath)) {\n // locationHost = env.sitePath\n // instanceConfigPath = env.sitePath\n // }\n }\n appSetup = true;\n // The url the user tried to access while landing in the app before accepting tnc\n userUrl = '';\n baseUrl = `assets/configurations`;\n sitePath = `assets/configurations`;\n hostPath = (window.location.host).replace(':', '_');\n\n userRoles: Set<string> | null = null;\n userGroups: Set<string> | null = null;\n restrictedFeatures: Set<string> | null = null;\n restrictedWidgets: Set<string> | null = null;\n instanceConfig: NsInstanceConfig.IConfig | null = null;\n appsConfig: NsAppsConfig.IAppsConfig | null = null;\n rootOrg: string | null = null;\n courseContentPath?: string;\n org: string[] | null = null;\n activeOrg: string | null = '';\n isProduction = false;\n hasAcceptedTnc = false;\n profileDetailsStatus = false;\n isActive = true;\n userPreference: IUserPreference | null = null;\n userProfile: NsUser.IUserProfile | null = null;\n userProfileV2: NsUser.IUserProfile | null = null;\n nodebbUserProfile: NsUser.INodebbUserProfile | null = null;\n // created to store complete user details sent by pid\n unMappedUser: any;\n isAuthenticated = false;\n isNewUser = false;\n portalUrls: IPortalUrls | undefined;\n positions: any;\n overrideThemeChanges: any;\n profileTimelyNudges: any;\n\n // pinnedApps\n pinnedApps = new BehaviorSubject<Set<string>>(new Set());\n\n // Notifier\n prefChangeNotifier = new ReplaySubject<Partial<IUserPreference>>(1);\n tourGuideNotifier = new ReplaySubject<boolean>();\n authChangeNotifier = new ReplaySubject<boolean>(1);\n\n private updateProfile = new BehaviorSubject(false);\n updateProfileObservable = this.updateProfile.asObservable();\n\n updateTourGuide = new BehaviorSubject(true);\n updateTourGuideObservable = this.updateTourGuide.asObservable();\n\n // platform rating\n updatePlatformRating = new BehaviorSubject({ bottom: '120px' });\n updatePlatformRatingObservable$ = this.updatePlatformRating.asObservable();\n\n languageTranslationFlag = new Subject();\n\n // Preference Related Values\n activeThemeObject: NsInstanceConfig.ITheme | null = null;\n activeFontObject: NsInstanceConfig.IFontSize | null = null;\n isDarkMode = false;\n isIntranetAllowed = false;\n isRTL = false;\n activeLocale: NsInstanceConfig.ILocalsConfig | null = null;\n activeLocaleGroup = '';\n completedActivity: string[] | null = null;\n completedTour = false;\n profileSettings = ['profilePicture', 'learningTime', 'learningPoints'];\n\n primaryNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n };\n pageNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n };\n primaryNavBarConfig: NsInstanceConfig.IPrimaryNavbarConfig | null = null;\n /* for temp Fix */\n // setBaseUrl = (sitePath: string) => `assets/configurations/${(sitePath).replace(':', '_')}`\n // setSitePath = (sitePath: string) => `assets/configurations/${(sitePath).replace(\n // ':',\n // '_',\n // )}`\n // setHostPath = (sitePath: string) => (sitePath).replace(':', '_')\n welcomeTabs: NSProfileDataV3.IProfileTab | null = null;\n\n // variable setting for csJwtToken\n cstoken = '';\n\n changeNavBarFullView = new Subject();\n openExploreMenuForMWeb = new Subject();\n updateGlobalProfile(state: boolean) {\n this.updateProfile.next(state);\n }\n updateTourGuideMethod(state: boolean) {\n this.updateTourGuide.next(state);\n }\n\n updatePlatformRatingMethod(state: any) {\n this.updatePlatformRating.next(state);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigurationsService } from './configurations.service';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class MultilingualTranslationsService {\n selectedLang = '';\n // website lang change\n languageSelected = new BehaviorSubject(true);\n languageSelectedObservable = this.languageSelected.asObservable();\n editProfileDetails = '/apis/proxies/v8/user/v1/extPatch';\n\n constructor(private translate: TranslateService, private http: HttpClient, private configSvc: ConfigurationsService) {\n // this.getLanguage()\n }\n\n getLanguage() {\n if (this.configSvc.unMappedUser) {\n if (this.configSvc.unMappedUser.profileDetails &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang) {\n const lang = this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang;\n this.translate.use(lang);\n localStorage.setItem('websiteLanguage', lang);\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n } else {\n this.translate.setDefaultLang('en');\n localStorage.setItem('websiteLanguage', 'en');\n }\n }\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n }\n }\n\n translateLabelWithoutspace(label: string, type: any, subtype: any) {\n let nlabel = label;\n nlabel = nlabel && nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n translateLabel(label: string, type: any, subtype: any) {\n if(label) {\n let nlabel = label;\n \n \n nlabel = nlabel && nlabel.toLowerCase() ;\n const sl = nlabel.split(' ');\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1);\n }\n });\n nlabel = sl.join('');\n nlabel = nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n } \n return label\n }\n\n translateActualLabel(label: string, type: any, subtype: any) {\n let nlabel = label;\n const sl = nlabel.split(' ');\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1);\n }\n });\n nlabel = sl.join('');\n nlabel = nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n editProfileDetailsAPI(data: any) {\n return this.http.post<any>(this.editProfileDetails, data);\n }\n\n updatelanguageSelected(state: any, lang: any, userid: any) {\n this.languageSelected.next(state);\n this.translate.use(lang);\n this.selectedLang = lang;\n\n if (userid) {\n const reqUpdates = {\n request: {\n userId: userid,\n profileDetails: {\n additionalProperties: {\n webPortalLang: this.selectedLang,\n },\n },\n },\n };\n this.editProfileDetailsAPI(reqUpdates).subscribe();\n }\n }\n}\n","import { NsContent } from './widget-content.model';\n\nexport namespace NsCardContent {\n export interface ICard {\n content: NsContent.IContent;\n cardSubType: TCardSubType;\n context: { pageSection: string; position?: number };\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n likes?: number;\n contentTags?: IContentTags;\n stateData: any;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField?: string;\n }\n\n export interface ICompetency extends ICard {\n competencyArea: '';\n competencyObject: {};\n }\n\n export type TCardSubType =\n | 'standard'\n | 'minimal'\n | 'space-saving'\n | 'card-user-details'\n | 'basic-info'\n | 'basic-details'\n | 'card-description-back'\n | 'network-card';\n\n export enum EContentStatus {\n LIVE = 'Live',\n EXPIRED = 'Expired',\n DELETED = 'Deleted',\n MARK_FOR_DELETION = 'MarkedForDeletion',\n }\n\n export enum ACBPConst {\n UPCOMING = 'upcoming',\n ALL = 'All',\n OVERDUE = 'overdue',\n SUCCESS = 'success',\n }\n\n export enum IGOTConst {\n COMPETENCIES = 'competencies_v5',\n RETIRED = 'Retired',\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { IUserGroupDetails } from '../_models/widget-user.model';\nimport { NsContent } from '../_models/widget-content.model';\nimport 'rxjs/add/observable/of'\nimport * as dayjs_ from 'dayjs';\nconst dayjs = dayjs_\n// import { environment } from 'src/environments/environment'\nimport { NsCardContent } from '../_models/card-content-v2.model';\nimport * as lodash from 'lodash';\n\n\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\nconst API_END_POINTS = {\n FETCH_USER_GROUPS: (userId: string) =>\n `${PROTECTED_SLAG_V8}/user/group/fetchUserGroup?userId=${userId}`,\n FETCH_CPB_PLANS: `/apis/proxies/v8/user/v1/cbplan`,\n FETCH_USER_ENROLLMENT_LIST: (userId: string | undefined) =>\n // tslint:disable-next-line: max-line-length\n `/apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=orgName,email&licenseDetails=name,description,url&fields=contentType,primaryCategory,courseCategory,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,posterImage,duration,creatorLogo,license,version,versionKey,avgRating,additionalTags,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=name,endDate,startDate,status,enrollmentType,createdBy,certificates,batchAttributes`,\n FETCH_USER_ENROLLMENT_LIST_PROFILE: (userId: string | undefined) =>\n // tslint:disable-next-line: max-line-length\n `/apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=orgName,email&licenseDetails=name,description,url&fields=contentType,primaryCategory,courseCategory,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,posterImage,duration,creatorLogo,license,version,versionKey,avgRating,additionalTags,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=name,endDate,startDate,status,enrollmentType,createdBy,certificates,batchAttributes&retiredCoursesEnabled=true`,\n // tslint:disable-next-line: max-line-length\n FETCH_USER_ENROLLMENT_LIST_V2: (userId: string | undefined, orgdetails: string, licenseDetails: string, fields: string, batchDetails: string) =>\n // tslint:disable-next-line: max-line-length\n `apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=${orgdetails}&licenseDetails=${licenseDetails}&fields=${fields},courseCategory,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=${batchDetails}`,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetUserService {\n environment: any;\n constructor(\n @Inject('environment') environment: any,\n private http: HttpClient) {\n this.environment = environment;\n }\n\n handleError(error: ErrorEvent) {\n let errorMessage = ''\n if (error.error instanceof ErrorEvent) {\n errorMessage = `Error: ${error.error.message}`\n }\n return throwError(errorMessage)\n }\n\n fetchUserGroupDetails(userId: string): Observable<IUserGroupDetails[]> {\n return this.http\n .get<IUserGroupDetails[]>(API_END_POINTS.FETCH_USER_GROUPS(userId))\n .pipe(catchError(this.handleError))\n }\n // tslint:disable-next-line: max-line-length\n fetchUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\n let path = ''\n if (queryParams) {\n // tslint:disable-next-line: max-line-length\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails)\n } else {\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST(userId)\n }\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n })\n if (this.checkStorageData('enrollmentService', 'enrollmentData')) {\n const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\n (data: any) => {\n\n const coursesData: any = []\n if (data && data.result && data.result.courses) {\n data.result.courses.forEach((content: any) => {\n if (content.contentStatus) {\n delete content.contentStatus\n }\n coursesData.push(content)\n })\n this.storeUserEnrollmentInfo(data.result.userCourseEnrolmentInfo,\n data.result.courses.length)\n data.result.courses = coursesData\n if (data.result.courses.length < 200) {\n localStorage.removeItem('enrollmentData')\n this.setTime('enrollmentService')\n localStorage.setItem('enrollmentData', JSON.stringify(data.result))\n this.mapEnrollmentData(data.result)\n return data.result\n }\n }\n this.mapEnrollmentData(data.result)\n return data.result\n }\n )\n )\n return result\n }\n return this.getData('enrollmentData')\n\n }\n\n // tslint:disable-next-line: max-line-length\n fetchProfileUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\n let path = ''\n if (queryParams) {\n // tslint:disable-next-line: max-line-length\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails)\n } else {\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_PROFILE(userId)\n }\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n })\n return this.http\n .get(path, { headers })\n .pipe(\n catchError(this.handleError),\n map(\n (data: any) => data.result\n )\n )\n // if (this.checkStorageData('enrollmentService')) {\n // const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\n // (data: any) => {\n // localStorage.setItem('enrollmentData', JSON.stringify(data.result))\n // this.mapEnrollmentData(data.result)\n // return data.result\n // }\n // )\n // )\n // this.setTime('enrollmentService')\n // return result\n // }\n // return this.getData('enrollmentData')\n }\n\n checkStorageData(key: any, dataKey: any) {\n const checkTime = localStorage.getItem('timeCheck')\n if (checkTime) {\n const parsedData = JSON.parse(checkTime)\n if (parsedData[key]) {\n const date = dayjs()\n const diffMin = date.diff(parsedData[key], 'minute')\n const timeCheck = this.environment.apiCache || 0\n if (diffMin >= timeCheck) {\n return true\n }\n return localStorage.getItem(dataKey) ? false : true\n }\n return true\n }\n return true\n }\n\n getData(key: any): Observable<any> {\n return Observable.of(JSON.parse(localStorage.getItem(key) || '{}'))\n }\n getSavedData(key: any): Observable<any> {\n return JSON.parse(localStorage.getItem(key) || '')\n }\n\n setTime(key: any) {\n const checkTime = localStorage.getItem('timeCheck')\n if (checkTime) {\n const parsedData = JSON.parse(checkTime)\n parsedData[key] = new Date().getTime()\n localStorage.setItem('timeCheck', JSON.stringify(parsedData))\n } else {\n const data: any = {}\n data[key] = new Date().getTime()\n localStorage.setItem('timeCheck', JSON.stringify(data))\n }\n }\n\n resetTime(key: any) {\n const checkTime = localStorage.getItem('timeCheck')\n if (checkTime) {\n const parsedData = JSON.parse(checkTime)\n if (parsedData[key]) {\n delete parsedData[key]\n localStorage.setItem('timeCheck', JSON.stringify(parsedData))\n }\n }\n }\n\n fetchCbpPlanList() {\n\n // let data = JSON.parse(localStorage.getItem('cbpData')|| '')\n // if(!data) {\n // this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\n // (data: any) => {\n // const courseData = this.mapData(data.result)\n // return courseData\n // }\n // )\n // )\n // } else {\n // return this.getData('cbpData')\n\n // }\n if (this.checkStorageData('cbpService', 'cbpData')) {\n const result: any = this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\n async (data: any) => {\n return await this.mapData(data.result)\n }\n )\n )\n this.setTime('cbpService')\n return result\n }\n return this.getData('cbpData')\n }\n\n async mapData(data: any) {\n const contentNew: any = []\n const todayDate = dayjs().format('YYYY-MM-DD')\n\n const enrollList: any = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\n\n if (data && data.count) {\n data.content.forEach((c: any) => {\n c.contentList.forEach((childData: any) => {\n const childEnrollData = enrollList[childData.identifier]\n const endDate = dayjs(c.endDate).format('YYYY-MM-DD')\n const daysCount = dayjs(endDate).diff(todayDate, 'day')\n childData['planDuration'] = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29\n ? NsCardContent.ACBPConst.SUCCESS : NsCardContent.ACBPConst.UPCOMING\n childData['endDate'] = c.endDate\n childData['parentId'] = c.id\n childData['planType'] = 'cbPlan'\n if (childData.status !== NsCardContent.IGOTConst.RETIRED) {\n contentNew.push(childData)\n } else {\n if (childEnrollData && childEnrollData.status === 2) {\n contentNew.push(childData)\n }\n }\n\n const competencyArea: any = []\n const competencyTheme: any = []\n const competencyThemeType: any = []\n const competencySubTheme: any = []\n const competencyAreaId: any = []\n const competencyThemeId: any = []\n const competencySubThemeId: any = []\n childData['contentStatus'] = 0\n if (childEnrollData) {\n childData['contentStatus'] = childEnrollData.status\n }\n if (childData.competencies_v5) {\n childData.competencies_v5.forEach((element: any) => {\n if (!competencyArea.includes(element.competencyArea)) {\n competencyArea.push(element.competencyArea)\n competencyAreaId.push(element.competencyAreaId)\n }\n if (!competencyTheme.includes(element.competencyTheme)) {\n competencyTheme.push(element.competencyTheme)\n competencyThemeId.push(element.competencyThemeId)\n }\n if (!competencyThemeType.includes(element.competencyThemeType)) {\n competencyThemeType.push(element.competencyThemeType)\n }\n if (!competencySubTheme.includes(element.competencySubTheme)) {\n competencySubTheme.push(element.competencySubTheme)\n competencySubThemeId.push(element.competencySubThemeId)\n }\n })\n }\n\n childData['competencyArea'] = competencyArea\n childData['competencyTheme'] = competencyTheme\n childData['competencyThemeType'] = competencyThemeType\n childData['competencySubTheme'] = competencySubTheme\n childData['competencyAreaId'] = competencyAreaId\n childData['competencyThemeId'] = competencyThemeId\n childData['competencySubThemeId'] = competencySubThemeId\n })\n })\n if (contentNew.length > 1) {\n const sortedData: any = contentNew.sort((a: any, b: any) => {\n const firstDate: any = new Date(a.endDate)\n const secondDate: any = new Date(b.endDate)\n\n return secondDate > firstDate ? 1 : -1\n })\n const uniqueUsersByID = lodash.uniqBy(sortedData, 'identifier')\n const sortedByEndDate = lodash.orderBy(uniqueUsersByID, ['endDate'], ['asc'])\n const sortedByStatus = lodash.orderBy(sortedByEndDate, ['contentStatus'], ['asc'])\n localStorage.setItem('cbpData', JSON.stringify(sortedByStatus))\n return sortedByStatus\n }\n localStorage.setItem('cbpData', JSON.stringify(contentNew))\n return contentNew\n }\n localStorage.setItem('cbpData', JSON.stringify([]))\n return []\n }\n\n mapEnrollmentData(courseData: any) {\n const enrollData: any = {}\n if (courseData && courseData.courses.length) {\n courseData.courses.forEach((data: any) => {\n enrollData[data.collectionId] = data\n })\n }\n localStorage.removeItem('enrollmentMapData')\n localStorage.setItem('enrollmentMapData', JSON.stringify(enrollData))\n }\n storeUserEnrollmentInfo(enrollmentData: any, enrolledCourseCount: number) {\n const userData = {\n enrolledCourseCount,\n userCourseEnrolmentInfo: enrollmentData,\n }\n localStorage.removeItem('userEnrollmentCount')\n localStorage.setItem('userEnrollmentCount', JSON.stringify(userData))\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsContentStripWithTabs } from './content-strip-with-tabs-lib.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { NsContent } from '../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n WsEvents,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserService } from '../../_services/widget-user.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { NsCardContent } from '../../_models/card-content-v2.model';\nimport { ITodayEvents } from '../../_models/event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\n\ninterface IStripUnitContentData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabsType?: string;\n tabs?: NsContentStripWithTabs.IContentStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsContentStripWithTabs.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n request?: any\n\n}\n\n@Component({\n selector: 'sb-uic-content-strip-with-tabs',\n templateUrl: './content-strip-with-tabs-lib.component.html',\n styleUrls: ['./content-strip-with-tabs-lib.component.scss'],\n})\nexport class ContentStripWithTabsLibComponent extends WidgetBaseComponent\n implements\n OnInit,\n OnDestroy,\n NsWidgetResolver.IWidgetData<NsContentStripWithTabs.IContentStripMultiple> {\n @Input() widgetData!: NsContentStripWithTabs.IContentStripMultiple;\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() viewAllResponse = new EventEmitter<any>()\n @Output() telemtryResponse = new EventEmitter<any>()\n @Input() providerId: any = ''\n @Input() emitViewAll: boolean = false\n @Input() channnelName: any = ''\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n enrollmentMapData: any\n\n constructor(\n // private contentStripSvc: ContentStripNewMultipleService,\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n public router: Router,\n private userSvc: WidgetUserService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService\n ) {\n super();\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en');\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n this.environment = environment\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n this.contentSvc.telemetryData$.subscribe((data: any) => {\n this.telemtryResponse.emit(data)\n })\n\n\n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n if (this.checkForEmptyWidget(strip)) {\n this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n // console.log('data.key', data, data.key, data.widgets);\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitContentData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsContentStripWithTabs.IContentStripMultiple, data: IStripUnitContentData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitContentData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitContentData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitContentData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n const tabWithMaxWidgets = data.tabs.reduce(\n (prev, current) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n\n private getFiltersFromArray(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n private transformSearchV6FiltersV2(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n checkForDateFilters(filters: any) {\n let userData: any;\n if (this.configSvc.userProfile) {\n userData = this.configSvc.userProfile;\n }\n\n if (filters && filters.hasOwnProperty('batches.endDate')) {\n // tslint:disable-next-line\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\n // tslint:disable-next-line\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\n } else if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n if (this.providerId) {\n filters.organisation = this.providerId;\n } else {\n filters.organisation = userData && userData.rootOrgId;\n\n if (filters && filters.hasOwnProperty('designation')) {\n filters.designation = userData.professionalDetails.length > 0 ?\n userData.professionalDetails[0].designation : '';\n }\n }\n\n }\n return filters;\n }\n\n private fetchStripFromRequestData(\n strip: NsContentStripWithTabs.IContentStripUnit,\n calculateParentStatus = true,\n ) {\n // setting initial values\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\n this.processStrip(strip, [], 'fetching', false, null);\n this.fetchFromEnrollmentList(strip, calculateParentStatus);\n this.fetchFromSearchV6(strip, calculateParentStatus);\n this.fetchFromTrendingContent(strip, calculateParentStatus);\n this.fetchAllCbpPlans(strip, calculateParentStatus);\n this.fetchAllTopContent(strip, calculateParentStatus);\n this.fetchAllFeaturedContent(strip, calculateParentStatus);\n this.fetchAllBookMarkData(strip, calculateParentStatus);\n this.fetchAllPlaylistSearch(strip, calculateParentStatus);\n this.fetchPlaylistReadData(strip, calculateParentStatus);\n this.fetchCiosContentData(strip, calculateParentStatus);\n\n // this.enrollInterval = setInterval(() => {\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\n // }, 1000)\n }\n\n fetchFromEnrollmentList(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) {\n let userId = '';\n let content: NsContent.IContent[];\n let contentNew: NsContent.IContent[];\n let tabResults: any[] = [];\n const queryParams = _.get(strip.request.enrollmentList, 'queryParams');\n // if (queryParams && queryParams.batchDetails) {\n // if (!queryParams.batchDetails.includes('&retiredCoursesEnabled=true')) {\n // queryParams.batchDetails += '&retiredCoursesEnabled=true'\n // }\n // }\n if (this.configSvc.userProfile) {\n userId = this.configSvc.userProfile.userId;\n }\n // this.userSvc.resetTime('enrollmentService')\n // tslint:disable-next-line: deprecation\n this.userSvc.fetchUserBatchList(userId, queryParams).subscribe(\n (result: any) => {\n const courses = result && result.courses;\n const showViewMore = Boolean(\n courses.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: (strip.viewMoreUrl && strip.viewMoreUrl.path) || '',\n queryParams: {\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n strip.request && strip.request.searchV6 && strip.request.searchV6.filters\n ? JSON.stringify(\n // this.searchServSvc.transformSearchV6Filters(\n strip.request.searchV6.filters\n // ),\n )\n : {},\n },\n }\n : null;\n if (courses && courses.length) {\n content = courses.map((c: any) => {\n const contentTemp: NsContent.IContent = c.content;\n contentTemp.completionPercentage = c.completionPercentage || c.progress || 0;\n contentTemp.completionStatus = c.completionStatus || c.status || 0;\n contentTemp.enrolledDate = c.enrolledDate || '';\n contentTemp.lastContentAccessTime = c.lastContentAccessTime || '';\n contentTemp.lastReadContentStatus = c.lastReadContentStatus || '';\n contentTemp.lastReadContentId = c.lastReadContentId || '';\n contentTemp.lrcProgressDetails = c.lrcProgressDetails || '';\n contentTemp.issuedCertificates = c.issuedCertificates || [];\n contentTemp.batchId = c.batchId || '';\n return contentTemp;\n });\n }\n // To filter content with completionPercentage > 0,\n // so that only those content will show in home page\n // continue learing strip\n // if (content && content.length) {\n // contentNew = content.filter((c: any) => {\n // /** commented as both are 0 after enrolll */\n // if (c.completionPercentage && c.completionPercentage > 0) {\n // return c\n // }\n // })\n // }\n\n // To sort in descending order of the enrolled date\n contentNew = (content || []).sort((a: any, b: any) => {\n const dateA: any = new Date(a.lastContentAccessTime || 0);\n const dateB: any = new Date(b.lastContentAccessTime || 0);\n return dateB - dateA;\n });\n\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitEnrollmentTabsData(contentNew, strip);\n this.processStrip(\n strip,\n this.transformContentsToWidgets(contentNew, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(contentNew, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n );\n }\n },\n () => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n );\n }\n }\n\n splitEnrollmentTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\n const tabResults: any[] = [];\n const splitData = this.getInprogressAndCompleted(\n contentNew,\n (e: any) => e.completionStatus === 1 || e.completionPercentage < 100,\n strip,\n );\n\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if (strip.tabs[i]) {\n tabResults.push(\n {\n ...strip.tabs[i],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n }\n return tabResults;\n }\n\n getInprogressAndCompleted(array: NsContent.IContent[],\n customFilter: any,\n strip: NsContentStripWithTabs.IContentStripUnit) {\n const inprogress: any[] = []\n const completed: any[] = []\n // array.forEach((e: any, idx: number, arr: any[]) => (customFilter(e, idx, arr) ? inprogress : completed).push(e))\n array.forEach((e, idx, arr) => {\n const status = e.status ? (e.status as string).toLowerCase() : ''\n const statusRetired = status === 'retired'\n if (customFilter(e, idx, arr)) {\n if (!statusRetired) {\n inprogress.push(e)\n }\n } else {\n completed.push(e)\n }\n })\n // Sort the completed array with 'Live' status first and 'Retired' status second\n completed.sort((a: any, b: any) => {\n const statusA = a.status ? a.status.toLowerCase() : ''\n const statusB = b.status ? b.status.toLowerCase() : ''\n if (statusA === 'live' && statusB !== 'live') {\n return -1\n }\n if (statusA !== 'live' && statusB === 'live') {\n return 1\n }\n if (statusA === 'retired' && statusB !== 'retired') {\n return 1\n }\n if (statusA !== 'retired' && statusB === 'retired') {\n return -1\n }\n return 0\n })\n return [\n { value: 'inprogress', widgets: this.transformContentsToWidgets(inprogress, strip) },\n { value: 'completed', widgets: this.transformContentsToWidgets(completed, strip) }];\n }\n\n async fetchFromSearchV6(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n console.log(originalFilters);\n if (strip.request &&\n strip.request.searchV6 &&\n strip.request.searchV6.request &&\n strip.request.searchV6.request.filters) {\n originalFilters = strip.request.searchV6.request.filters;\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\n strip.request.searchV6.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqSearchV6(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content) {\n if (strip.key === 'scheduledAssessment') {\n this.enrollInterval = setInterval(() => {\n this.checkInvitOnlyAssessments(response.results.result.content, strip, calculateParentStatus, response.viewMoreUrl)\n\n // tslint:disable-next-line\n }, 1000)\n\n\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n }\n\n } else if (response.results.result.Event) {\n this.processStrip(\n strip,\n this.transformEventsToWidgets(response.results.result.Event, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n checkInvitOnlyAssessments(content: any, strip: any, calculateParentStatus: any, viewMoreUrl: any) {\n if (localStorage.getItem('enrollmentMapData')) {\n this.enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\n let filteredArray: any = []\n let now = new Date().getTime()\n content.forEach((data: any) => {\n if (this.enrollmentMapData[data.identifier]) {\n if(this.enrollmentMapData[data.identifier].status !== 2 && this.enrollmentMapData[data.identifier].batch) {\n const enrollData = this.enrollmentMapData[data.identifier].batch\n let endDate:any = new Date(enrollData.endDate).getTime()\n // let endDate:any = '2024-07-7T00:00:00.000Z'\n let timeDuration = endDate - now\n if(timeDuration > 0 ) {\n data['batch'] = this.enrollmentMapData[data.identifier].batch\n data['completionPercentage'] = this.enrollmentMapData[data.identifier].completionPercentage\n filteredArray.push(data)\n }\n }\n \n }\n })\n filteredArray = filteredArray.sort((a: any, b: any) => {\n const dateA: any = new Date(a.batch.startDate || 0)\n const dateB: any = new Date(b.batch.startDate || 0)\n return dateA - dateB\n })\n this.processStrip(\n strip,\n this.transformContentsToWidgets(filteredArray, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n );\n clearInterval(this.enrollInterval)\n }\n }\n\n async searchV6Request(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.searchV6) {\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.searchV6 &&\n request.searchV6.request &&\n request.searchV6.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\n // }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n async fetchFromTrendingContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n console.log(originalFilters);\n if (strip.request &&\n strip.request.trendingSearch &&\n strip.request.trendingSearch.request &&\n strip.request.trendingSearch.request.filters) {\n originalFilters = strip.request.trendingSearch.request.filters;\n strip.request.trendingSearch.request.filters = this.checkForDateFilters(strip.request.trendingSearch.request.filters);\n strip.request.trendingSearch.request.filters = this.getFiltersFromArray(\n strip.request.trendingSearch.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqTrending(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.trendingSearchRequest(strip, strip.request, calculateParentStatus);\n if (response && response.results && response.results.response) {\n const content = response.results.response[strip.request.trendingSearch.responseKey] || [];\n this.processStrip(\n strip,\n this.transformContentsToWidgets(content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl || '',\n );\n if (!content.length) {\n this.emptyResponse.emit(true)\n }\n } else {\n this.emptyResponse.emit(true)\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.emptyResponse.emit(true)\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n }\n }\n\n async trendingSearchRequest(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.trendingSearch) {\n // check for the request if it has dynamic values]\n if (request.trendingSearch.request.filters.organisation &&\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\n ) {\n let userRootOrgId;\n if (this.configSvc.userProfile) {\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\n }\n request.trendingSearch.request.filters.organisation = userRootOrgId;\n }\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\n const showViewMore = Boolean(\n results.result &&\n strip.request &&\n results.result[strip.request.trendingSearch.responseKey] &&\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\n strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.trendingSearch &&\n request.trendingSearch.request &&\n request.trendingSearch.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n let proccesedResult: any = []\n if (results && results.response && results.response.certifications) {\n results.response.certifications.map((result: any) => {\n if (result.source === this.channnelName) {\n proccesedResult.push(result)\n }\n })\n }\n results = { response: { certifications: proccesedResult } }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n if (error.error && error.error.status === 400) {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\n reject(error);\n },\n );\n }\n });\n }\n\n toggleInfo(data: IStripUnitContentData) {\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\n if (stripInfo) {\n if (stripInfo.mode !== 'below') {\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\n stripInfo.mode = 'below';\n }\n if (stripInfo.mode === 'below') {\n this.stripsResultDataMap[data.key].stripInfo = {\n ...stripInfo,\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\n };\n }\n }\n }\n\n private transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n private transformEventsToWidgets(\n contents: ITodayEvents[],\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n this.eventSvc.setEventListData(contents);\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n private transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n private async processStrip(\n strip: NsContentStripWithTabs.IContentStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsContentStripWithTabs.IContentStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n tabsType: strip.tabsType ? strip.tabsType : '',\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsContentStripWithTabs.IContentStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) ||\n (strip.request.topContent && Object.keys(strip.request.topContent).length) ||\n (strip.request.featureContent && Object.keys(strip.request.featureContent).length) ||\n (strip.request.bookmarkRead && Object.keys(strip.request.bookmarkRead).length) ||\n (strip.request.playlistSearch && Object.keys(strip.request.playlistSearch).length) ||\n (strip.request.playlistRead && Object.keys(strip.request.playlistRead).length) ||\n (strip.request.ciosContent && Object.keys(strip.request.ciosContent).length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitContentData, stripKey: string) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const data: WsEvents.ITelemetryTabData = {\n label: `${tabEvent.tab.textLabel}`,\n index: tabEvent.index,\n };\n this.eventSvc.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\n id: `${_.camelCase(data.label)}-tab`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n );\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.label,\n };\n }\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick) {\n if (currentTabFromMap.requestRequired && currentTabFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentTabFromMap.request.searchV6) {\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.trendingSearch) {\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.topContent) {\n this.getTabDataByNewReqTopContent(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.playlistRead) {\n this.getTabDataByNewReqPlaylistReadContent(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.ciosContent) {\n this.getTabDataByCiosSearch(currentStrip, tabEvent.index, currentTabFromMap, true)\n }\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].tabLoading = false;\n }\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].tabLoading = false;\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\n stripMap.showOnLoader = false;\n }\n }, 200);\n }\n }\n }\n\n\n async getTabDataByNewReqSearchV6(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\n if (response && response.results) {\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async getTabDataByNewReqTrending(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\n if (response && response.results && response.results.response) {\n const content = response.results.response[currentTab.value] || [];\n const widgets = this.transformContentsToWidgets(content, strip);\n // console.log('currentTab --- widgets', widgets)\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n // console.log('tabResults -++++***--', tabResults)\n // console.log('calling after-- ')\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n\n getTabDataByfilter(\n strip: NsContentStripWithTabs.IContentStripUnit,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n // tslint:disable:no-console\n console.log('strip -- ', strip);\n // tslint:disable:no-console\n console.log('currentTab -- ', currentTab);\n // tslint:disable:no-console\n console.log('calculateParentStatus-- ', calculateParentStatus);\n // TODO: Write logic for individual filter if passed in config\n // add switch case based on config key passed\n }\n\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\n\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\n\n let courses: NsContent.IContent[];\n let tabResults: any[] = [];\n const response = await this.userSvc.fetchCbpPlanList().toPromise();\n if (response) {\n courses = response;\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitCbpTabsData(courses, strip);\n await this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n '',\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n 'viewMoreUrl',\n );\n }\n }\n // this.userSvc.fetchCbpPlanList().subscribe( async (res: any) => {\n // if (res) {\n // console.log(res,'===============================>')\n // courses = res\n // if (strip.tabs && strip.tabs.length) {\n // tabResults = this.splitCbpTabsData(courses, strip)\n // await this.processStrip(\n // strip,\n // this.transformContentsToWidgets(courses, strip),\n // 'done',\n // calculateParentStatus,\n // '',\n // tabResults\n // )\n // } else {\n // this.processStrip(\n // strip,\n // this.transformContentsToWidgets(courses, strip),\n // 'done',\n // calculateParentStatus,\n // 'viewMoreUrl',\n // )\n // }\n // }\n // }, (_err: any) => {\n\n // })\n\n clearInterval(this.enrollInterval);\n }\n }\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\n const tabResults: any[] = [];\n const splitData = this.getTabsList(\n contentNew,\n strip,\n );\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if (strip.tabs[i]) {\n tabResults.push(\n {\n ...strip.tabs[i],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n }\n return tabResults;\n }\n\n getTabsList(array: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit) {\n let all: any[] = [];\n let upcoming: any[] = [];\n let overdue: any[] = [];\n array.forEach((e: any) => {\n all.push(e);\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n overdue.push(e);\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\n upcoming.push(e);\n }\n });\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\n\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\n\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\n\n overdue = overdue.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n\n overdue = overdue.sort((a: any, b: any): any => {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n });\n\n upcoming = upcoming.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n // this.getSelectedIndex(1)\n return [\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n if (key === 'cbpPlan') {\n if (stripsResultDataMap.tabs.length) {\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\n }\n }\n return returnValue;\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n async fetchAllTopContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.topContent && Object.keys(strip.request.topContent).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.topContent &&\n strip.request.topContent.request &&\n strip.request.topContent.request.filters) {\n originalFilters = strip.request.topContent.request.filters;\n strip.request.topContent.request.filters = this.postMethodFilters(strip.request.topContent.request.filters);\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqTopContent(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.postRequestMethod(strip, strip.request.topContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content && response.results.result.content.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n async fetchAllFeaturedContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.featureContent && Object.keys(strip.request.featureContent).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.featureContent &&\n strip.request.featureContent.request &&\n strip.request.featureContent.request.filters) {\n originalFilters = strip.request.featureContent.request.filters;\n strip.request.featureContent.request.filters = this.postMethodFilters(strip.request.featureContent.request.filters);\n }\n try {\n const response = await this.postRequestMethod(strip, strip.request.featureContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content && response.results.result.content.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n\n async getTabDataByNewReqTopContent(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n if (currentTab.request &&\n currentTab.request.topContent &&\n currentTab.request.topContent.request &&\n currentTab.request.topContent.request.filters) {\n currentTab.request.topContent.request.filters = this.postMethodFilters(currentTab.request.topContent.request.filters);\n }\n try {\n // const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\n const response = await this.postRequestMethod(strip, currentTab.request.topContent, currentTab.request.apiUrl, calculateParentStatus);\n if (response.results && response.results.result) {\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n raiseTelemetry(stripData: any) {\n this.telemtryResponse.emit(stripData)\n }\n\n async postRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n apiUrl: string,\n calculateParentStatus: boolean\n ): Promise<any> {\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.postApiMethod(apiUrl, request).subscribe(results => {\n if (results.result && results.result.content) {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f: {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n } else if (results && results.data) {\n const showViewMore = Boolean(\n results.data && results.data.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f: {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n } else if (results.result && results.result.data) {\n const showViewMore = Boolean(\n results.data && results.result.data && results.result.data.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f: {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n }\n\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n async getRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n apiUrl: string,\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.getApiMethod(apiUrl).subscribe(results => {\n let showViewMore: any\n if(results.result.data){\n showViewMore = Boolean(\n results.result.data && results.result.data.orgList.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n } else if(results.result.content){\n let featuredProvider = JSON.parse(results.result.content.featuredProviders || '[]')\n showViewMore = Boolean(\n featuredProvider && featuredProvider.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n }\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n }\n : null;\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n postMethodFilters(filters: any) {\n if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n filters.organisation = filters.organisation.replace('<orgID>', this.providerId)\n }\n return filters\n }\n getFullUrl(apiUrl: any, id: string) {\n let formedUrl: string = apiUrl\n if (apiUrl.indexOf('<bookmarkId>') >= 0) {\n formedUrl = apiUrl.replace('<bookmarkId>', this.environment.mdoChannelsBookmarkId)\n } else if (apiUrl.indexOf('<playlistKey>') >= 0 && apiUrl.indexOf('<orgID>') >= 0) {\n formedUrl = apiUrl.replace('<playlistKey>', this.providerId + id) \n formedUrl = formedUrl.replace('<orgID>', this.providerId) \n } else if(apiUrl.indexOf('<doId>') >= 0) {\n formedUrl = apiUrl.replace('<doId>', this.environment.providerDataKey) \n } \n return formedUrl\n }\n\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\n if (this.emitViewAll) {\n this.viewAllResponse.emit(stripData)\n } else {\n this.router.navigate([path], { queryParams: queryParamsData })\n }\n }\n\n async fetchAllBookMarkData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.bookmarkRead && Object.keys(strip.request.bookmarkRead).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.bookmarkRead &&\n strip.request.bookmarkRead.bookmarkId) {\n strip.request.apiUrl = this.getFullUrl(strip.request.apiUrl, strip.request.bookmarkRead.bookmarkId);\n }\n try {\n const response = await this.getRequestMethod(strip, strip.request.bookmarkRead, strip.request.apiUrl, calculateParentStatus);\n let content = response.results.result.data.orgList\n if (response) {\n this.processStrip(\n strip,\n this.transformAllContentsToWidgets(content, strip),\n 'done',\n calculateParentStatus,\n response,\n );\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n private transformAllContentsToWidgets(\n contents: any,\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n private transformAllTabContentsToWidgets(\n contents: any,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: currentTab.stripConfig && currentTab.stripConfig.cardSubType,\n cardCustomeClass: currentTab.customeClass ? currentTab.customeClass : '',\n context: { pageSection: currentTab.value, position: idx },\n intranetMode: currentTab.stripConfig && currentTab.stripConfig.intranetMode,\n deletedMode: currentTab.stripConfig && currentTab.stripConfig.deletedMode,\n contentTags: currentTab.stripConfig && currentTab.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n async fetchAllPlaylistSearch(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.playlistSearch && Object.keys(strip.request.playlistSearch).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.playlistSearch &&\n strip.request.playlistSearch.request &&\n strip.request.playlistSearch.request.filters) {\n originalFilters = strip.request.playlistSearch.request.filters;\n strip.request.playlistSearch.request.filters = this.postMethodFilters(strip.request.playlistSearch.request.filters);\n }\n try {\n const response = await this.postRequestMethod(strip, strip.request.playlistSearch.request, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.data && response.results.result.data.length) {\n let finalPlaylistData: any = []\n let programData: any = response.results.result.data\n programData.forEach((prgData: any) => {\n if (prgData.children && prgData.children.length) {\n finalPlaylistData.push(prgData)\n }\n })\n if (finalPlaylistData.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(finalPlaylistData, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.emptyResponse.emit(true)\n }\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n async fetchPlaylistReadData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.playlistRead && Object.keys(strip.request.playlistRead).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.playlistRead &&\n strip.request.playlistRead.type) {\n strip.request.apiUrl = this.getFullUrl(strip.request.apiUrl, strip.request.playlistRead.type);\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqPlaylistReadContent(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.getRequestMethod(strip, strip.request.playlistRead, strip.request.apiUrl, calculateParentStatus);\n \n if (response && response.results.result.content) { \n let content = response.results.result.content\n if(strip.key === 'providers'){\n let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\n this.processStrip(\n strip,\n this.transformAllContentsToWidgets(featuredProviders, strip),\n 'done',\n calculateParentStatus,\n response,\n );\n } else {\n this.processStrip(\n strip,\n this.transformAllContentsToWidgets(content, strip),\n 'done',\n calculateParentStatus,\n response,\n );\n }\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n async getTabDataByNewReqPlaylistReadContent(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n if (currentTab.request &&\n currentTab.request.playlistRead &&\n currentTab.request.playlistRead.type) {\n currentTab.request.apiUrl = this.getFullUrl(currentTab.request.apiUrl, currentTab.request.playlistRead.type);\n }\n try {\n const response = await this.getRequestMethod(strip, currentTab.request.playlistRead, currentTab.request.apiUrl, calculateParentStatus);\n // if (response && response.results.result.content) { \n // let content = response.results.result.content\n // if(strip.key === 'providers'){\n // let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\n // this.processStrip(\n // strip,\n // this.transformAllContentsToWidgets(featuredProviders, strip),\n // 'done',\n // calculateParentStatus,\n // response,\n // );\n // } else {\n // this.processStrip(\n // strip,\n // this.transformAllContentsToWidgets(content, strip),\n // 'done',\n // calculateParentStatus,\n // response,\n // );\n // }\n // } else {\n // this.processStrip(strip, [], 'error', calculateParentStatus, null);\n // this.emptyResponse.emit(true)\n // }\n if (response.results && response.results.result) {\n let content = response.results.result.content\n let widgets = []\n if(currentTab.value === 'providers'){\n let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\n widgets = this.transformAllTabContentsToWidgets(featuredProviders, currentTab)\n } else {\n widgets = this.transformAllTabContentsToWidgets(content, currentTab)\n }\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults);\n }\n } catch (error) {\n console.error('Error:', error)\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs && this.stripsResultDataMap[strip.key].tabs.length) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults)\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n }\n\n async fetchCiosContentData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip && strip.request.ciosContent && Object.keys(strip.request.ciosContent).length) {\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired && firstTab.value === 'extCourse') {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n this.getTabDataByCiosSearch(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n if (firstTab.requestRequired && firstTab.value === 'providers') {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n this.getTabDataByNewReqPlaylistReadContent(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n } else {\n try {\n const response = await this.postRequestMethod(strip, strip.request.ciosContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.data && response.results.data.length) {\n let extContentData: any = response.results.data\n if (extContentData.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(extContentData, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.emptyResponse.emit(true)\n }\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n \n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n async getTabDataByCiosSearch(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n _currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.contentSvc.postApiMethod(strip.request.apiUrl,strip.request.ciosContent).toPromise();;\n if (response && response.data && response.data.length) {\n const widgets = this.transformContentsToWidgets(response.data, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults);\n }\n } catch (error) {\n console.error('Error:', error)\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs && this.stripsResultDataMap[strip.key].tabs.length) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults)\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { ContentStripWithTabsLibComponent } from './content-strip-with-tabs-lib.component';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\n\n// tslint:disable-next-line:function-name\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n declarations: [ContentStripWithTabsLibComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n entryComponents: [ContentStripWithTabsLibComponent],\n exports: [ContentStripWithTabsLibComponent],\n})\nexport class ContentStripWithTabsLibModule { }\n","import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core'\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\nimport { ICarousel, ICarouselStyle } from './sliders.model'\nimport { Subscription, interval } from 'rxjs'\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-sliders',\n templateUrl: './sliders.component.html',\n styleUrls: ['./sliders.component.scss'],\n})\nexport class SlidersLibComponent extends WidgetBaseComponent\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\n @Input() widgetData!: ICarousel[]\n @Input() styleData!: ICarouselStyle\n @Input() title: any = ''\n @Input() type: any\n @HostBinding('id')\n public id = `banner_${Math.random()}`\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n currentIndex = 0\n slideInterval: Subscription | null = null\n isMobile = false\n\n constructor(\n private events: EventService,\n private valueSvc: ValueService\n ) {\n super()\n }\n\n ngOnInit() {\n this.reInitiateSlideInterval()\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n reInitiateSlideInterval() {\n if (this.widgetData && this.widgetData.length > 1) {\n try {\n if (this.slideInterval) {\n this.slideInterval.unsubscribe()\n }\n } catch (e) {\n } finally {\n this.slideInterval = interval(8000).subscribe(() => {\n if (this.currentIndex === this.widgetData.length - 1) {\n this.currentIndex = 0\n } else {\n this.currentIndex += 1\n }\n })\n }\n }\n }\n slideTo(index: number) {\n if (index >= 0 && index < this.widgetData.length) {\n this.currentIndex = index\n } else if (index === this.widgetData.length) {\n this.currentIndex = 0\n } else {\n this.currentIndex = this.widgetData.length + index\n }\n this.reInitiateSlideInterval()\n }\n\n get isOpenInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n return true\n } return false\n }\n\n openInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n window.open(currentData.redirectUrl)\n }\n }\n raiseTelemetry(bannerUrl: string | undefined) {\n this.openInNewTab()\n const path = window.location.pathname.replace('/', '')\n const url = path + window.location.search\n\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'banner',\n },\n {\n pageUrl: url,\n bannerRedirectUrl: bannerUrl,\n },\n {\n pageIdExt: 'banner',\n module: WsEvents.EnumTelemetrymodules.CONTENT,\n })\n }\n\n ngOnDestroy() {\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout'\r\nimport { Directive, HostBinding, Input, OnChanges, OnDestroy } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { distinctUntilChanged } from 'rxjs/operators'\r\n\r\nexport interface IImageResponsiveUnit {\r\n [key: string]: string\r\n}\r\n\r\nconst customBreakPoints = {\r\n xs: '(max-width: 450px)',\r\n s: '(min-width: 450.001px) and (max-width: 768px)',\r\n m: '(min-width: 768.001px) and (max-width: 1024px)',\r\n l: '(min-width: 1024.001px) and (max-width: 1400px)',\r\n xl: '(min-width: 1400.001px) and (max-width: 1920px)',\r\n xxl: '(min-width: 1920.001px)',\r\n}\r\n\r\n@Directive({\r\n selector: '[wsUtilsImageResponsive]',\r\n})\r\nexport class ImageResponsiveDirective implements OnChanges, OnDestroy {\r\n\r\n @Input() src: IImageResponsiveUnit | null = null\r\n @HostBinding('src') srcBindUrl = ''\r\n\r\n currentSize = ''\r\n breakpointSubscription: Subscription | null = null\r\n constructor(\r\n private breakpointObserver: BreakpointObserver,\r\n ) {\r\n this.breakpointSubscription = this.breakpointObserver\r\n .observe([\r\n customBreakPoints.xs,\r\n customBreakPoints.s,\r\n customBreakPoints.m,\r\n customBreakPoints.l,\r\n customBreakPoints.xl,\r\n customBreakPoints.xxl,\r\n ])\r\n .pipe(distinctUntilChanged())\r\n .subscribe(data => {\r\n // //console.log('data >', data)\r\n if (data.breakpoints[customBreakPoints.xxl]) {\r\n this.currentSize = 'xxl'\r\n } else if (data.breakpoints[customBreakPoints.xl]) {\r\n this.currentSize = 'xl'\r\n } else if (data.breakpoints[customBreakPoints.l]) {\r\n this.currentSize = 'l'\r\n } else if (data.breakpoints[customBreakPoints.m]) {\r\n this.currentSize = 'm'\r\n } else if (data.breakpoints[customBreakPoints.s]) {\r\n this.currentSize = 's'\r\n } else if (data.breakpoints[customBreakPoints.xs]) {\r\n this.currentSize = 'xs'\r\n } else {\r\n this.currentSize = 'xl'\r\n }\r\n this.setSrc()\r\n })\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.setSrc()\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.breakpointSubscription) {\r\n this.breakpointSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n private setSrc() {\r\n if (\r\n this.currentSize &&\r\n this.src &&\r\n this.src[this.currentSize]\r\n ) {\r\n this.srcBindUrl = this.src[this.currentSize]\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ImageResponsiveDirective } from './image-responsive.directive'\r\n\r\n@NgModule({\r\n declarations: [ImageResponsiveDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ImageResponsiveDirective],\r\n})\r\nexport class ImageResponsiveModule { }\r\n","import { Directive, OnChanges, Input, HostBinding, HostListener } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsNavigation]',\r\n})\r\nexport class NavigationDirective implements OnChanges {\r\n @Input() wsUtilsNavigation = ''\r\n @Input() openInNewTab = false\r\n @Input()\r\n @HostBinding('attr.routerLink') routeUrl = ''\r\n @HostListener('mousedown', ['$event']) onMouseEnter($event: Event) {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n $event.preventDefault()\r\n $event.stopPropagation()\r\n this.routeUrl = './'\r\n window.open(this.wsUtilsNavigation)\r\n }\r\n }\r\n constructor() { }\r\n\r\n ngOnChanges() {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n this.routeUrl = './'\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NavigationDirective } from './navigation.directive'\r\n\r\n@NgModule({\r\n declarations: [NavigationDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [NavigationDirective],\r\n})\r\nexport class NavigationModule { }\r\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SlidersLibComponent } from './sliders.component'\nimport { RouterModule } from '@angular/router'\nimport { ImageResponsiveModule } from './../../_directives/image-responsive/image-responsive.module'\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\n/* tslint:disable */\nimport Hammer from 'hammerjs'\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\n/* tslint:enable */\nexport class MyHammerConfig extends HammerGestureConfig {\n buildHammer(element: HTMLElement) {\n const mc = new Hammer(element, {\n touchAction: 'pan-y',\n })\n return mc\n }\n}\n\n// tslint:disable-next-line: max-classes-per-file\n@NgModule({\n declarations: [SlidersLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n NavigationModule,\n ImageResponsiveModule,\n ],\n exports: [SlidersLibComponent],\n entryComponents: [SlidersLibComponent],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: MyHammerConfig,\n },\n ],\n})\nexport class SlidersLibModule { }\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nconst API_END_POINTS = {\n PROVIDER_INSIGHTS: `/apis/proxies/v8/microsite/read/insights`,\n TRAINING_DETAILS: `apis/proxies/v8/sunbirdigot/search`,\n ANNOUNCEMENTS_DETAILS: `apis/proxies/v8/announcements/v1/search`,\n LEARNERS: `apis/proxies/v8/halloffame/top/learners`,\n LEADERBOARD: 'apis/proxies/v8/halloffame/v1/mdoleaderboard',\n LEADERBOARD_USERS: `apis/proxies/v8/halloffame/v1/userleaderboard`,\n NLW_LEADERBOARD: `apis/proxies/v8/national/learning/week/insights`,\n INSIGHTS: `apis/proxies/v8/read/user/insights`,\n USER_PROGRESS: `apis/proxies/v8/halloffame/v1/userleaderboard`,\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InsiteDataService {\n\n constructor(\n private http: HttpClient\n ) {}\n fetchSearchData(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.PROVIDER_INSIGHTS, request)\n }\n\n fetchAnnouncementsData(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.ANNOUNCEMENTS_DETAILS, request)\n }\n\n\n fetchTrainingDetails(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.TRAINING_DETAILS, request)\n }\n\n fetchLearner(channelId: any): Observable<any> {\n return this.http.get(`${API_END_POINTS.LEARNERS}/${channelId}`)\n }\n\n fetchLeaderboard() {\n return this.http.get(`${API_END_POINTS.LEADERBOARD}`)\n }\n\n fetchMdoUsers(orgId: any): Observable<any> {\n return this.http.get(`${API_END_POINTS.LEADERBOARD_USERS}/${orgId}`)\n }\n\n fetchNwlStats() {\n return this.http.get(`${API_END_POINTS.NLW_LEADERBOARD}`)\n }\n\n fetchInsightsData(payload: any) {\n const result = this.http.post(API_END_POINTS.INSIGHTS, payload)\n return result\n }\n\n fetchUserProgress() {\n return this.http.get(`${API_END_POINTS.USER_PROGRESS}`)\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-data-points',\n templateUrl: './data-points.component.html',\n styleUrls: ['./data-points.component.css']\n})\nexport class DataPointsComponent implements OnInit {\n @Input() objectData: any\n @Input() layoutType: string = ''\n @Input() fetchDataFromApi: boolean = false\n @Input() providerId : any = ''\n @Input() pageLayout: any = ''\n @Input() title: any\n customArray: any[][] = []\n isDataLoading: boolean = false\n apiResults: any\n \n constructor(public insightSvc: InsiteDataService) { }\n\n ngOnInit() {\n if (this.objectData && this.layoutType === 'gridLayout') {\n this.customArray = this.createCustomArray(this.objectData.metrics)\n }\n if(this.fetchDataFromApi) {\n this.isDataLoading = true\n if (this.pageLayout === 'nlw') {\n this.getStats()\n } else {\n this.getInsiteData()\n }\n }\n } \n\n createCustomArray(arr: any[]): any[][] {\n const nByn: any[][] = []\n for (let i = 0; i < arr.length; i += this.objectData.dataColSpan) {\n nByn.push(arr.slice(i, i + this.objectData.dataColSpan))\n }\n return nByn \n }\n\n getInsiteData(){\n let request: any = {}\n request = {\n \"request\": {\n \"filters\": {\n \"organisations\": [\n this.providerId\n ]\n }\n }\n }\n if (this.pageLayout && this.pageLayout === 'mdo') {\n request = {\n \"request\": {\n \"filters\": {\n \"requestType\": \"MDO_INSIGHT\",\n \"organisations\": [\n this.providerId\n ]\n }\n }\n }\n }\n this.insightSvc.fetchSearchData(request).subscribe((res: any)=> {\n if(res && res.result && res.result.response && res.result.response.nudges && res.result.response.nudges.length) {\n res.result.response.nudges.forEach((nudgeData: any) => {\n if(this.providerId && this.providerId === nudgeData.orgId) {\n this.objectData = nudgeData.data\n }\n })\n }\n this.isDataLoading = false\n })\n\n }\n\n getStats() {\n this.insightSvc.fetchNwlStats().subscribe((res: any) => {\n if(res && res.result && res.result.data) {\n this.objectData = res.result.data\n }\n this.isDataLoading = false\n }, error => {\n console.log(error)\n this.isDataLoading = false\n })\n }\n\n converToIndianSystem(value: any) {\n if (value) {\n let numStr = value.toString()\n let [integerPart, decimalPart] = numStr.split('.')\n let lastThree = integerPart.slice(-3);\n let otherNumbers = integerPart.slice(0, -3);\n if (otherNumbers !== '') {\n lastThree = ',' + lastThree;\n }\n let formattedIntegerPart = otherNumbers.replace(/\\B(?=(\\d{2})+(?!\\d))/g, ',') + lastThree;\n const result = decimalPart ? `${formattedIntegerPart}.${decimalPart.substr(0,2)}` : formattedIntegerPart;\n return result\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-skeleton-loader',\n templateUrl: './skeleton-loader-lib.component.html',\n styleUrls: ['./skeleton-loader-lib.component.scss'],\n})\nexport class SkeletonLoaderLibComponent implements OnInit {\n\n @Input() bindingClass = ''\n @Input() height = ''\n @Input() width = ''\n constructor() { }\n\n ngOnInit() {\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SkeletonLoaderLibComponent } from './skeleton-loader-lib.component'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { MatDialogModule, MatIconModule } from '@angular/material'\n\n@NgModule({\n declarations: [SkeletonLoaderLibComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatIconModule,\n ],\n exports: [\n SkeletonLoaderLibComponent,\n ],\n entryComponents: [SkeletonLoaderLibComponent],\n})\nexport class SkeletonLoaderLibModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataPointsComponent } from './data-points.component';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [DataPointsComponent],\n imports: [\n CommonModule,\n SkeletonLoaderLibModule\n ],\n exports: [DataPointsComponent],\n providers:[InsiteDataService]\n})\nexport class DataPointsModule { }\n","import { DatePipe } from '@angular/common';\nimport {\n Component,\n Input,\n OnInit,\n \n} from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-calender',\n templateUrl: './calender.component.html',\n styleUrls: ['./calender.component.scss']\n})\nexport class CalenderComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() fetchDataFromApi: boolean = false\n @Input() showHeader: boolean = false\n @Input() defaultDays: number = 3\n @Input() providerId: any\n @Input() fullCalendor: boolean = false\n days = []\n trainings: any = {}\n currentMonthAndYear: any\n isDataLoading: boolean = false\n currentDate: any = new Date()\n endDate: any\n startDate: any\n allMonths = [\"January\", \"February\", \"March\",\n \"April\", \"May\", \"June\", \"July\",\n \"August\", \"September\", \"October\",\n \"November\", \"December\"\n ]\n monthsDropdown: any = []\n selectedMonth: any\n constructor(private datePipe: DatePipe, public insightSvc: InsiteDataService) { }\n\n ngOnInit() {\n this.currentMonthAndYear = this.datePipe.transform(this.currentDate, 'MMMM y')\n this.selectedMonth = this.datePipe.transform(this.currentDate, 'LLLL yyyy')\n if (this.fullCalendor) {\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\n this.getMonthsDropdownData()\n }\n if (!this.fullCalendor) {\n this.days = this.getDays(this.currentDate, +this.defaultDays)\n }\n this.startDate = this.days[0]\n this.endDate = this.days[this.days.length - 1]\n if(this.fetchDataFromApi) {\n this.isDataLoading = true\n this.getInsiteData()\n }\n }\n getInsiteData() {\n let request = {\n \"locale\": [\n \"en\"\n ],\n \"query\": \"\",\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"category\": [\n \"Calendar\"\n ],\n \"status\": [\n \"Live\",\n \"Retired\"\n ],\n \"contentType\": \"Event\",\n \"startDate\": {\n \">=\": this.startDate,\n \"<=\": this.endDate\n // \">=\": \"2024-01-15\",\n // \"<\": \"2024-05-31\"\n },\n \"channel\": [this.providerId]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n }\n }\n }\n this.insightSvc.fetchTrainingDetails(request).subscribe((res: any)=> {\n if (res && res.result && res.result.Event) {\n res.result.Event.forEach((resp: any) => {\n if (this.trainings[resp.startDate]) {\n let prevData = this.trainings[resp.startDate]\n let location = resp.eventType\n if (resp.location && location !== \"Online\") {\n const jsonResp = JSON.parse(resp.location)\n location = jsonResp['address']\n }\n const formatObject = {\n location: location,\n startTime: this.convertTo12HourFormat(resp.startTime),\n endTime: this.convertTo12HourFormat(resp.endTime),\n title: resp.name,\n startDate: this.formatDate(resp.startDate),\n endDate: this.formatDate(resp.endDate),\n registrationLink: resp.registrationLink,\n }\n prevData.push(formatObject)\n this.trainings[resp.startDate] = prevData\n }\n })\n }\n this.isDataLoading = false\n })\n }\n\n getKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n\n formatDate(date: any) {\n let formatDate = new Date(date)\n return this.datePipe.transform(formatDate, 'E, dd LLL')\n }\n\n convertTo12HourFormat(timeString: string): string {\n const time = timeString.split(\":\")\n let hours = +time[0]\n const minutes = +time[1]\n const ampm = hours >= 12 ? 'PM' : 'AM'\n hours = hours % 12\n hours = hours ? hours : 12\n const strHours = hours < 10 ? '0' + hours : hours.toString()\n const strMinutes = minutes < 10 ? '0' + minutes : minutes.toString()\n return `${strHours}:${strMinutes} ${ampm}`\n }\n\n getDays(cDate: any, counter: number) {\n const days: any = []\n let initDate: any = new Date(cDate)\n initDate = this.datePipe.transform(initDate, 'y-MM-dd')\n days.push(initDate)\n this.trainings[initDate] = []\n while (counter > 0) {\n let myDate: any = new Date(cDate)\n myDate = myDate.setDate(myDate.getDate() + 1)\n cDate = myDate\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\n days.push(myDate)\n this.trainings[myDate] = []\n counter = counter - 1\n }\n return days\n }\n\n getDaysInMonth(year: number, month: number): Date[] {\n const date = new Date(year, month, 1)\n const days: any = []\n this.trainings = {}\n while (date.getMonth() === month) {\n let myDate: any = new Date(date)\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\n days.push(myDate)\n this.trainings[myDate] = []\n date.setDate(date.getDate() + 1)\n }\n return days\n }\n\n getMonthsDropdownData() {\n this.allMonths.forEach((month: any) => {\n this.monthsDropdown.push(`${month} ${this.currentDate.getFullYear()}`)\n })\n }\n\n selectMonth(event: any) {\n const selectedMonth: any = new Date(event)\n this.currentDate = selectedMonth\n this.days = []\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\n this.startDate = this.days[0]\n this.endDate = this.days[this.days.length - 1]\n this.isDataLoading = true\n this.getInsiteData()\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-calender-day',\n templateUrl: './calender-day.component.html',\n styleUrls: ['./calender-day.component.scss']\n})\nexport class CalenderDayComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() day: any\n @Input() dataLoading: boolean\n @Input() rowId: any\n @Input() eventDate: any\n webDisplayDate: string = \"\"\n mobileDisplayDate: string = \"\"\n currentDate: any = new Date()\n\n constructor(private datePipe: DatePipe) { }\n\n ngOnInit() {\n this.currentDate = this.datePipe.transform(this.currentDate, 'y-MM-dd')\n }\n\n openLink(link: string) {\n window.open(link, \"_blank\")\n }\n\n formatDate(date: any, type: string) {\n let fDate = new Date(date)\n if (type === 'web') {\n return this.datePipe.transform(fDate, 'E, dd LLL')\n }\n if (type === 'mob') {\n return this.datePipe.transform(fDate, 'E dd LLL')\n }\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { CalenderComponent } from './calender.component';\nimport { MatIconModule, MatSelectModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { CalenderDayComponent } from './calender-day/calender-day.component';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n SkeletonLoaderLibModule\n ],\n declarations: [CalenderComponent, CalenderDayComponent],\n exports: [CalenderComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n providers:[DatePipe, InsiteDataService],\n})\nexport class CalenderModule {}","import { Injectable } from '@angular/core';\nimport { NsContent } from '../_models/widget-content.model';\nimport { NsContentStripWithTabs } from '../_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model';\nimport { NsCommonStrip } from '../_common/common-strip/common-strip.model'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommonMethodsService {\n\n constructor() { }\n\n transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit | NsCommonStrip.ICommonStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n handleCapitalize(str: string, type?: string): string {\n let returnValue = ''\n if (str) {\n if (type === 'name') {\n returnValue = str.split(' ').map(_str => {\n return _str.charAt(0).toUpperCase() + _str.slice(1)\n }).join(' ')\n } else {\n\n returnValue = str && (str.charAt(0).toUpperCase() + str.slice(1))\n }\n }\n return returnValue\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsCommonStrip } from './common-strip.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { NsContent } from '../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserService } from '../../_services/widget-user.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CommonMethodsService } from '../../_services/common-methods.service';\n\n\ninterface IStripUnitCommonData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsCommonStrip.ICommonStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsCommonStrip.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n}\n\n@Component({\n selector: 'sb-uic-common-strip',\n templateUrl: './common-strip.component.html',\n styleUrls: ['./common-strip.component.scss']\n})\nexport class CommonStripComponent extends WidgetBaseComponent\nimplements\nOnInit,\nOnDestroy,\nNsWidgetResolver.IWidgetData<NsCommonStrip.ICommonStrip> {\n @Input() widgetData!: NsCommonStrip.ICommonStrip;\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitCommonData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n\n constructor(\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n private userSvc: WidgetUserService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private commonMethodsSvc: CommonMethodsService\n ) {\n super();\n this.environment = environment\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // null check if in case no strips key in config\n if(this.widgetData && this.widgetData.strips) {\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n this.processStrip(strip, [], 'fetching', false, null);\n if(strip.dataType === 'in-hand' && this.widgetData[strip.dataKey]){\n this.processStrip(\n strip,\n this.commonMethodsSvc.transformContentsToWidgets(this.widgetData[strip.dataKey], strip),\n 'done',\n true,\n strip.viewMoreUrl || '',\n );\n } else {\n if (this.checkForEmptyWidget(strip)) {\n // this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n // this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitCommonData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsCommonStrip.ICommonStrip, data: IStripUnitCommonData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitCommonData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitCommonData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitCommonData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n const tabWithMaxWidgets = data.tabs.reduce(\n (prev, current) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n \n private async processStrip(\n strip: NsCommonStrip.ICommonStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsCommonStrip.ICommonStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n dataType: strip.dataType,\n dataKey: strip.dataKey,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n if (key === 'cbpPlan') {\n if (stripsResultDataMap.tabs.length) {\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\n }\n }\n return returnValue;\n }\n \n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsCommonStrip.ICommonStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitCommonData, stripKey: string) {\n\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CommonStripComponent } from './common-strip.component';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { HttpClient } from '@angular/common/http';\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\n@NgModule({\n declarations: [CommonStripComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports: [CommonStripComponent]\n})\nexport class CommonStripModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-announcements',\n templateUrl: './announcements.component.html',\n styleUrls: ['./announcements.component.scss']\n})\nexport class AnnouncementsComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() mobileHeight: boolean = false\n @Input() fetchDataFromApi: boolean = false\n @Input() channelId: any\n @Output() openDialog = new EventEmitter<any>()\n isLoading: boolean = false\n announcements: any = []\n expand = false\n expanded: boolean = false\n\n constructor(public insightSvc: InsiteDataService) {\n }\n\n ngOnInit() {\n if (this.fetchDataFromApi) {\n this.isLoading = true\n this.fetchData()\n }\n }\n\n fetchData() {\n let request = {\n filterCriteriaMap: {\n channel: [this.channelId],\n //channel: [\"01381906916850892825\"],\n },\n requestedFields: [\n \"name\",\n \"description\",\n \"createdOn\",\n \"updatedOn\",\n \"category\"\n ],\n orderBy: \"createdOn\",\n orderDirection: \"ASC\",\n facets: [\n \"channel\"\n ],\n pageSize: this.objectData.pageSize\n }\n this.insightSvc.fetchAnnouncementsData(request).subscribe((res: any)=> {\n if(res && res.result && res.result.data) {\n res.result.data.forEach((resp: any) => {\n this.announcements.push({\n value: resp.description,\n expanded: false\n })\n })\n }\n if (this.announcements.length > 3) {\n this.expand = true\n }\n this.objectData.list = this.announcements\n this.isLoading = false\n }, error => {\n console.log(error)\n this.objectData.list = []\n this.isLoading = false\n })\n }\n\n viewMoreOrLess(item: any) {\n if (item.value.length > 152) {\n item.expanded = !item.expanded\n }\n }\n\n openAnnouncements() {\n this.openDialog.emit(true)\n }\n\n showMoreOrLess() {\n this.expanded = !this.expanded\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { AnnouncementsComponent } from './announcements.component';\nimport { MatIconModule } from '@angular/material';\n\n\n\n@NgModule({\n declarations: [AnnouncementsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n SkeletonLoaderLibModule\n ],\n exports: [AnnouncementsComponent],\n})\nexport class AnnouncementsModule { }","import { Component, Input, OnInit } from '@angular/core';\nimport * as moment_ from 'moment';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nconst moment = moment_;\n@Component({\n selector: 'sb-uic-top-learners',\n templateUrl: './top-learners.component.html',\n styleUrls: ['./top-learners.component.scss']\n})\nexport class TopLearnersComponent implements OnInit {\n\n @Input() objectData: any\n @Input() channelId: any\n @Input() channnelName: any\n loading: boolean = false\n month: string = ''\n results: any = []\n\n colors: any = [\n '#EB7181', // red\n '#306933', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n '#EB7181', // red\n '#306933', // green\n '#000000', // black\n '#3670B2', // blue\n ]\n\n constructor(public insightSvc: InsiteDataService,) { }\n\n ngOnInit() {\n this.getData()\n this.month = new Date().toLocaleString('default', { month: 'long' })\n }\n\n getData() {\n this.loading = true\n this.insightSvc.fetchLearner(this.channelId).subscribe((res: any)=> {\n if (res && res.result && res.result.result && res.result.result.length) {\n this.results = res.result.result\n this.month = moment().month(Number(res.result.result[0].month) - 1).format('MMMM')\n }\n this.loading = false\n }, (_error: any) => {\n // tslint:disable-next-line: align\n this.loading = false\n })\n }\n\n getRank(rank: number) {\n if (rank === 1) {\n return \"1st\"\n } \n if (rank === 2) {\n return \"2nd\"\n } \n if (rank === 3) {\n return \"3rd\"\n } else {\n return `${rank}th`\n } \n }\n\n getColor() {\n let circleColor = ''\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\n circleColor = this.colors[randomIndex]\n return circleColor\n }\n\n createInititals(name: string) {\n let initials = ''\n const array = name.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < name.length; i += 1) {\n if (name.charAt(i) === ' ') {\n continue\n }\n if (name.charAt(i) === name.charAt(i)) {\n initials += name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n return initials.toUpperCase()\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TopLearnersComponent } from './top-learners.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { MatTooltipModule } from '@angular/material';\n\n@NgModule({\n declarations: [TopLearnersComponent],\n imports: [\n CommonModule,\n SkeletonLoaderLibModule,\n MatTooltipModule\n ],\n exports: [TopLearnersComponent],\n})\nexport class TopLearnersModule { }","import { Directive, Input, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[sbUicScrollableItem]'\n})\nexport class ScrollableItemDirective {\n\n @Input('sbUicScrollableItem') public key: string\n constructor(private el: ElementRef<HTMLElement>) {}\n\n public scrollIntoView(blockValue: any) {\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: blockValue });\n }\n\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-cbp-plan',\n templateUrl: './cbp-plan.component.html',\n styleUrls: ['./cbp-plan.component.scss']\n})\nexport class CbpPlanComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() mobileHeight: boolean = false\n @Input() fetchDataFromApi: boolean = false\n @Input() channelId: any\n @Output() openDialog = new EventEmitter<any>()\n isLoading: boolean = false\n currentIndex = 0\n styleData: any = {}\n contentdata: any = []\n\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor(private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService) { }\n\n ngOnInit() {\n this.styleData = this.objectData && this.objectData.sliderData && this.objectData.sliderData.styleData\n if (this.objectData && this.objectData.list) {\n this.objectData.list.forEach((contentEle: any) => {\n let localData = {}\n localData['title'] = contentEle.title\n localData['downloaUrl'] = contentEle.downloaUrl\n localData['cardSubType'] = \"card-wide-lib\"\n localData['cardCustomeClass'] = \"\"\n this.contentdata.push(localData)\n })\n }\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n\n getFileName(item: any) {\n console.log(item.downloadUrl)\n return item.downloadUrl.split(\"/\").at(-1)\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateActualLabel(label, type, '');\n }\n\n downloadCBPPlan(item: any) {\n const downloadUrl = item.downloaUrl\n const xhr = new XMLHttpRequest()\n xhr.open('GET', downloadUrl, true)\n xhr.responseType = 'blob'\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n const blob = new Blob([xhr.response], { type: 'application/pdf' })\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = downloadUrl.split(\"/\").at(-1)\n document.body.appendChild(a)\n a.click()\n document.body.removeChild(a)\n window.URL.revokeObjectURL(url)\n } else {\n console.error('Error downloading the PDF', xhr.statusText)\n }\n }\n xhr.onerror = function() {\n console.error('Network error')\n }\n xhr.send()\n }\n}\n","import { Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core'\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\nimport { ICarousel, ICarouselStyle } from './sliders-ng-content.model'\nimport { Subscription, interval } from 'rxjs'\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-sliders-ng-content',\n templateUrl: './sliders-ng-content.component.html',\n styleUrls: ['./sliders-ng-content.component.scss'],\n})\nexport class SlidersNgContentLibComponent extends WidgetBaseComponent\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\n @Input() widgetData!: ICarousel[]\n @Input() styleData!: ICarouselStyle\n @Input() title: any = ''\n @Input() loadNgContentData: boolean = false\n @Input() autoScroll: boolean = false\n @Input() customBanner: boolean = false\n @Output() currentIndexValue = new EventEmitter<any>()\n \n @HostBinding('id')\n public id = `banner_${Math.random()}`\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n @Input() currentIndex = 0\n slideInterval: Subscription | null = null\n isMobile = false\n\n constructor(\n private events: EventService,\n private valueSvc: ValueService\n ) {\n super()\n }\n\n ngOnInit() {\n if(this.autoScroll) {\n this.reInitiateSlideInterval()\n }\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n reInitiateSlideInterval() {\n if (this.widgetData && this.widgetData.length > 1) {\n try {\n if (this.slideInterval) {\n this.slideInterval.unsubscribe()\n }\n } catch (e) {\n } finally {\n this.slideInterval = interval(8000).subscribe(() => {\n if (this.currentIndex === this.widgetData.length - 1) {\n this.currentIndex = 0\n this.currentIndexValue.emit(this.currentIndex)\n } else {\n this.currentIndex += 1\n this.currentIndexValue.emit(this.currentIndex)\n }\n })\n }\n }\n }\n slideTo(index: number) {\n if (index >= 0 && index < this.widgetData.length) {\n this.currentIndex = index\n this.currentIndexValue.emit(this.currentIndex)\n } else if (index === this.widgetData.length) {\n this.currentIndex = 0\n this.currentIndexValue.emit(this.currentIndex)\n } else {\n this.currentIndex = this.widgetData.length + index\n this.currentIndexValue.emit(this.currentIndex)\n }\n if(this.autoScroll) {\n this.reInitiateSlideInterval()\n }\n }\n\n get isOpenInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n return true\n } return false\n }\n\n openInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n window.open(currentData.redirectUrl)\n }\n }\n raiseTelemetry(bannerUrl: string | undefined) {\n this.openInNewTab()\n const path = window.location.pathname.replace('/', '')\n const url = path + window.location.search\n\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'banner',\n },\n {\n pageUrl: url,\n bannerRedirectUrl: bannerUrl,\n },\n {\n pageIdExt: 'banner',\n module: WsEvents.EnumTelemetrymodules.CONTENT,\n })\n }\n\n ngOnDestroy() {\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SlidersNgContentLibComponent } from './sliders-ng-content.component'\nimport { RouterModule } from '@angular/router'\nimport { ImageResponsiveModule } from '../../_directives/image-responsive/image-responsive.module'\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\n/* tslint:disable */\nimport Hammer from 'hammerjs'\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\n/* tslint:enable */\nexport class MyHammerConfig extends HammerGestureConfig {\n buildHammer(element: HTMLElement) {\n const mc = new Hammer(element, {\n touchAction: 'pan-y',\n })\n return mc\n }\n}\n\n// tslint:disable-next-line: max-classes-per-file\n@NgModule({\n declarations: [SlidersNgContentLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n NavigationModule,\n ImageResponsiveModule,\n ],\n exports: [SlidersNgContentLibComponent],\n entryComponents: [SlidersNgContentLibComponent],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: MyHammerConfig,\n },\n ],\n})\nexport class SlidersNgContentLibModule { }\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { ScrollableItemDirective } from './scrollable-item.directive'\n\n@NgModule({\n declarations: [ScrollableItemDirective],\n imports: [\n CommonModule,\n ],\n exports: [ScrollableItemDirective],\n})\nexport class ScrollableItemModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CbpPlanComponent } from './cbp-plan.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { MatIconModule } from '@angular/material';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\n\n\n\n@NgModule({\n declarations: [CbpPlanComponent],\n imports: [\n CommonModule,\n SkeletonLoaderLibModule,\n MatIconModule,\n ScrollableItemModule,\n SlidersNgContentLibModule,\n ],\n exports: [CbpPlanComponent]\n})\nexport class CbpPlanModule { }\n","import { NgModule } from '@angular/core';\nimport { ConsumptionComponent } from './consumption.component';\nimport { ContentStripWithTabsLibModule } from './_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { SlidersLibModule } from '../lib/_common/sliders/sliders.module';\nimport { DataPointsModule } from './_common/data-points/data-points.module';\nimport { CalenderModule } from './_common/calender/calender.module';\nimport { CommonStripModule } from './_common/common-strip/common-strip.module';\nimport { AnnouncementsModule } from './_common/announcements/announcements.module';\nimport { TopLearnersModule } from './_common/top-learners/top-learners.module';\nimport { CbpPlanModule } from './_common/cbp-plan/cbp-plan.module';\n\n@NgModule({\n declarations: [ConsumptionComponent],\n imports: [\n ContentStripWithTabsLibModule,\n SlidersLibModule\n ],\n exports: [ConsumptionComponent,\n ContentStripWithTabsLibModule,\n SlidersLibModule,\n DataPointsModule,\n CalenderModule,\n CommonStripModule,\n AnnouncementsModule,\n TopLearnersModule,\n CbpPlanModule,\n ],\n})\nexport class ConsumptionModule { }\n","export const ROOT_WIDGET_CONFIG = {\n \n card: {\n _type: 'cardLib',\n cardResource: 'cardContentLib'\n },\n}\n","import { NsContent } from './widget-content.model';\n\nexport namespace NsCardContent {\n export interface ICard {\n content: NsContent.IContent;\n cardSubType: TCardSubType;\n context: { pageSection: string; position?: number };\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n likes?: number;\n contentTags?: IContentTags;\n stateData: any;\n cardCustomeClass?: any;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField?: string;\n }\n\n export type TCardSubType =\n | 'standard'\n | 'minimal'\n | 'space-saving'\n | 'card-user-details'\n | 'basic-info'\n | 'basic-details'\n | 'card-description-back'\n | 'network-card'\n | 'user-card';\n\n export enum EContentStatus {\n LIVE = 'Live',\n EXPIRED = 'Expired',\n DELETED = 'Deleted',\n MARK_FOR_DELETION = 'MarkedForDeletion',\n }\n export enum ACBPConst {\n UPCOMING = 'upcoming',\n ALL = 'All',\n OVERDUE = 'overdue',\n SUCCESS = 'success',\n }\n\n export enum IGOTConst {\n COMPETENCIES = 'competencies_v5',\n RETIRED = 'Retired',\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { WidgetBaseComponent, NsWidgetResolver } from '@sunbird-cb/resolver-v2';\nimport { NsCardContent } from '../../_models/card-content.model';\nimport { UtilityService } from '@sunbird-cb/utils-v2';\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-cards',\n templateUrl: './cards.component.html',\n styleUrls: ['./cards.component.scss']\n})\nexport class CardsComponent extends WidgetBaseComponent\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Output() triggerTelemetry = new EventEmitter<any>()\n isIntranetAllowedSettings = false\n cbPlanMapData: any\n cbPlanInterval: any\n enrollInterval: any\n enrollmentMapData: any\n constructor(private utilitySvc: UtilityService,\n private contSvc: WidgetContentService,\n public router: Router\n ) {\n super();\n }\n\n ngOnInit() {\n this.cbPlanInterval = setInterval(() => {\n this.getCbPlanData()\n }, 1000)\n \n this.enrollInterval = setInterval(() => {\n this.getEnrollmentData()\n // tslint:disable-next-line\n }, 1000)\n }\n\n get isLiveOrMarkForDeletion() {\n if (\n !this.widgetData.content.status ||\n this.widgetData.content.status === 'Live' ||\n this.widgetData.content.status === 'MarkedForDeletion'\n ) {\n return true\n }\n return false\n }\n\n get showIntranetContent() {\n if (this.widgetData.content.isInIntranet && this.utilitySvc.isMobile) {\n return !this.isIntranetAllowedSettings\n }\n return false\n }\n async getRedirectUrlData(content: any){\n if(content.externalId) {\n this.router.navigate(\n [`app/toc/ext/${content.contentId}`])\n } else {\n let urlData = await this.contSvc.getResourseLink(content)\n this.router.navigate(\n [urlData.url],\n {\n queryParams: urlData.queryParams\n })\n }\n \n }\n getCbPlanData() {\n let cbpList: any={}\n if (localStorage.getItem('cbpData')) {\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\n if (cbpListArr && cbpListArr.length) {\n cbpListArr.forEach((data: any) => {\n cbpList[data.identifier] = data\n })\n }\n this.cbPlanMapData = cbpList\n // this.karmaPointLoading = false\n clearInterval(this.cbPlanInterval)\n }\n }\n\n getEnrollmentData() {\n if (localStorage.getItem('enrollmentMapData')) {\n this.enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\n clearInterval(this.enrollInterval)\n }\n }\n\n raiseCardClick(data: any) {\n this.triggerTelemetry.emit(data)\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsCardContent } from '../../../_models/card-content.model';\n\n@Component({\n selector: 'ws-cb-widget-card-resource',\n templateUrl: './card-resource.component.html',\n styleUrls: ['./card-resource.component.scss'],\n})\nexport class CardResourceComponent extends WidgetBaseComponent\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\n\n @Input() widgetData!: NsCardContent.ICard;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport { WidgetContentService } from '../../../_services/widget-content.service';\n\n@Component({\n selector: 'sb-uic-card-portrait',\n templateUrl: './card-portrait.component.html',\n styleUrls: ['./card-portrait.component.scss']\n})\nexport class CardPortraitComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Input() cbPlanMapData: any\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n // for telemetry\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\n }\n this.contSvc.changeTelemetryData(contentData)\n // for redirection\n this.contentData.emit(contentData)\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipePublicURL',\n})\nexport class PipePublicURL implements PipeTransform {\n environment: any\n constructor(\n @Inject('environment') environment: any,){\n this.environment = environment\n }\n\n transform(value: string): any {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n return value ? finalURL : ''\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipePublicURL } from './pipe-public-URL.pipe'\n\n@NgModule({\n declarations: [PipePublicURL],\n imports: [\n CommonModule,\n ],\n exports: [PipePublicURL],\n})\nexport class PipePublicURLModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'objectToArray'\n})\nexport class ObjectToArrayPipe implements PipeTransform {\n // transform(value: any, ...args: any[]): any[] {\n // console.log(\"function called\")\n // if (!value) {\n // return [];\n // }\n // console.log(Object.keys(value).map(key => ({ key, value: value[key] })), \"Object.keys(value).map(key => ({ key, value: value[key] }))==----------\")\n // return Object.keys(value).map(key => ({ key, value: value[key] }));\n // }\n transform(...args: any[]): any[] { \n return args; \n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { ObjectToArrayPipe } from './object-to-array.pipe'\n\n@NgModule({\n declarations: [ObjectToArrayPipe],\n imports: [\n CommonModule,\n ],\n exports: [ObjectToArrayPipe],\n})\nexport class ObjectToArrayPipeModule { }","import { Component, OnInit, Input } from '@angular/core'\nimport { NsContent } from '../../_models/widget-content.model'\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service'\n\n@Component({\n selector: 'sb-uic-display-content-type',\n templateUrl: './display-content-type-lib.component.html',\n styleUrls: ['./display-content-type-lib.component.scss'],\n})\nexport class DisplayContentTypeLibComponent implements OnInit {\n @Input() useTranslation: boolean = true\n @Input() displayContentType: NsContent.EDisplayContentTypes = NsContent.EDisplayContentTypes.DEFAULT\n displayContentTypeEnum = NsContent.EDisplayContentTypes\n constructor(private langtranslations: MultilingualTranslationsService) { }\n\n ngOnInit() {\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '')\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { DisplayContentTypeLibComponent } from './display-content-type-lib.component'\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms'\n\n@NgModule({\n declarations: [DisplayContentTypeLibComponent],\n imports: [CommonModule, ReactiveFormsModule, FormsModule],\n exports: [DisplayContentTypeLibComponent],\n})\nexport class DisplayContentTypeLibModule {}\n","import { Directive, Input, HostListener, HostBinding, OnChanges } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsDefaultThumbnail]',\r\n})\r\nexport class DefaultThumbnailDirective implements OnChanges {\r\n\r\n @Input() wsUtilsDefaultThumbnail = ''\r\n @Input() src = ''\r\n isSrcUpdateAttemptedForDefault = false\r\n\r\n @HostBinding('src') srcUrl = ''\r\n @HostListener('error') updateSrc() {\r\n if (!this.isSrcUpdateAttemptedForDefault) {\r\n this.srcUrl = this.wsUtilsDefaultThumbnail\r\n this.isSrcUpdateAttemptedForDefault = true\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.srcUrl = this.src\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { DefaultThumbnailDirective } from './default-thumbnail.directive'\r\n\r\n@NgModule({\r\n declarations: [DefaultThumbnailDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [DefaultThumbnailDirective],\r\n})\r\nexport class DefaultThumbnailModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport * as moment from 'moment'\r\n\r\n@Pipe({\r\n name: 'pipeDurationTransform',\r\n})\r\nexport class PipeDurationTransformPipe implements PipeTransform {\r\n\r\n transform(data: number, type: 'time24' | 'hms' | 'hour' | 'hms2H' | 'hms2M'| 'day'): any {\r\n if (data <= 0) {\r\n return ''\r\n }\r\n const h = Math.floor(data / 3600)\r\n const m = Math.floor((data % 3600) / 60)\r\n const s = Math.floor((data % 3600) % 60)\r\n let duration = ''\r\n switch (type) {\r\n case 'time24':\r\n return this.defaultDuration(h, m, s)\r\n case 'hms':\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n case 'hms2H':\r\n /**to Print HH:mm:ss */\r\n const duration2 = moment.duration(data, 'seconds')\r\n const resultstring = moment.utc(duration2.asMilliseconds()).format('HH:mm:ss')\r\n return resultstring\r\n case 'hms2M': /**to Print mm:ss */\r\n const duration2H = moment.duration(data, 'seconds')\r\n const resultstring2H = moment.utc(duration2H.asMilliseconds()).format('mm:ss')\r\n\r\n return resultstring2H\r\n case 'hour':\r\n if (h === 0) {\r\n duration += 'less than an hour'\r\n }\r\n if (h === 1) {\r\n duration += `${h} hour`\r\n }\r\n if (h > 1) {\r\n duration += `${h} hours`\r\n }\r\n return duration\r\n case 'day':\r\n if (h > 24) {\r\n const duration3 = moment.duration(data, 'seconds')\r\n return `${duration3.days()} day(s)`\r\n }\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n\r\n default:\r\n return this.defaultDuration(h, m, s)\r\n }\r\n }\r\n\r\n defaultDuration(h: number, m: number, s: number) {\r\n let duration = ''\r\n duration += h > 0 ? `${h.toString().padStart(2)}:` : ''\r\n duration += m > 0 ? `${m.toString().padStart(2)}:` : '00:'\r\n duration += s > 0 ? s.toString().padStart(2) : '00'\r\n return duration\r\n }\r\n hmsCalculation(h: number, m: number, s: number, dur: string, type: string) {\r\n let space = ''\r\n let duration = dur\r\n if (h > 0) {\r\n duration += type === 'hms' ? `${h}h` : `${h} hr`\r\n }\r\n if (m > 0) {\r\n if (h > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${m}m` : `${space}${m} min`\r\n }\r\n if (s > 0 && h === 0) {\r\n if (m > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${s}s` : `${space}${s} sec`\r\n }\r\n return duration\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeDurationTransformPipe } from './pipe-duration-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeDurationTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeDurationTransformPipe],\r\n})\r\nexport class PipeDurationTransformModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardUser } from '../../../_models/card-users.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-user',\n templateUrl: './card-user.component.html',\n styleUrls: ['./card-user.component.scss']\n})\nexport class CardUserComponent implements OnInit {\n @Input() widgetData!: NsCardUser.ICard;\n @Output() userData = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n }\n }\n\n getRedirectUrlData(userData: any){\n this.userData.emit(userData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\n },\n {\n id: this.widgetData.content.userId,\n // type: this.widgetData.user.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n // ver: `${this.widgetData.user.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase('user')}-card`,\n module: _.camelCase('user'),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n \n@Component({\n selector: 'sb-uic-card-landscape',\n templateUrl: './card-landscape.component.html',\n styleUrls: ['./card-landscape.component.scss']\n})\nexport class CardLandscapeComponent implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Output() triggerTelemetry = new EventEmitter<any>()\n @Input() cbPlanMapData: any\n isCardFlipped:boolean = false\n defaultThumbnail: any\n acbpConstants = NsCardContent.ACBPConst\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n cbPlanInterval: any\n \n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.cbPlanInterval = setInterval(() => {\n this.getCbPlanData()\n }, 1000)\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry(content: any) {\n this.triggerTelemetry.emit(content)\n }\n\n\n getCbPlanData() {\n let cbpList: any={}\n if (localStorage.getItem('cbpData')) {\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\n if (cbpListArr && cbpListArr.length) {\n cbpListArr.forEach((data: any) => {\n cbpList[data.identifier] = data\n })\n }\n // this.cbPlanMapData = cbpList\n // this.karmaPointLoading = false\n clearInterval(this.cbPlanInterval)\n }\n }\n\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-wide',\n templateUrl: './card-wide.component.html',\n styleUrls: ['./card-wide.component.scss']\n})\nexport class CardWideComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n \n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { WidgetContentService } from '../../../_services/widget-content.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-card-mdo-channel',\n templateUrl: './card-mdo-channel.component.html',\n styleUrls: ['./card-mdo-channel.component.scss']\n})\nexport class CardMDOChannelComponent implements OnInit {\n @Input() widgetData!: NsContent.IContent;\n @Output() channelData = new EventEmitter<any>()\n @Output() emitTelemetry = new EventEmitter<any>()\n @Input() isCardLoading: boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,\n public router: Router) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n raiseTelemetry(contentData: any) {\n this.emitTelemetry.emit(contentData)\n if (this.widgetData) {\n contentData['typeOfTelemetry'] = 'mdo-channel'\n }\n this.contSvc.changeTelemetryData(contentData)\n }\n channelClick(channeldata:any) {\n this.channelData.emit(channeldata)\n }\n\n redirectTo(content: any) {\n this.router.navigate([`/app/learn/mdo-channels/${content.orgName}/${content.identifier}/micro-sites`])\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-wide-v2',\n templateUrl: './card-wide-v2.component.html',\n styleUrls: ['./card-wide-v2.component.scss']\n})\nexport class CardWideV2Component implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() cbPlanMapData: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Output() triggerTelemetry = new EventEmitter<any>()\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry(contentData: any) {\n this.triggerTelemetry.emit(contentData)\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { Router } from '@angular/router';\nimport { WidgetContentService } from '../../../_services/widget-content.service';\n\n@Component({\n selector: 'sb-uic-card-karma-programs',\n templateUrl: './card-karma-programs.component.html',\n styleUrls: ['./card-karma-programs.component.scss']\n})\nexport class CardKarmaProgramsComponent implements OnInit {\n\n @Input() widgetData!: NsContent.IContent;\n @Input() randomColorApply: boolean = false\n @Output() userData = new EventEmitter<any>()\n @Input() isCardLoading: boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n randomColors: any = [\n '#EF941D',\n '#F97440',\n '#35B5B0',\n '#9988FF',\n '#254092',\n '#926525',\n '#4F72DF'\n ]\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,\n private router: Router) {\n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.setRandomColor()\n }\n\n setRandomColor(){\n if(this.widgetData && this.widgetData.content) {\n if(this.randomColorApply){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\n }else {\n this.widgetData.content['bgColor'] = '#1a4ca1'\n }\n }\n }\n\n \n\n get getRandomColors(){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n return this.randomColors[randomIndex1]\n }\n\n redirectTo(data: any) {\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n data['typeOfTelemetry'] = 'karma-programs'\n }\n this.contSvc.changeTelemetryData(data)\n this.router.navigate(\n [`/app/learn/karma-programs/${data.title}/${data.playListKey}/${data.orgId}/micro-sites`],\n )\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-card-karma-programs-v2',\n templateUrl: './card-karma-programs-v2.component.html',\n styleUrls: ['./card-karma-programs-v2.component.scss']\n})\nexport class CardKarmaProgramsV2Component implements OnInit {\n\n @Input() widgetData!: NsContent.IContent;\n @Input() randomColorApply: boolean = false\n @Output() userData = new EventEmitter<any>()\n @Output() raiseTemeletry = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n randomColors: any = [\n '#EF941D',\n '#F97440',\n '#35B5B0',\n '#9988FF',\n '#254092',\n '#926525',\n '#4F72DF'\n ]\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private router : Router,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.setRandomColor()\n }\n\n setRandomColor(){\n if(this.widgetData && this.widgetData.content) {\n if(this.randomColorApply){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\n }else {\n this.widgetData.content['bgColor'] = '#1a4ca1'\n }\n }\n }\n\n redirectTo(content: any) {\n this.raiseTemeletry.emit(content)\n this.router.navigate(\n [`/app/learn/karma-programs/${content.title}/${content.playListKey}/${content.orgId}/micro-sites`],\n )\n }\n\n get getRandomColors(){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n return this.randomColors[randomIndex1]\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-provider-card',\n templateUrl: './provider-card.component.html',\n styleUrls: ['./provider-card.component.scss']\n})\nexport class ProviderCardComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() randomColorApply: boolean = true\n @Input() isCardLoading: boolean = false\n\n colors = [\n '#EF941D', '#F97440', '#35B5B0', '#9988FF', '#816FEC',\n '#254092', '#926525', '#4F72DF'\n ];\n\n constructor(private router: Router) {}\n\n ngOnInit() {\n this.setRandomColor()\n }\n\n setRandomColor(){\n if(this.widgetData && this.widgetData.content) {\n if(this.randomColorApply){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.colors.length))\n this.widgetData.content['bgColor'] = this.colors[randomIndex1]\n }else {\n this.widgetData.content['bgColor'] = '#1a4ca1'\n }\n }\n }\n \n\n redirectTo(content: any) { \n this.router.navigate([`/app/learn/browse-by/provider/${content.name}/${content.orgId}/micro-sites`])\n }\n\n\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport { WidgetContentService } from '../../../_services/widget-content.service';\n\n@Component({\n selector: 'sb-uic-card-portrait-ext',\n templateUrl: './card-portrait-ext.component.html',\n styleUrls: ['./card-portrait-ext.component.scss']\n})\nexport class CardPortraitExtComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Input() cbPlanMapData: any\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n if (this.widgetData && this.widgetData.content) {\n this.widgetData.content.duration = this.widgetData.content.duration * 60\n }\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n // for telemetry\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\n }\n this.contSvc.changeTelemetryData(contentData)\n // for redirection\n this.contentData.emit(contentData)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n// import { WidgetUserService } from '../../../../_services/widget-user.service';\nimport { ConfigurationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { WidgetContentService } from '../../../../_services/widget-content.service';\n\n@Component({\n selector: 'sb-uic-card-assessment',\n templateUrl: './card-assessment.component.html',\n styleUrls: ['./card-assessment.component.css']\n})\n\n// @Directive({\n// selector: '[callFunctionOnInit]'\n// })\nexport class CardAssessmentComponent implements OnInit {\n @Input() widgetData!: NsContent.IContent;\n @Input() enrollmentMapData: any\n @Output() contentData = new EventEmitter<any>()\n @Input() isCardLoading: boolean = false\n stripData: any = []\n enrollList: any = []\n activeResource: any = []\n defaultThumbnail: any\n defaultSLogo: any\n daysRemaining: number = 0;\n startDate: any\n endDate: any\n daysPending: boolean = false\n daysFinish: boolean = false\n private intervalId: any;\n days: number;\n hours: number;\n minutes: number;\n constructor(private configSvc: ConfigurationsService, private contSvc: WidgetContentService,) { }\n\n ngOnInit(): void {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n }\n }\n\n startCountdown(data: any): void {\n let startDate = data.startDate\n this.updateCountdown(startDate);\n // this.intervalId = setInterval(() => {\n // this.updateCountdown(startDate);\n // }, 1000);\n }\n\n // Method to update the countdown values\n updateCountdown(startDate: any): void {\n let now = new Date().getTime()\n let startingDate: any = new Date(startDate).getTime()\n // startingDate.setHours(startingDate.getHours() - 5);\n // startingDate.setMinutes(startingDate.getMinutes() - 30);\n // startingDate = startingDate.getTime()\n const distance = startingDate - now; \n if (distance > 0) {\n this.daysPending = true\n this.days = Math.floor(distance / (1000 * 60 * 60 * 24));\n this.hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n this.minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\n } else {\n this.daysRemaining = 0;\n this.daysPending = false\n }\n\n }\n\n ngOnDestroy(): void {\n }\n\n getRedirectUrlData(contentData: any) {\n // for telemetry\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\n }\n this.contSvc.changeTelemetryData(contentData)\n // for redirection\n this.contentData.emit(contentData)\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { HttpClient } from '@angular/common/http'\n\nconst urls = {\n DOWNLOAD_CERTIFICATE: (id: string) => `certreg/v2/certs/download/${id}`,\n DOWNLOAD_CERTIFICATE_v2: (id: string) => `apis/protected/v8/cohorts/course/batch/cert/download/${id}`,\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\n\nexport class CertificateService {\n\n constructor(private http: HttpClient) { }\n downloadCertificate(id: string): Observable<any> {\n return this.http.get<any>(urls.DOWNLOAD_CERTIFICATE(id))\n }\n\n downloadCertificate_v2(id: string): Observable<any> {\n return this.http.get<any>(urls.DOWNLOAD_CERTIFICATE_v2(id))\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core'\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'\nimport { TranslateService } from '@ngx-translate/core'\nimport { EventService, MultilingualTranslationsService, WsEvents } from '@sunbird-cb/utils-v2'\nimport { jsPDF } from 'jspdf'\n\n@Component({\n selector: 'sb-uic-certificate-dialog',\n templateUrl: './certificate-dialog.component.html',\n styleUrls: ['./certificate-dialog.component.scss'],\n /* tslint:disable */\n host: { class: 'certificate-inner-dialog-panel' },\n /* tslint:enable */\n})\nexport class CertificateDialogComponent implements OnInit {\n url!: string\n navUrl = ''\n environment: any\n constructor(\n @Inject('environment') environment: any,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n public dialogRef: MatDialogRef<CertificateDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.environment = environment\n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n this.url = this.data.cet\n // tslint:disable-next-line:max-line-length\n this.navUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`\n }\n\n downloadCert() {\n this.raiseIntreactTelemetry('svg')\n const a: any = document.createElement('a')\n a.href = this.data.cet\n a.download = 'Certificate'\n document.body.appendChild(a)\n a.style = 'display: none'\n a.click()\n a.remove()\n }\n\n downloadCertPng() {\n this.raiseIntreactTelemetry('png')\n const uriData = this.data.cet\n const img = new Image()\n img.src = uriData\n img.width = 1820\n img.height = 1000\n img.onload = () => {\n const canvas = document.createElement('canvas');\n [canvas.width, canvas.height] = [img.width, img.height]\n const ctx = canvas.getContext('2d')\n if (ctx) {\n // ctx.imageSmoothingEnabled = true\n ctx.drawImage(img, 0, 0, img.width, img.height)\n const a = document.createElement('a')\n const quality = 1.0 // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality\n a.href = canvas.toDataURL('image/png', quality)\n a.download = 'Certificate'\n a.append(canvas)\n a.click()\n a.remove()\n }\n }\n }\n async downloadCertPdf() {\n this.raiseIntreactTelemetry('pdf')\n const uriData = this.data.cet\n const img = new Image()\n img.src = uriData\n img.width = 1820\n img.height = 1000\n img.onload = () => {\n const canvas = document.createElement('canvas');\n [canvas.width, canvas.height] = [img.width, img.height]\n const ctx = canvas.getContext('2d')\n if (ctx) {\n ctx.drawImage(img, 0, 0, img.width, img.height)\n const quality = 1.0 // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality\n const dataImg = canvas.toDataURL('application/pdf', quality)\n const pdf = new jsPDF('landscape', 'px', 'a4')\n\n // add the image to the PDF\n pdf.addImage(dataImg, 10, 20, 600, 350)\n\n // download the PDF\n pdf.save('Certificate.pdf')\n }\n }\n }\n\n shareCert() {\n this.raiseShareIntreactTelemetry('share')\n return window.open(this.navUrl, '_blank')\n }\n\n raiseShareIntreactTelemetry(type?: string, action?: string) {\n this.events.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n id: `${type}-${WsEvents.EnumInteractSubTypes.CERTIFICATE}`,\n subType: action && action,\n },\n {\n id: this.data.certId, // id of the certificate\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\n }\n )\n }\n\n raiseIntreactTelemetry(action?: string) {\n this.events.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n id: 'download-certificate',\n subType: action && action,\n },\n {\n id: this.data.certId, // id of the certificate\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\n }\n )\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatDialog, MatSnackBar } from '@angular/material'\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport { WidgetContentService } from '../../../_services/widget-content.service';\nimport { ConfigurationsService, EventService, WsEvents } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { CertificateService } from '../../../_services/certificate.service';\nimport { CertificateDialogComponent } from '../../dialog-components/certificate-dialog/certificate-dialog.component';\n\n@Component({\n selector: 'sb-uic-card-progress-portrait-lib',\n templateUrl: './card-progress-portrait-lib.component.html',\n styleUrls: ['./card-progress-portrait-lib.component.scss']\n})\nexport class CardProgressPortraitLibComponent implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Input() cbPlanMapData: any\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n downloadCertificateLoading: boolean = false\n\n constructor(\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private events: EventService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,\n private certificateService: CertificateService,\n private dialog: MatDialog,\n ) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n // for telemetry\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\n }\n this.contSvc.changeTelemetryData(contentData)\n // for redirection\n this.contentData.emit(contentData)\n }\n\n translateLabels(label: string, type: any, subtype?: any) {\n return this.langtranslations.translateLabelWithoutspace(label, type, subtype)\n }\n raiseTelemetry() {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n downloadCertificate(certificateData: any) {\n this.events.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n id: 'view-certificate',\n subType: WsEvents.EnumInteractSubTypes.CERTIFICATE,\n },\n {\n id: certificateData.issuedCertificates[0].identifier, // id of the certificate\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\n })\n if(certificateData.issuedCertificates.length > 0) {\n this.downloadCertificateLoading = true\n let certData: any = certificateData.issuedCertificates[0]\n this.certificateService.downloadCertificate_v2(certData.identifier).subscribe((res: any)=>{\n this.downloadCertificateLoading = false\n const cet = res.result.printUri\n this.dialog.open(CertificateDialogComponent, {\n width: '1300px',\n data: { cet, certId: certData.identifier },\n })\n })\n } else {\n this.downloadCertificateLoading = false\n }\n }\n\n}\n","import { Component, HostBinding, Input, OnChanges } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-content-progress',\n templateUrl: './content-progress.component.html',\n styleUrls: ['./content-progress.component.scss'],\n /* tslint:disable */\n host: {\n // Sets the role for this component to \"progressbar\"\n role: 'progressbar',\n // Sets the minimum and maximum values for the progressbar role.\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n 'title': 'progres',\n // Binding that updates the current value of the progressbar.\n '[attr.aria-valuenow]': 'progress',\n },\n /* tslint:enable */\n})\nexport class ContentProgressComponent implements OnChanges {\n @Input()\n contentId = ''\n\n @Input()\n progress = 0\n\n @Input()\n progressType = ''\n\n @Input()\n forPreview = false\n\n @Input()\n className = ''\n @Input()\n customClassName: any = 'accent-progress'\n\n rendom = Math.random()\n @HostBinding('id')\n public id = `progress_${Math.random()}`\n constructor(\n // private progressSvc: ContentProgressService\n ) {\n if (this.contentId) {\n this.id = this.contentId\n }\n }\n\n ngOnChanges() {\n if (this.contentId && !this.progress && !this.forPreview) {\n // this.progressSvc.getProgressFor(this.contentId).subscribe(data => {\n // this.progress = data\n // if (this.progress) {\n // this.progress = Math.round(this.progress * 10000) / 100\n // }\n // })\n }\n\n if (this.progress) {\n if (this.progressType === 'percentage') {\n this.progress = this.progress\n } else {\n this.progress = Math.round(this.progress * 10000) / 100\n }\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { ContentProgressComponent } from './content-progress.component'\nimport { MatProgressBarModule, MatTooltipModule } from '@angular/material'\n\n@NgModule({\n declarations: [ContentProgressComponent],\n imports: [\n CommonModule,\n MatProgressBarModule,\n MatTooltipModule,\n ],\n exports: [ContentProgressComponent],\n})\nexport class ContentProgressModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CertificateDialogComponent } from './certificate-dialog/certificate-dialog.component';\nimport { MatCardModule, MatDialogModule, MatIconModule, MatMenuModule } from '@angular/material';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { HttpClient } from '@angular/common/http';\nimport { PipeSafeSanitizerModule } from '@sunbird-cb/utils-v2';\n\n\n\n@NgModule({\n declarations: [\n CertificateDialogComponent\n ],\n imports: [\n CommonModule,\n MatMenuModule,\n MatCardModule,\n MatIconModule,\n MatDialogModule,\n PipeSafeSanitizerModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports:[\n CertificateDialogComponent\n ],\n entryComponents: [CertificateDialogComponent],\n})\nexport class DialogComponentsModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { WidgetContentService } from '../../../_services/widget-content.service';\nimport { Router } from '@angular/router';\n\n\n@Component({\n selector: 'sb-uic-card-mdo-channel-v1',\n templateUrl: './card-mdo-channel-v1.component.html',\n styleUrls: ['./card-mdo-channel-v1.component.scss']\n})\nexport class CardMdoChannelV1Component implements OnInit {\n @Input() widgetData!: NsContent.IContent;\n @Output() channelData = new EventEmitter<any>()\n @Output() emitTelemetry = new EventEmitter<any>()\n @Input() isCardLoading: boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,\n public router: Router) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n raiseTelemetry(contentData: any) {\n this.emitTelemetry.emit(contentData)\n if (this.widgetData) {\n contentData['typeOfTelemetry'] = 'mdo-channel'\n }\n this.contSvc.changeTelemetryData(contentData)\n }\n channelClick(channeldata:any) {\n this.channelData.emit(channeldata)\n }\n\n redirectTo(content: any) {\n this.router.navigate([`/app/learn/mdo-channels/${content.orgName}/${content.identifier}/micro-sites`])\n }\n\n}\n","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-avatar-photo',\n templateUrl: './avatar-photo-lib.component.html',\n styleUrls: ['./avatar-photo-lib.component.scss'],\n})\nexport class AvatarPhotoLibComponent implements OnInit, OnChanges {\n @Input() datalen: any\n\n @Input()\n public photoUrl!: string\n\n @Input()\n public name!: string\n @Input() public size = ''\n @Input() public defaulfColor = ''\n @Input() randomColor = false\n @Input() initials?: string\n @Input() showBadge = false\n public showInitials = false\n public circleColor!: string\n random = Math.random().toString(36).slice(2)\n\n // public initials!: string\n\n private colors = [\n '#EB7181', // red\n '#306933', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n ]\n\n private randomcolors = [\n '#EB7181', // red\n '#006400', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n ]\n\n ngOnInit() {\n if (!this.photoUrl) {\n this.showInitials = true\n if (!this.initials) {\n this.createInititals()\n }\n if (this.datalen === 1) {\n if(this.defaulfColor) {\n this.randomcolors = [\n this.defaulfColor\n ]\n } else {\n this.randomcolors = [\n '#006400', // green\n ]\n }\n }\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\n this.circleColor = this.colors[randomIndex]\n if (this.randomColor) {\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomcolors.length))\n this.circleColor = this.randomcolors[randomIndex1]\n }\n }\n\n }\n ngOnChanges(change: SimpleChanges) {\n if (change.name.currentValue !== change.name.previousValue && !change.name.firstChange) {\n this.createInititals()\n }\n }\n get userInitials() {\n return this.initials\n }\n private createInititals(): void {\n let initials = ''\n const array = `${this.name} `.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < this.name.length; i += 1) {\n if (this.name.charAt(i) === ' ') {\n continue\n }\n\n if (this.name.charAt(i) === this.name.charAt(i)) {\n initials += this.name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n this.initials = initials.toUpperCase()\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { RouterModule } from '@angular/router'\nimport { MatButtonModule, MatIconModule, MatMenuModule, MatRippleModule } from '@angular/material'\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2'\nimport { AvatarPhotoLibComponent } from './avatar-photo-lib.component'\n\n@NgModule({\n declarations: [AvatarPhotoLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatRippleModule,\n SbUiResolverModule,\n ],\n exports: [AvatarPhotoLibComponent],\n entryComponents: [AvatarPhotoLibComponent],\n})\nexport class AvatarPhotoLibModule { }\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule, MatCardModule, MatIconModule, MatProgressSpinnerModule, MatTooltipModule } from '@angular/material';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CardResourceComponent } from './card-resource/card-resource.component';\r\nimport { CardsComponent } from './cards.component';\r\nimport { CardPortraitComponent } from './card-portrait/card-portrait.component';\r\nimport { PipePublicURLModule } from '../../_pipes/pipe-public-URL/pipe-public-URL.module';\r\nimport { ObjectToArrayPipeModule } from '../../_pipes/object-to-array/object-to-array.pipe.module';\r\nimport { DisplayContentTypeLibModule } from '../display-content-type-lib/display-content-type-lib.module';\r\nimport { DefaultThumbnailModule } from '../../_directives/default-thumbnail/default-thumbnail.module';\r\nimport { PipeDurationTransformModule } from '../../_pipes/pipe-duration-transform/pipe-duration-transform.module';\r\nimport { CardUserComponent } from './card-user/card-user.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { CardLandscapeComponent } from './card-landscape/card-landscape.component';\r\nimport { CardWideComponent } from './card-wide/card-wide.component';\r\nimport { CardMDOChannelComponent } from './card-mdo-channel/card-mdo-channel.component';\r\nimport { CardWideV2Component } from './card-wide-v2/card-wide-v2.component';\r\nimport { CardKarmaProgramsComponent } from './card-karma-programs/card-karma-programs.component';\r\nimport { CardKarmaProgramsV2Component } from './card-karma-programs-v2/card-karma-programs-v2.component';\r\nimport { ProviderCardComponent } from './provider-card/provider-card.component';\r\nimport { CardPortraitExtComponent } from './card-portrait-ext/card-portrait-ext.component';\r\nimport { CardAssessmentComponent } from './card-assessment/card-assessment/card-assessment.component';\r\nimport { CardProgressPortraitLibComponent } from './card-progress-portrait-lib/card-progress-portrait-lib.component';\r\n// import { ContentProgressComponent } from './content-progress/content-progress.component';\r\nimport { ContentProgressModule } from './../content-progress/content-progress.module';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core'\r\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DialogComponentsModule } from '../dialog-components/dialog-components.module';\r\nimport { CardMdoChannelV1Component } from './card-mdo-channel-v1/card-mdo-channel-v1.component';\r\nimport { AvatarPhotoLibModule } from '../avatar-photo-lib/avatar-photo-lib.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CardResourceComponent,\r\n CardsComponent,CardPortraitComponent,\r\n CardUserComponent,\r\n CardLandscapeComponent,\r\n CardWideComponent,\r\n CardMDOChannelComponent,\r\n CardWideV2Component,\r\n CardKarmaProgramsComponent,\r\n CardKarmaProgramsV2Component,\r\n ProviderCardComponent,\r\n CardPortraitExtComponent,\r\n CardAssessmentComponent,\r\n CardProgressPortraitLibComponent,\r\n CardMdoChannelV1Component\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatCardModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n RouterModule,\r\n PipePublicURLModule,\r\n ObjectToArrayPipeModule,\r\n DisplayContentTypeLibModule,\r\n DefaultThumbnailModule,\r\n PipeDurationTransformModule,\r\n SkeletonLoaderLibModule,\r\n MatProgressSpinnerModule,\r\n ContentProgressModule,\r\n DialogComponentsModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient],\r\n },\r\n }),\r\n AvatarPhotoLibModule\r\n ],\r\n entryComponents:[CardsComponent],\r\n exports: [\r\n CardsComponent,\r\n CardResourceComponent,\r\n CardPortraitComponent, \r\n CardLandscapeComponent,\r\n CardUserComponent,\r\n CardWideComponent,\r\n CardMDOChannelComponent,\r\n CardWideV2Component,\r\n CardKarmaProgramsComponent,\r\n CardKarmaProgramsV2Component,\r\n CardPortraitExtComponent,\r\n ],\r\n})\r\nexport class CardsModule { }\r\n","import { NsWidgetResolver } from '@sunbird-cb/resolver-v2'\nimport { ROOT_WIDGET_CONFIG } from './consumption.config'\n// Components\nimport { CardsComponent } from './_common/cards/cards.component'\nimport { CardsModule } from './_common/cards/cards.module'\n\n\nexport const WIDGET_REGISTERED_LIB_MODULES = [\n CardsModule\n]\n\nexport const WIDGET_REGISTRATION_LIB_CONFIG: NsWidgetResolver.IRegistrationConfig[] = [\n {\n widgetType: ROOT_WIDGET_CONFIG.card._type,\n widgetSubType: ROOT_WIDGET_CONFIG.card.cardResource,\n component: CardsComponent,\n }\n]\n","import { NsWidgetResolver } from '@sunbird-cb/resolver-v2';\nimport { NSSearch } from '../../../_models/widget-search.model';\nimport { NsContent } from '../../../_models/widget-content.model';\nimport { NsCardContent } from '../../../_models/card-content.model';\n\nexport namespace NsContentStripWithFacets {\n export interface IContentStripMultiple {\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n loader?: boolean;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n strips: IContentStripUnit[];\n isChannelStrip?: boolean;\n }\n export interface IContentStripUnit {\n stripRequestFor?: string;\n onTabClickRequest?: boolean;\n hideViewMoreUrl?: boolean;\n type: string;\n disableTranslate?: any;\n key: string;\n title: string;\n customeClass?: string;\n nodataMsg?: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean,\n dotsAlign?: \"right\" | \"left\",\n arrowsPlacement?: \"bottom-right\" | \"bottom-center\" | \"bottom-left\" | \"middle-inline\",\n responsive?: {\n showNavs: boolean,\n showDots: boolean,\n dotsAlign?: \"right\" | \"left\",\n arrowsPlacement?: \"bottom-right\" | \"bottom-center\" | \"bottom-left\" | \"middle-inline\",\n };\n };\n tabs?: NsContentStripWithFacets.IContentStripTab[] | undefined;\n titleDescription?: string;\n name?: string;\n mode?: string |'accordion';\n info?: IStripInfo;\n logo?: string;\n preWidgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n postWidgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripConfig?: IStripConfig;\n canHideStrip?: boolean;\n showStrip: boolean;\n filters?: any[];\n selectAll?: boolean | null;\n request?: {\n requestBody: any\n playlistRead: any;\n playlistSearch?: any;\n ciosContent?:any;\n search?: NSSearch.ISearchRequest\n searchV6?: NSSearch.ISearchV6Request\n topContent?: any\n featureContent?: any\n bookmarkRead?: any\n enrollmentList?: any\n cbpList?: any,\n apiUrl: string\n searchRegionRecommendation?: NSSearch.ISearchOrgRegionRecommendationRequest\n api?: IStripRequestApi\n networkApi?: INetworkRequestApi\n ids?: string[]\n recommendedCourses?: any,\n masterCompetency?: any\n trendingSearch?: any\n };\n searchV6Type?: 'KB' | 'Collections' | 'searchQuery' | null;\n stripBackground?: string;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n loader?: boolean;\n loaderWidgets?: any;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n refreshEvent?: Record<'eventType' | 'from', string>;\n fetchLikes?: boolean;\n secondaryHeading?: any;\n viewMoreUrl?: {\n queryParams?: any\n viewMoreText: string\n path: string\n };\n data?: [];\n }\n\n export interface IStripRequestApi {\n path: string;\n queryParams?: {\n pageNo?: number\n pageSize?: number\n pageState?: string\n sourceFields?: string\n };\n }\n export interface INetworkRequestApi {\n path: string;\n data?: any;\n }\n export interface IStripInfo {\n mode: 'below' | 'popup' | 'modal';\n visibilityMode?: 'hidden' | 'visible';\n icon: {\n icon: string\n scale: number\n style?: any // added for UI\n };\n widget: NsWidgetResolver.IRenderConfigWithAnyData;\n }\n interface IStripConfig {\n // card subType key is used to determine the content Card display type\n cardSubType: NsCardContent.TCardSubType;\n // to show view more card for a search strip\n postCardForSearch?: boolean;\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n contentTags?: IContentTags;\n hideShowAll?: boolean;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField: string;\n }\n export interface IContentStripResponseApi {\n contents: NsContent.IContent[];\n hasMore?: boolean;\n pageState?: string;\n totalHits?: number;\n }\n\n export interface IContentStripTab {\n pillsData?: any;\n label: string;\n value: string;\n showTabDataCount: boolean;\n requestRequired?: boolean;\n computeDataOnClick?: boolean;\n computeDataOnClickKey?: string;\n request?: any;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n maxWidgets?: number;\n fetchTabStatus?: string;\n nodataMsg?: string;\n tabLoading?: boolean;\n facets?: any;\n }\n\n \n}\n\nexport enum ApiRequestFor {\n SEARCH= 'search'\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsContentStripWithFacets, ApiRequestFor } from './content-strip-facet-filter.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentService } from '../../../_services/widget-content.service';\nimport { NsContent } from '../../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n WsEvents,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserService } from '../../../_services/widget-user.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { NsCardContent } from '../../../_models/card-content-v2.model';\nimport { ITodayEvents } from '../../../_models/event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\nimport { FormBuilder } from '@angular/forms';\n\ninterface IStripUnitContentData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n hideViewMoreUrl?: boolean;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsContentStripWithFacets.IContentStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsContentStripWithFacets.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n request?: any\n \n}\n\n\n@Component({\n selector: 'sb-uic-content-strip-facet-filter',\n templateUrl: './content-strip-facet-filter.component.html',\n styleUrls: ['./content-strip-facet-filter.component.scss']\n})\nexport class ContentStripFacetFilterComponent extends WidgetBaseComponent\nimplements\nOnInit,\nOnDestroy,\nNsWidgetResolver.IWidgetData<NsContentStripWithFacets.IContentStripMultiple> {\n @Input() widgetData!: NsContentStripWithFacets.IContentStripMultiple;\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() viewAllResponse = new EventEmitter<any>()\n @Output() telemtryResponse = new EventEmitter<any>()\n @Input() providerId : any = ''\n @Input() emitViewAll : boolean = false\n @Input() channnelName: any = ''\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n enrollmentMapData: any\n facetForm: any\n constructor(\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n public router: Router,\n private userSvc: WidgetUserService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private _fb: FormBuilder\n ) {\n super();\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en');\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n this.environment = environment\n }\n ngOnDestroy(): void {\n \n }\n\n ngOnInit() {\n this.initData();\n this.contentSvc.telemetryData$.subscribe((data: any) => {\n this.telemtryResponse.emit(data)\n })\n this.facetForm = this._fb.group({\n org: ['0']\n })\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n if (this.checkForEmptyWidget(strip)) {\n this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n \n private fetchStripFromRequestData(\n strip: NsContentStripWithFacets.IContentStripUnit,\n calculateParentStatus = true,\n ) {\n // setting initial values\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\n this.processStrip(strip, [], 'fetching', false, null);\n if(strip && strip.stripRequestFor === ApiRequestFor.SEARCH && !strip.onTabClickRequest) {\n this.fetchFromSearch(strip, calculateParentStatus);\n }\n }\n\n private transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n private async processStrip(\n strip: NsContentStripWithFacets.IContentStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsContentStripWithFacets.IContentStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n hideViewMoreUrl:strip.hideViewMoreUrl || false,\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsContentStripWithFacets.IContentStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.requestBody && Object.keys(strip.request.requestBody).length))\n ) {\n return true;\n }\n return false;\n }\n // strip settings\n toggleInfo(data: IStripUnitContentData) {\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\n if (stripInfo) {\n if (stripInfo.mode !== 'below') {\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\n stripInfo.mode = 'below';\n }\n if (stripInfo.mode === 'below') {\n this.stripsResultDataMap[data.key].stripInfo = {\n ...stripInfo,\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\n };\n }\n }\n }\n\n raiseTelemetry(stripData: any){\n this.telemtryResponse.emit(stripData)\n }\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n // selected pills data\n getSelectedPillIndex(tabdata: any, tabIndex: any) {\n if(tabdata.pillsData && tabdata.pillsData.length) {\n let index = tabdata.pillsData.findIndex((pill: any) => {\n return pill.selected\n });\n return index\n }\n return 0\n }\n\n getdata(data: IStripUnitContentData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, pillIndex: any, stripMap: IStripUnitContentData, stripKey: string) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const data: WsEvents.ITelemetryTabData = {\n label: `${tabEvent.tab.textLabel}`,\n index: tabEvent.index,\n };\n this.eventSvc.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\n id: `${_.camelCase(data.label)}-tab`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n );\n\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index].pillsData[pillIndex];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.value,\n pillSelected: currentPillFromMap.value,\n };\n }\n\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\n if (currentPillFromMap.request.searchV6) {\n // this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, currentTabFromMap, true);\n }\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n this.resetFilter(stripMap, tabEvent.index ,pillIndex)\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabEvent.index].pillsData)\n stripMap.tabs[tabEvent.index].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n }\n }\n\n pillClicked(event: any, stripMap: IStripUnitContentData, stripKey: any, pillIndex: any, tabIndex: any) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex];\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex].pillsData[pillIndex];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.value,\n pillSelected: currentPillFromMap.value,\n };\n }\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentPillFromMap.request.searchV6) {\n // this.getTabDataByNewReqSearchV6(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\n } else if (currentPillFromMap.request.trendingSearch) {\n // this.getTabDataByNewReqTrending(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\n }\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n // stripMap.tabs[tabEvent.index].tabLoading = false;\n // }\n\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n this.resetFilter(stripMap, tabIndex ,pillIndex)\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n }\n }\n\n resetSelectedPill(pillData: any){\n if(pillData && pillData.length){\n pillData.forEach((pill: any) => {\n pill['selected'] = false\n });\n }\n }\n\n getTabDataByfilter(\n strip: NsContentStripWithFacets.IContentStripUnit,\n currentTab: NsContentStripWithFacets.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n // tslint:disable:no-console\n console.log('strip -- ', strip);\n // tslint:disable:no-console\n console.log('currentTab -- ', currentTab);\n // tslint:disable:no-console\n console.log('calculateParentStatus-- ', calculateParentStatus);\n // TODO: Write logic for individual filter if passed in config\n // add switch case based on config key passed\n }\n\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n // translate labes\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\n if(this.emitViewAll) {\n this.viewAllResponse.emit(stripData)\n } else {\n this.router.navigate([path], { queryParams: queryParamsData })\n }\n }\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n getContineuLearningLenth(data: IStripUnitContentData) {\n return data.widgets ? data.widgets.length : 0;\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n checkCondition(wData: NsContentStripWithFacets.IContentStripMultiple, data: IStripUnitContentData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitContentData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n return returnValue;\n }\n\n getLength(data: IStripUnitContentData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n let tabWithMaxWidgets: any = {}\n data.tabs.forEach((tab: any)=>{\n if(tab.pillsData && tab.pillsData.length){\n tabWithMaxWidgets = tab.pillsData.reduce(\n (prev: any, current: any) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n\n }\n })\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n isStripShowing(data: any) {\n let count = 0;\n \n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n // console.log('data.key', data, data.key, data.widgets);\n return data.showStrip;\n }\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n\n\n // search api with facets\n async postRequestMethod(strip: NsContentStripWithFacets.IContentStripUnit,\n request: NsContentStripWithFacets.IContentStripUnit['request'],\n apiUrl: string,\n calculateParentStatus: boolean\n ): Promise<any> {\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.postApiMethod(apiUrl, request).subscribe(results => {\n if (results.result && results.result.content) {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f: {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n }\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n async fetchFromSearch(strip: NsContentStripWithFacets.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && Object.keys(strip.request.requestBody).length) {\n try {\n const response = await this.postRequestMethod(strip, strip.request.requestBody, strip.request.apiUrl, calculateParentStatus);\n let tabIndex=0\n let pillIndex= 0\n if (response.results && response.results.result) {\n this.mapAllDataWithFacets(strip, response.results.result.content, response.results.result.facets, calculateParentStatus)\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n // if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n // const allTabs = this.stripsResultDataMap[strip.key].tabs;\n // const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\n // this.resetSelectedPill(allPills)\n // if (allTabs && allTabs.length && allTabs[tabIndex]) {\n // if(allPills && allPills.length && allPills[pillIndex]){\n // allPills[pillIndex] = {\n // ...allPills[pillIndex],\n // widgets,\n // fetchTabStatus: 'done',\n // selected: true\n // };\n // }\n // allTabs[tabIndex] = {\n // ...allTabs[tabIndex],\n // widgets,\n // fetchTabStatus: 'done',\n // };\n // tabResults = allTabs;\n // }\n // }\n // this.processStrip(\n // strip,\n // widgets,\n // 'done',\n // calculateParentStatus,\n // response.viewMoreUrl,\n // tabResults // tabResults as widgets\n // );\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n \n }\n }\n\n mapAllDataWithFacets(strip :any, content : any, facets:any, calculateParentStatus: any) {\n console.log(strip, content)\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n let facet: any = []\n allTabs.forEach((ele: any)=> {\n ele['fetchTabStatus']= 'done'\n let filteredData = content.filter((contEle: any) => contEle.nlwUserExp.includes(ele.value))\n // filteredData.forEach(element => {\n // facet = [...facet,..._.difference(element.nlwOrgs ,facet)];\n // });\n ele['widgets'] = filteredData\n ele.pillsData.forEach((pill: any) => {\n if(pill.value === 'all') {\n pill['widgets'] = this.transformContentsToWidgets(filteredData, strip);\n pill['fetchTabStatus']= 'done'\n } else if(pill.value === 'course') {\n let contentFilteredData = filteredData.filter((contEle: any) => contEle.courseCategory.toLowerCase() === pill.value)\n pill['widgets'] = this.transformContentsToWidgets(contentFilteredData, strip);\n pill['fetchTabStatus']= 'done'\n } else {\n let contentFilteredData = filteredData.filter((contEle: any) => contEle.courseCategory.toLowerCase() !== 'course')\n pill['widgets'] = this.transformContentsToWidgets(contentFilteredData, strip);\n pill['fetchTabStatus']= 'done'\n }\n })\n\n // ele['facets'] = [{\n // name:'nlwOrgs',\n // values: facet\n // }]\n ele['facets'] = facets\n })\n strip.tabs[0].pillsData[0].fetchTabStatus = 'done';\n strip.tabs[0].pillsData[0].tabLoading = false;\n strip.showOnLoader = false;\n this.resetSelectedPill(strip.tabs[0].pillsData)\n strip.tabs[0].pillsData[0]['selected']=true\n this.processStrip(\n strip,\n [],\n 'done',\n calculateParentStatus,\n strip.viewMoreUrl,\n allTabs // tabResults as widgets\n );\n }\n\n private transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithFacets.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n getorgData(eventData: any, stripMap: any, tabIndex: any) {\n console.log(eventData)\n let selectedValue = eventData.target.value\n let pillIndex: any = this.getSelectedPillIndex(stripMap.tabs[tabIndex], tabIndex)\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n let returnedValues = stripMap.tabs[tabIndex].widgets.filter((ele: any) => {\n var words = ele.nlwOrgs.map(v => v.toLowerCase());\n return words.includes(selectedValue)\n })\n stripMap.tabs[tabIndex].pillsData[pillIndex]['widgets'] = this.transformContentsToWidgets(returnedValues, stripMap);\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n\n resetFilter(stripMap: any, tabIndex: any, pillIndex: any) {\n // let selectedValue = eventData.target.value\n if(pillIndex) {\n pillIndex = this.getSelectedPillIndex(stripMap.tabs[tabIndex], tabIndex)\n }\n this.facetForm.reset({\n org: 0\n });\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n // let returnedValues = stripMap.tabs[tabIndex].widgets.filter((ele: any) => {\n // var words = ele.nlwOrgs.map(v => v.toLowerCase());\n // return words.includes(selectedValue)\n // })\n let contentData: any = stripMap.tabs[tabIndex].widgets || []\n stripMap.tabs[tabIndex].pillsData[pillIndex]['widgets'] = this.transformContentsToWidgets(contentData, stripMap);\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsContentStripWithTabsAndPills } from './content-strip-with-tabs-pills.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentService } from '../../../_services/widget-content.service';\nimport { NsContent } from '../../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n WsEvents,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserService } from '../../../_services/widget-user.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { NsCardContent } from '../../../_models/card-content-v2.model';\nimport { ITodayEvents } from '../../../_models/event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\n\ninterface IStripUnitContentData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsContentStripWithTabsAndPills.IContentStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsContentStripWithTabsAndPills.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n request?: any\n \n}\n\n\n@Component({\n selector: 'sb-uic-content-strip-with-tabs-pills',\n templateUrl: './content-strip-with-tabs-pills.component.html',\n styleUrls: ['./content-strip-with-tabs-pills.component.scss']\n})\nexport class ContentStripWithTabsPillsComponent extends WidgetBaseComponent\nimplements\nOnInit,\nOnDestroy,\nNsWidgetResolver.IWidgetData<NsContentStripWithTabsAndPills.IContentStripMultiple> {\n @Input() widgetData!: NsContentStripWithTabsAndPills.IContentStripMultiple;\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() viewAllResponse = new EventEmitter<any>()\n @Output() telemtryResponse = new EventEmitter<any>()\n @Input() providerId : any = ''\n @Input() emitViewAll : boolean = false\n @Input() channnelName: any = ''\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n enrollmentMapData: any\n\n constructor(\n // private contentStripSvc: ContentStripNewMultipleService,\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n public router: Router,\n private userSvc: WidgetUserService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService\n ) {\n super();\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en');\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n this.environment = environment\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n this.contentSvc.telemetryData$.subscribe((data: any) => {\n this.telemtryResponse.emit(data)\n })\n\n \n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n if (this.checkForEmptyWidget(strip)) {\n this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n \n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n // console.log('data.key', data, data.key, data.widgets);\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitContentData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsContentStripWithTabsAndPills.IContentStripMultiple, data: IStripUnitContentData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitContentData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitContentData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitContentData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n let tabWithMaxWidgets: any = {}\n data.tabs.forEach((tab: any)=>{\n if(tab.pillsData && tab.pillsData.length){\n tabWithMaxWidgets = tab.pillsData.reduce(\n (prev: any, current: any) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n\n }\n })\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n\n private getFiltersFromArray(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n private transformSearchV6FiltersV2(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n checkForDateFilters(filters: any) {\n let userData: any;\n if (this.configSvc.userProfile) {\n userData = this.configSvc.userProfile;\n }\n\n if (filters && filters.hasOwnProperty('batches.endDate')) {\n // tslint:disable-next-line\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\n // tslint:disable-next-line\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\n } else if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n if(this.providerId) {\n filters.organisation = this.providerId;\n } else {\n filters.organisation = userData && userData.rootOrgId;\n\n if (filters && filters.hasOwnProperty('designation')) {\n filters.designation = userData.professionalDetails.length > 0 ?\n userData.professionalDetails[0].designation : '';\n }\n }\n \n }\n return filters;\n }\n\n private fetchStripFromRequestData(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n calculateParentStatus = true,\n ) {\n // setting initial values\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\n this.processStrip(strip, [], 'fetching', false, null);\n this.fetchFromSearchV6(strip, calculateParentStatus);\n this.fetchForYouData(strip, calculateParentStatus)\n this.fetchAllCbpPlans(strip, calculateParentStatus);\n \n // this.enrollInterval = setInterval(() => {\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\n // }, 1000)\n }\n\n toggleInfo(data: IStripUnitContentData) {\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\n if (stripInfo) {\n if (stripInfo.mode !== 'below') {\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\n stripInfo.mode = 'below';\n }\n if (stripInfo.mode === 'below') {\n this.stripsResultDataMap[data.key].stripInfo = {\n ...stripInfo,\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\n };\n }\n }\n }\n\n private transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n private transformEventsToWidgets(\n contents: ITodayEvents[],\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n ) {\n this.eventSvc.setEventListData(contents);\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n private transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n private async processStrip(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsContentStripWithTabsAndPills.IContentStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsContentStripWithTabsAndPills.IContentStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip && strip.tabs.length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n\n getTabDataByfilter(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n // tslint:disable:no-console\n console.log('strip -- ', strip);\n // tslint:disable:no-console\n console.log('currentTab -- ', currentTab);\n // tslint:disable:no-console\n console.log('calculateParentStatus-- ', calculateParentStatus);\n // TODO: Write logic for individual filter if passed in config\n // add switch case based on config key passed\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n return returnValue;\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n raiseTelemetry(stripData: any){\n this.telemtryResponse.emit(stripData)\n }\n\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\n if(this.emitViewAll) {\n this.viewAllResponse.emit(stripData)\n } else {\n this.router.navigate([path], { queryParams: queryParamsData })\n }\n }\n\n // new code writting from here====new====\n\n fetchForYouData(strip: NsContentStripWithTabsAndPills.IContentStripUnit, calculateParentStatus = true) {\n if (strip && strip.type === 'forYou') {\n if (strip.tabs && strip.tabs.length) {\n const firstTab = strip.tabs[0];\n const pillData = firstTab.pillsData[0]\n if (pillData.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allPills = this.stripsResultDataMap[strip.key].tabs[0].pillsData;\n const currenPillsFromMap = (allPills && allPills.length && allPills[0]) as NsContentStripWithTabsAndPills.IContentStripTab;\n this.getTabDataByNewReqTrending(strip, 0, 0, currenPillsFromMap, calculateParentStatus);\n if (this.stripsResultDataMap[strip.key] && currenPillsFromMap) {\n this.stripsResultDataMap[strip.key].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[strip.key].viewMoreUrl.queryParams,\n key:strip.key,\n tabSelected: firstTab.value,\n pillSelected: pillData.value,\n };\n }\n }\n }\n \n }\n }\n }\n\n async fetchFromSearchV6(strip: NsContentStripWithTabsAndPills.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n if (strip.request &&\n strip.request.searchV6 &&\n strip.request.searchV6.request &&\n strip.request.searchV6.request.filters) {\n originalFilters = strip.request.searchV6.request.filters;\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\n strip.request.searchV6.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabsAndPills.IContentStripTab;\n\n this.getTabDataByNewReqSearchV6(strip, 0, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content) {\n \n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n \n \n } else if (response.results.result.Event) {\n this.processStrip(\n strip,\n this.transformEventsToWidgets(response.results.result.Event, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n async getTabDataByNewReqTrending(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n tabIndex: number,\n pillIndex: number,\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\n let tabResults: any[] = [];\n if (response && response.results && response.results.response) {\n const content = response.results.response[currentTab.value] || [];\n const widgets = this.transformContentsToWidgets(content, strip);\n \n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\n this.resetSelectedPill(allPills)\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n if(allPills && allPills.length && allPills[pillIndex]){\n allPills[pillIndex] = {\n ...allPills[pillIndex],\n widgets,\n fetchTabStatus: 'done',\n selected: true\n };\n }\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\n this.resetSelectedPill(allPills)\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n if(allPills && allPills.length && allPills[pillIndex]){\n allPills[pillIndex] = {\n ...allPills[pillIndex],\n widgets:[],\n fetchTabStatus: 'done',\n selected: true\n };\n }\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets:[],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n\n async getTabDataByNewReqSearchV6(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n tabIndex: number,\n pillIndex: number,\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\n if (response && response.results) {\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\n this.resetSelectedPill(allPills)\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n if(allPills && allPills.length && allPills[pillIndex]){\n allPills[pillIndex] = {\n ...allPills[pillIndex],\n widgets,\n fetchTabStatus: 'done',\n selected: true\n };\n }\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async trendingSearchRequest(strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n request: NsContentStripWithTabsAndPills.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.trendingSearch) {\n // check for the request if it has dynamic values]\n if (request.trendingSearch.request.filters.organisation &&\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\n ) {\n let userRootOrgId;\n if (this.configSvc.userProfile) {\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\n }\n request.trendingSearch.request.filters.organisation = userRootOrgId;\n }\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\n const showViewMore = Boolean(\n results.result &&\n strip.request &&\n results.result[strip.request.trendingSearch.responseKey] &&\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\n strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.trendingSearch &&\n request.trendingSearch.request &&\n request.trendingSearch.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n\n let proccesedResult: any = []\n if (results && results.response && results.response.certifications) {\n results.response.certifications.map((result: any) => {\n if (result.source === this.channnelName) {\n proccesedResult.push(result)\n }\n })\n results = {response: {certifications: proccesedResult}}\n }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n if (error.error && error.error.status === 400) {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\n reject(error);\n },);\n }\n });\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, pillIndex: any, stripMap: IStripUnitContentData, stripKey: string) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const data: WsEvents.ITelemetryTabData = {\n label: `${tabEvent.tab.textLabel}`,\n index: tabEvent.index,\n };\n this.eventSvc.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\n id: `${_.camelCase(data.label)}-tab`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n );\n\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index].pillsData[pillIndex];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.value,\n pillSelected: currentPillFromMap.value,\n };\n }\n\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentPillFromMap.request.searchV6) {\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, 0, currentPillFromMap, true);\n } else if (currentPillFromMap.request.trendingSearch) {\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, 0, currentPillFromMap, true);\n }\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n // stripMap.tabs[tabEvent.index].tabLoading = false;\n // }\n\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\n } else {\n // this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n // setTimeout(() => {\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n // stripMap.tabs[tabEvent.index].tabLoading = false;\n // stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\n // stripMap.showOnLoader = false;\n // }\n // }, 200);\n }\n }\n }\n\n pillClicked(event: any, stripMap: IStripUnitContentData, stripKey: any, pillIndex: any, tabIndex: any) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex];\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex].pillsData[pillIndex];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.value,\n pillSelected: currentPillFromMap.value,\n };\n }\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentPillFromMap.request.searchV6) {\n this.getTabDataByNewReqSearchV6(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\n } else if (currentPillFromMap.request.trendingSearch) {\n this.getTabDataByNewReqTrending(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\n }\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n // stripMap.tabs[tabEvent.index].tabLoading = false;\n // }\n\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n }\n }\n\n async searchV6Request(strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n request: NsContentStripWithTabsAndPills.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.searchV6) {\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.searchV6 &&\n request.searchV6.request &&\n request.searchV6.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\n // }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n\n getSelectedPillIndex(tabdata: any, tabIndex: any) {\n if(tabdata.pillsData && tabdata.pillsData.length) {\n let index = tabdata.pillsData.findIndex((pill: any) => {\n return pill.selected\n });\n return index\n }\n return 0\n }\n\n\n\n\n\n // cbp plans\n\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\n\n let courses: NsContent.IContent[];\n let tabResults: any[] = [];\n const response = await this.userSvc.fetchCbpPlanList().toPromise();\n if (response) {\n courses = response;\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitCbpTabsData(courses, strip);\n let countOfWidget = true\n if(strip && strip.tabs && strip.tabs.length) {\n strip.tabs.forEach((tab:any)=> {\n if(tab.pillsData && tab.pillsData.length) {\n tab.pillsData.forEach((pill: any) => {\n if(pill && pill.widgets && pill.widgets.length){\n if(countOfWidget){\n pill.selected = true\n countOfWidget= false\n }\n }\n });\n }\n })\n }\n await this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n '',\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n 'viewMoreUrl',\n );\n }\n }\n clearInterval(this.enrollInterval);\n }\n }\n\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabsAndPills.IContentStripUnit) {\n let tabResults: any[] = [];\n const splitData = this.getTabsList(\n contentNew,\n strip,\n );\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if( strip.tabs[i].value === \"myIgotPlans\") {\n let checkWidgetAndActivePill = true\n if (strip.tabs[i].pillsData && strip.tabs[i].pillsData.length) {\n for (let j = 0; j < strip.tabs[i].pillsData.length; j += 1) {\n // if(j === 0 ){\n // if(strip.tabs[i].pillsData[j].widgets && strip.tabs[i].pillsData[j].widgets.length ) {\n // strip.tabs[i].pillsData[j].selected = true\n // checkWidgetAndActivePill = false\n // }\n // strip.tabs[i].pillsData[j].selected = true\n // }\n if (strip.tabs[i].pillsData[j]) {\n tabResults.push(\n {\n ...strip.tabs[i].pillsData[j],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs[i].pillsData&& strip.tabs[i].pillsData[j] && itmInner.value === strip.tabs[i].pillsData[j].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n strip.tabs[i].pillsData = tabResults\n }\n }\n }\n }\n \n return strip.tabs;\n }\n\n getTabsList(array: NsContent.IContent[],\n strip: NsContentStripWithTabsAndPills.IContentStripUnit) {\n let all: any[] = [];\n let upcoming: any[] = [];\n let overdue: any[] = [];\n array.forEach((e: any) => {\n all.push(e);\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n overdue.push(e);\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\n upcoming.push(e);\n }\n });\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\n\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\n\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\n\n overdue = overdue.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n\n overdue = overdue.sort((a: any, b: any): any => {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n });\n\n upcoming = upcoming.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n \n return [\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\n { value: 'completed', widgets: this.transformContentsToWidgets(allCompleted, strip) },\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\n }\n resetSelectedPill(pillData: any){\n if(pillData && pillData.length){\n pillData.forEach((pill: any) => {\n pill['selected'] = false\n });\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HorizontalScrollerV2Module } from '../../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { ContentStripWithTabsPillsComponent } from './content-strip-with-tabs-pills.component';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\n\n// tslint:disable-next-line:function-name\nexport function HttpLoaderFactory1(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n declarations: [ContentStripWithTabsPillsComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory1,\n deps: [HttpClient],\n },\n }),\n ],\n entryComponents: [ContentStripWithTabsPillsComponent],\n exports: [ContentStripWithTabsPillsComponent],\n})\nexport class ContentStripWithTabsPillsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HorizontalScrollerV2Module } from '../../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { ContentStripFacetFilterComponent } from './content-strip-facet-filter.component';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\nimport { HttpLoaderFactory1 } from '../content-strip-with-tabs-pills/content-strip-with-tabs-pills.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n\n@NgModule({\n declarations: [ContentStripFacetFilterComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory1,\n deps: [HttpClient],\n },\n }),\n ],\n entryComponents: [ContentStripFacetFilterComponent],\n exports: [ContentStripFacetFilterComponent],\n})\nexport class ContentStripFacetFilterModule { }\n","import { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { Observable } from 'rxjs'\n\nconst API_POINTS = {\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\n COMPETENCY_LIST_V2: `apis/proxies/v8/searchBy/v2/competency`,\n CERTIFICATE_URL: `apis/protected/v8/cohorts/course/batch/cert/download/`,\n}\n\n@Injectable({ providedIn: 'root' })\n\nexport class CompetencyPassbookService {\n // tslint: disable-next-line: whitespace\n constructor(private http: HttpClient) { }\n getCompetencyList(payload: any): Observable<any> {\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\n }\n getCompetencyListv_V2(): Observable<any> {\n return this.http.get(API_POINTS.COMPETENCY_LIST_V2)\n }\n\n fetchCertificate(certId: string): Observable<any> {\n return this.http.get(API_POINTS.CERTIFICATE_URL + certId)\n }\n}\n","\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { CompetencyPassbookService } from './competency-passbook.service';\nimport { Router } from '@angular/router';\nimport { NsCompentency } from '../../_models/compentencies.model'\n\n@Component({\n selector: 'sb-uic-competency-passbook',\n templateUrl: './competency-passbook.component.html',\n styleUrls: ['./competency-passbook.component.scss']\n})\nexport class CompetencyPassbookComponent implements OnInit {\n\n @Input() objectData: any\n @Input() providerId: any\n @Input() cardDisplayCount: any = 3\n @Input() dynamicClass: any\n @Input() dynamicColor: any\n @Input() dynamicAlignPills: any = 'center'\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() temeletryResponse = new EventEmitter<any>()\n loadCometency: boolean = false\n loadCompetencyArea: boolean = false\n originalCompetencyArray: any\n competencyArea: any []\n selectedValue: any;\n competencyVersion:string = ''\n competencyTheme: any = []\n allcompetencyTheme: any ={}\n competencyStrength: any = 0\n competencyThemeLength: any = 6\n showAllTheme : any = [{name:'Show all', showAll: false}]\n environment!: any;\n comeptencyKeys: NsCompentency.CompentencyKeys;\n // subTheme = ['Behavioural']\n // currentFilter = 'Behavioural'\n // currentCompetencies: any = []\n // competencyData: any\n constructor(public configSvc: ConfigurationsService,\n public contentSvc:WidgetContentService,\n public competencySvc: CompetencyPassbookService,\n public router : Router,\n @Inject('environment') environment: any,\n ) { \n this.environment = environment\n }\n\n \n ngOnInit() {\n this.comeptencyKeys = this.configSvc.compentency[this.environment.compentencyVersionKey]\n \n this.getAllCompetencies()\n // this.competencyData = this.objectData\n // this.filter(this.currentFilter)\n }\n // filter(filterValue: string) {\n // this.currentFilter = filterValue\n // this.currentCompetencies = this.competencyData.data.filter((item: any) => item.type === filterValue)\n // }\n showMore() {\n this.objectData.viewMore = !this.objectData.viewMore\n }\n\n // to get competency area from facets\n async getCompetencyArea(){\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"createdFor\": [\n this.providerId\n ],\n }\n }\n this.loadCompetencyArea = true\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addfilter,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n this.competencyStrength = 0\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n response.results.result.facets.forEach((fact: any) => {\n\n if(fact.name === `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`) {\n this.competencyArea = fact.values\n }\n });\n this.selectedValue = this.competencyArea[0].name.toLowerCase()\n this.competencyArea.forEach(async (area: any, indexValue: any)=> {\n let addFilter = {\n \"createdFor\": [\n this.providerId\n ]\n }\n let data = await this.getcompetencyThemeCount(area, addFilter)\n area['themeData'] = data\n area['count'] = data.length\n\n this.competencyStrength = this.competencyStrength + data.length\n if(indexValue === 0) {\n \n this.getThemeDataByArea(area)\n }\n })\n this.loadCompetencyArea = false\n }\n }\n } catch (error) {\n this.loadCompetencyArea = false\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async callCompetencySearch(request){\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.searchV6(request).subscribe(results => {\n resolve({ results });\n },(error: any) => {\n reject(error);\n },\n );\n }\n });\n }\n\n // competency theam change\n competencyChange(e){\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"createdFor\": [\n this.providerId\n ],\n }\n }\n\n this.temeletryResponse.emit(e.name)\n \n this.getThemeDataByArea(e)\n this.selectedValue = e.name\n }\n getAllCompetencies(){\n this.loadCometency = true\n this.competencySvc.getCompetencyListv_V2().subscribe((response: any) => {\n this.allcompetencyTheme = {}\n if(response && response.result && response.result.content) {\n this.originalCompetencyArray = response.result.content\n this.getCompetencyArea()\n response.result.content.forEach(element => {\n element.children.forEach((childEle) => {\n let name = childEle.name.toLowerCase()\n this.allcompetencyTheme[name] = childEle\n this.allcompetencyTheme[name]['viewMore'] = false\n });\n });\n }\n this.loadCometency = false\n })\n }\n\n async getcompetencyTheme(value: any,addFilter?: any) {\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addFilter,\n [`${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`] : value,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyTheme}`\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n this.loadCometency = true\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n let competencyThemeData : any = response.results.result.facets[0].values \n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === value) {\n this.competencyTheme = competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n this.resetViewMore()\n }\n this.loadCometency = false\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n getThemeDataByArea(areaData: any){\n let competencyThemeData : any = areaData.themeData\n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === areaData.name) {\n this.competencyTheme = competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"createdFor\": [\n this.providerId\n ],\n }\n }\n this.getcompetencySubTheme(areaData,addfilter)\n }\n\n async getcompetencyThemeCount(area: any,addFilter?: any) {\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addFilter,\n [`${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`] : area.name,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyTheme}`\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n let returnedData : any = \n this.loadCometency = true\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n let competencyThemeData : any = response.results.result.facets[0].values \n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === area.name) {\n returnedData = competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n }\n this.loadCometency = false\n return returnedData\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n resetViewMore(){\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\n this.allcompetencyTheme[comp]['viewMore'] = false\n })\n }\n viewMoreChildren(data: any) {\n data.viewMore = !data.viewMore\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\n }\n displayAllTheme(event: any) {\n this.showAllTheme[0]['showAll'] = !event.showAll \n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\n this.temeletryResponse.emit(event.name)\n }\n\n navigateToCompetency(compData: any){\n this.router.navigateByUrl(`/app/learn/browse-by/competency/${compData.name}`)\n }\n\n\n async getcompetencySubTheme(compArea: any,addFilter?: any) {\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addFilter,\n [`${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`] : compArea.name,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencySubTheme}`\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n this.loadCometency = true\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n let competencySubThemeData : any = response.results.result.facets[0].values \n this.competencyArea.forEach((areaEle: any) => {\n if(areaEle.name === compArea.name) {\n areaEle.themeData.forEach((themeEle) => {\n if(this.allcompetencyTheme[themeEle.name.toLowerCase()] &&\n this.allcompetencyTheme[themeEle.name.toLowerCase()].children && \n this.allcompetencyTheme[themeEle.name.toLowerCase()].children.length) {\n let data = this.allcompetencyTheme[themeEle.name.toLowerCase()].children.filter(obj1 => \n competencySubThemeData.some(obj2 => \n Object.keys(obj1).every(key => obj1['name'] === (obj2['name']))\n )\n );\n \n this.allcompetencyTheme[themeEle.name.toLowerCase()]['children'] = data\n }\n });\n }\n })\n }\n\n this.loadCometency = false\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-pills',\n templateUrl: './pills.component.html',\n styleUrls: ['./pills.component.scss']\n})\nexport class PillsComponent implements OnInit {\n\n @Input() pillsData: any\n @Input() selectedValue: any\n @Input() isLoading: boolean = false\n @Output() pillClick = new EventEmitter<any>()\n @Input() dynamicClass: any = ''\n @Input() dynamicColor: any = ''\n @Input() requiredTitlecase: boolean = true\n\n constructor() { }\n\n ngOnInit() {\n }\n selectedPill(pillData: any) {\n this.pillClick.emit(pillData)\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule } from '@angular/material';\nimport { PillsComponent } from './pills.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [PillsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule\n ],\n exports: [PillsComponent]\n})\nexport class PillsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CompetencyPassbookComponent } from './competency-passbook.component';\nimport { MatIconModule } from '@angular/material';\nimport { PillsModule } from './../pills/pills.module';\nimport { CompetencyPassbookService } from './competency-passbook.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [CompetencyPassbookComponent],\n imports: [\n CommonModule,\n MatIconModule,\n PillsModule,\n SkeletonLoaderLibModule\n ],\n exports: [CompetencyPassbookComponent],\n providers:[CompetencyPassbookService]\n})\nexport class CompetencyPassbookModule { }\n","import { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { Observable } from 'rxjs'\n\nconst API_POINTS = {\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\n competency_URL: `apis/proxies/v8/v1/search/competenciesByOrg/`,\n COMPETENCY_LIST_V2: `apis/proxies/v8/searchBy/v2/competency`,\n}\n\n@Injectable({ providedIn: 'root' })\n\nexport class CompetencyPassbookMdoService {\n // tslint: disable-next-line: whitespace\n constructor(private http: HttpClient) { }\n getCompetencyList(payload: any): Observable<any> {\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\n }\n getCompetencyListv_V2(): Observable<any> {\n return this.http.get(API_POINTS.COMPETENCY_LIST_V2)\n }\n mdoCompetency(providerId: string): Observable<any> {\n return this.http.get(API_POINTS.competency_URL + providerId)\n }\n}\n","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { CompetencyPassbookMdoService } from './competency-passbook-mdo.service';\nimport { Router } from '@angular/router';\nimport { NsCompentency } from '../../_models/compentencies.model';\n@Component({\n selector: 'sb-uic-competency-passbook-mdo',\n templateUrl: './competency-passbook-mdo.component.html',\n styleUrls: ['./competency-passbook-mdo.component.scss']\n})\nexport class CompetencyPassbookMdoComponent implements OnInit {\n\n @Input() objectData: any\n @Input() providerId: any\n @Input() cardDisplayCount: any = 3\n @Input() dynamicClass: any\n @Input() dynamicColor: any\n @Input() dynamicAlignPills: any = 'center'\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() temeletryResponse = new EventEmitter<any>()\n loadCometency: boolean = false\n loadCompetencyArea: boolean = false\n originalCompetencyArray: any\n competencyArea: any []\n selectedValue: any = 'functional';\n competencyVersion:string = ''\n competencyThemeData: any\n competencyTheme: any = []\n allcompetencyTheme: any ={}\n competencyStrength: any = 0\n competencyThemeLength: any = 6\n showAllTheme : any = [{name:'Show all', showAll: false}]\n\n environment!: any;\n comeptencyKeys: NsCompentency.CompentencyKeys;\n \n // subTheme = ['Behavioural']\n // currentFilter = 'Behavioural'\n // currentCompetencies: any = []\n // competencyData: any\n constructor(public configSvc: ConfigurationsService,\n public contentSvc:WidgetContentService,\n public competencySvc: CompetencyPassbookMdoService,\n public router : Router,\n @Inject('environment') environment: any,\n\n ) {\n this.environment = environment\n }\n\n \n ngOnInit() {\n this.comeptencyKeys = this.configSvc.compentency[this.environment.compentencyVersionKey]\n \n this.getAllCompetencies()\n }\n\n\n getAllCompetencies(){\n this.loadCometency = true\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\n this.competencySvc.getCompetencyListv_V2().subscribe((response: any) => {\n this.allcompetencyTheme = {}\n if(response && response.result && response.result.content) {\n this.originalCompetencyArray = response.result.content\n this.getMdoCompetencies()\n // this.getCompetencyArea()\n response.result.content.forEach(element => {\n element.children.forEach((childEle) => {\n let name = childEle.name.toLowerCase()\n this.allcompetencyTheme[name] = childEle\n this.allcompetencyTheme[name]['viewMore'] = false\n });\n });\n }\n this.loadCometency = false\n })\n }\n \n\n\n async getMdoCompetencies(){\n try {\n this.loadCometency = true\n const response = await this.getMdoCompetency();\n if (response && response.results) {\n if(response.results.result.facets && response.results.result.facets.length){\n let facetData = response.results.result.facets\n facetData.forEach((facet: any) => {\n if(facet.name === `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`) {\n this.competencyArea = facet.values\n this.selectedValue = facet.values[0].name\n } else if(facet.name === `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyTheme}`) {\n this.competencyThemeData = facet.values\n this.getCompetencyTheme()\n }\n });\n\n } else {\n this.emptyResponse.emit(true)\n }\n this.loadCometency = false\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n this.emptyResponse.emit(true)\n }\n }\n\n getCompetencyTheme(){\n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === this.selectedValue) {\n this.competencyTheme = this.competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n } else if('Behavioral'.toLowerCase() === this.selectedValue) {\n this.competencyTheme = this.competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n this.resetViewMore()\n }\n\n\n async getMdoCompetency(){\n return new Promise<any>((resolve, reject) => {\n if (this.providerId) {\n this.competencySvc.mdoCompetency(this.providerId).subscribe(results => {\n resolve({ results });\n },(error: any) => {\n reject(error);\n },\n );\n }\n });\n }\n\n // competency theam change\n competencyChange(e){\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"createdFor\": [\n this.providerId\n ],\n }\n }\n\n this.temeletryResponse.emit(e.name)\n this.selectedValue = e.name\n this.getCompetencyTheme()\n }\n\n\n\n resetViewMore(){\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\n this.allcompetencyTheme[comp]['viewMore'] = false\n })\n }\n viewMoreChildren(data: any) {\n data.viewMore = !data.viewMore\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\n }\n displayAllTheme(event: any) {\n this.showAllTheme[0]['showAll'] = !event.showAll \n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\n this.temeletryResponse.emit(event.name)\n }\n\n navigateToCompetency(compData: any){\n this.router.navigateByUrl(`app/learn/browse-by/competency/${compData.name}`)\n }\n\n showMore() {\n this.objectData.viewMore = !this.objectData.viewMore\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CompetencyPassbookMdoComponent } from './competency-passbook-mdo.component';\nimport { MatIconModule } from '@angular/material';\nimport { PillsModule } from './../pills/pills.module';\nimport { CompetencyPassbookMdoService } from './competency-passbook-mdo.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [CompetencyPassbookMdoComponent],\n imports: [\n CommonModule,\n MatIconModule,\n PillsModule,\n SkeletonLoaderLibModule\n ],\n exports: [CompetencyPassbookMdoComponent],\n providers:[CompetencyPassbookMdoService]\n})\nexport class CompetencyPassbookMdoModule { }\n","import { Injectable } from '@angular/core'\nimport { Observable, of } from 'rxjs'\nimport { HttpClient } from '@angular/common/http'\nimport { NsAppRating } from '../_models/rating.model'\n\nconst PROXY_SLAG_V8 = '/apis/proxies/v8'\nconst API_END_POINTS = {\n GET_RATING: (contentId: string, contentType: string, userId: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/${contentType}/${userId}`,\n ADD_OR_UPDATE: `${PROXY_SLAG_V8}/ratings/v1/upsert`,\n GET_RATING_SUMMARY: (contentId: string, contentType: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/summary/${contentId}/${contentType}`,\n GET_RATING_LOOKUP: `${PROXY_SLAG_V8}/ratings/v1/ratingLookUp`,\n GET_AUTHOR_REPLY: (contentId: string, userID: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/Course/${userID}`,\n POST_AUTHOR_REPLY: `${PROXY_SLAG_V8}/ratings/v2/read`,\n}\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class RatingService {\n\n constructor(public http: HttpClient) { }\n\n getRating(contentId: string, contentType: string, userId: string): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.get<any>(\n API_END_POINTS.GET_RATING(contentId, contentType, userId)\n )\n }\n return of({})\n }\n\n addOrUpdateRating(req: NsAppRating.IRating): Observable<any> {\n return this.http.post<any>(\n API_END_POINTS.ADD_OR_UPDATE, req\n )\n }\n\n getRatingSummary(contentId: string, contentType: string): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.get<any>(\n API_END_POINTS.GET_RATING_SUMMARY(contentId, contentType)\n )\n }\n return of({})\n }\n\n getRatingLookup(req: NsAppRating.ILookupRequest): Observable<any> {\n return this.http.post<any>(\n API_END_POINTS.GET_RATING_LOOKUP, req\n )\n }\n\n getRatingReply(req: any): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.post<any>(\n API_END_POINTS.POST_AUTHOR_REPLY, req\n )\n }\n return of({})\n }\n\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\n if (avg) {\n const avgRating = avg\n const ratingFloor = Math.floor(avgRating)\n // const difference = avgRating - ratingIndex\n if (ratingIndex <= ratingFloor) {\n return 'star'\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\n return 'star_half'\n }\n }\n return 'star'\n }\n\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\n if (avg) {\n const avgRating = avg\n const ratingFloor = Math.floor(avgRating)\n if (ratingIndex <= ratingFloor) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 > 0.71) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 < 0.29) {\n return false\n }\n }\n return false\n }\n\n getAuthorReply(contentId: string, userID: string): Observable<any> {\n return this.http.get<any>(\n API_END_POINTS.GET_AUTHOR_REPLY(contentId, userID)\n )\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nconst API_END_POINTS = {\n TOP_REVIEWS: `/apis/proxies/v8/ratings/v1/topReviews`\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class UserContentRatingLibService {\n\n constructor(private http: HttpClient) { }\n fetchTopReviews(doId: any): Observable<any> {\n return this.http.get<any>(`${API_END_POINTS.TOP_REVIEWS}/${doId}`)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { RatingService } from '../../_services/rating.service';\nimport { ScrollableItemDirective } from './../../_directives/scrollable-item/scrollable-item.directive';\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\n\n@Component({\n selector: 'sb-uic-user-content-rating',\n templateUrl: './user-content-rating-lib.component.html',\n styleUrls: ['./user-content-rating-lib.component.scss']\n})\nexport class UserContentRatingLibComponent implements OnInit {\n currentIndex: any =0\n @Input() providerId : any = ''\n @Input() formData : any = ''\n @Output() emptyResponse = new EventEmitter<any>()\n styleData: any = {} \n contentdata: any = []\n\n\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor(public ratingService: RatingService,\n public userRatingSvc: UserContentRatingLibService\n ) { }\n\n ngOnInit() {\n this.styleData = this.formData && this.formData.sliderData && this.formData.sliderData.styleData\n this.getTopReviews();\n }\n\n getTopReviews() {\n this.contentdata = []\n this.userRatingSvc.fetchTopReviews(this.providerId).subscribe((response: any) => {\n if(response && response.result && response.result.content.length) {\n response.result.content.forEach((contentEle: any) => {\n let localData = {}\n localData['content'] = contentEle.contentInfo\n localData['rating'] = contentEle.rating\n localData['review'] = contentEle.review\n localData['userDetails'] = contentEle.userDetails\n localData['cardSubType'] = \"card-wide-lib\"\n localData['cardCustomeClass'] = \"\"\n this.contentdata.push(localData)\n });\n } else {\n this.emptyResponse.emit(true)\n }\n },(_error: any)=> {\n this.emptyResponse.emit(true)\n })\n }\n\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\n return this.ratingService.getRatingIcon(ratingIndex, avg)\n }\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\n return this.ratingService.getRatingIconClass(ratingIndex, avg)\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n this.handleScrollClick(indexValue)\n }\n\n handleScrollClick(dataValue: string) {\n const item = this.scrollableItems.find(x => x.key === dataValue)\n item.scrollIntoView(\"nearest\");\n }\n\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule } from '@angular/material';\nimport { UserContentRatingLibComponent } from './user-content-rating-lib.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { SlidersLibModule } from '../sliders/sliders.module';\nimport { RatingService } from '../../_services/rating.service';\nimport { CardsModule } from '../cards/cards.module';\nimport { AvatarPhotoLibModule } from '../avatar-photo-lib/avatar-photo-lib.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\n\n\n\n@NgModule({\n declarations: [UserContentRatingLibComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n SlidersLibModule,\n CardsModule,\n AvatarPhotoLibModule,\n SlidersNgContentLibModule,\n ScrollableItemModule\n ],\n exports: [UserContentRatingLibComponent],\n providers: [RatingService, UserContentRatingLibService],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class UserContentRatingLibModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-mdo-channel-v1',\n templateUrl: './mdo-channel-v1.component.html',\n styleUrls: ['./mdo-channel-v1.component.scss']\n})\nexport class MdoChannelV1Component implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, HostListener, Input, OnInit } from '@angular/core'\nimport { MatTabChangeEvent } from '@angular/material'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2'\n/* tslint:disable */\nimport * as _ from 'lodash'\nimport { TranslateService } from '@ngx-translate/core'\nimport { MultilingualTranslationsService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-mdo-channel-v2',\n templateUrl: './mdo-channel-v2.component.html',\n styleUrls: ['./mdo-channel-v2.component.scss']\n})\nexport class MdoChannelV2Component implements OnInit {\n @Input() sectionList:any = []\n channnelName = ''\n orgId = ''\n selectedIndex = 0\n hideCompetencyBlock: boolean = false\n contentTabEmptyResponseCount: number = 0\n titles = [\n { title: 'Learn', url: '/page/learn', icon: 'school', disableTranslate: false },\n {\n title: `MDO Channels`,\n url: `/app/learn/mdo-channels/all-channels`,\n icon: '', disableTranslate: true,\n },\n ]\n showModal: boolean = false\n descriptionMaxLength = 500\n isTelemetryRaised: boolean = false\n stripWidth: any\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private eventSvc: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n ) { \n if (this.route.snapshot.data && this.route.snapshot.data.formData\n && this.route.snapshot.data.formData.data\n && this.route.snapshot.data.formData.data.result\n && this.route.snapshot.data.formData.data.result.form\n && this.route.snapshot.data.formData.data.result.form.data\n && this.route.snapshot.data.formData.data.result.form.data.sectionList\n ) {\n this.sectionList = this.route.snapshot.data.formData.data.result.form.data.sectionList\n }\n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n @HostListener('window:resize')\n onResize() {\n this.setWidth()\n }\n\n setWidth() {\n this.stripWidth = `${(window.innerWidth - 1200 + 135)/2}px`\n\n }\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n this.channnelName = params['channel']\n this.orgId = params['orgId']\n this.titles.push({\n title: this.channnelName, icon: '', url: 'none', disableTranslate: true,\n })\n })\n this.setWidth()\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent) {\n this.raiseTelemetry(`${tabEvent.tab.textLabel} tab`)\n }\n hideContentStrip(event: any, colData: any) {\n if (event) {\n colData.contentStripData['hideSection'] = true\n this.contentTabEmptyResponseCount = this.contentTabEmptyResponseCount + 1\n // if(this.contentTabEmptyResponseCount === 4 ) {\n // this.selectedIndex = 1\n // }\n }\n }\n\n triggerOpenDialog(event: boolean) {\n if(event) {\n this.showModal = true\n document.body.style.overflow = 'hidden'\n }\n this.raiseTelemetry('btn open key annoucements')\n }\n\n onClose() {\n this.showModal = false\n document.body.style.overflow = 'auto'\n this.raiseTelemetry('btn close key annoucements')\n }\n\n raiseTelemetryInteratEvent(event: any) {\n if (event && event.viewMoreUrl) {\n this.raiseTelemetry(`${event.stripTitle} ${event.viewMoreUrl.viewMoreText}`)\n }\n if (!this.isTelemetryRaised && event && !event.viewMoreUrl) {\n this.eventSvc.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'mdo-channel',\n id: `${_.kebabCase(event.typeOfTelemetry.toLocaleLowerCase())}-card`,\n },\n {\n id: event.identifier,\n type: event.primaryCategory,\n },\n {\n pageIdExt: `${_.kebabCase(event.primaryCategory.toLocaleLowerCase())}-card`,\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n this.isTelemetryRaised = true\n }\n }\n\n raiseCompetencyTelemetry(name: string) {\n this.raiseTelemetry(`${name} core expertise`)\n }\n\n raiseTelemetry(name: string) {\n this.eventSvc.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'mdo-channel',\n id: `${_.kebabCase(name).toLocaleLowerCase()}`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n }\n\n hideCompetency(event: any) {\n if (event) {\n this.hideCompetencyBlock = true\n }\n }\n\n showAllContent(_stripData: any, columnData: any) {\n if (columnData && columnData.contentStrip && columnData.contentStrip.strips && columnData.contentStrip.strips.length) {\n const stripData: any = _stripData\n let tabSelected = stripData.viewMoreUrl && stripData.viewMoreUrl.queryParams && stripData.viewMoreUrl.queryParams.tabSelected && stripData.viewMoreUrl.queryParams.tabSelected || ''\n this.router.navigate(\n [`/app/learn/mdo-channels/${this.channnelName}/${this.orgId}/all-content`],\n { queryParams: { tabSelected, key: columnData.sectionKey } })\n }\n }\n\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\nimport { MdoChannelV1Component } from './mdo-channel-v1/mdo-channel-v1.component';\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\n\nimport {\n AnnouncementsModule,\n CardsModule,\n CommonMethodsService,\n CommonStripModule,\n CompetencyPassbookModule,\n CompetencyPassbookMdoModule,\n ContentStripWithTabsLibModule,\n DataPointsModule,\n SlidersLibModule,\n HttpLoaderFactory,\n TopLearnersModule,\n CbpPlanModule,\n} from './../../../../public-api'\nimport { MdoChannelV2Component } from './mdo-channel-v2/mdo-channel-v2.component';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\n\n\n@NgModule({\n declarations: [MdoChannelV1Component, MdoChannelV2Component],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n AnnouncementsModule,\n TopLearnersModule,\n CbpPlanModule,\n CardsModule,\n CommonStripModule,\n CompetencyPassbookModule,\n CompetencyPassbookMdoModule,\n ContentStripWithTabsLibModule,\n DataPointsModule,\n SlidersLibModule,\n MatTabsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports: [MdoChannelV1Component, MdoChannelV2Component],\n providers:[\n CommonMethodsService],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class MDOChannelModule { }\n","import { DatePipe } from '@angular/common'\nimport { Component, Input, OnInit } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2'\nimport * as _ from 'lodash'\n\n@Component({\n selector: 'sb-uic-providers-v2',\n templateUrl: './providers-v2.component.html',\n styleUrls: ['./providers-v2.component.scss']\n})\nexport class ProvidersV2Component implements OnInit {\n\n @Input() sectionList:any = []\n providerName = ''\n providerId = ''\n navList: any\n hideCompetencyBlock = false\n // sectionList: any = []\n currentMonthAndYear: any\n titles = [\n { title: 'Learn', url: '/page/learn', icon: 'school', disableTranslate: false },\n { title: `All Providers`,\n url: `/app/learn/browse-by/provider/all-providers`,\n icon: '', disableTranslate: true,\n },\n ]\n\n descriptionMaxLength = 500\n isTelemetryRaised = false\n\n constructor(private route: ActivatedRoute,\n public router: Router, private datePipe: DatePipe, private events: EventService) {\n\n }\n\n ngOnInit() {\n if (this.route.snapshot.data && this.route.snapshot.data.formData\n && this.route.snapshot.data.formData.data\n && this.route.snapshot.data.formData.data.result\n && this.route.snapshot.data.formData.data.result.form\n && this.route.snapshot.data.formData.data.result.form.data\n && this.route.snapshot.data.formData.data.result.form.data.sectionList\n ) {\n this.sectionList = this.route.snapshot.data.formData.data.result.form.data.sectionList\n }\n this.route.params.subscribe(params => {\n this.providerName = params['provider']\n this.providerId = params['orgId']\n this.titles.push({\n title: this.providerName, icon: '', url: 'none', disableTranslate: true,\n })\n })\n this.getNavitems()\n this.currentMonthAndYear = this.datePipe.transform(new Date(), 'MMMM y')\n }\n\n getNavitems() {\n this.navList = this.sectionList.filter(\n (obj: any) => obj.enabled && obj.navigation && obj.navOrder).sort(\n (a: any, b: any) => a.navOrder - b.navOrder)\n }\n\n scrollToSection(name: string) {\n let section: HTMLElement | any\n section = document.getElementById(name)\n if (section) {\n // section.scrollIntoView({ behavior: 'smooth', block: 'start',inline: 'nearest', offsetTop: yOffset })\n window.scrollTo({\n top: section.offsetTop - 121,\n behavior: 'smooth',\n })\n }\n }\n hideCompetency(event: any, columnData: any) {\n if (event) {\n this.hideCompetencyBlock = true\n columnData['navigation'] = false\n columnData['enabled'] = false\n this.navList.forEach((navItem: any) => {\n navItem.column.forEach((colEle: any) => {\n if (colEle.key === columnData.key) {\n navItem['navigation'] = false\n }\n })\n })\n }\n }\n hideContentStrip(event: any, contentStripData: any) {\n if (event) {\n contentStripData.contentStrip['hideSection'] = true\n }\n }\n hideLearnerReview(event: any, learnerReview: any) {\n if (event) {\n learnerReview['hideSection'] = true\n }\n }\n\n showAllContent(_stripData: any, columnData: any) {\n if (columnData && columnData.contentStrip && columnData.contentStrip.strips && columnData.contentStrip.strips.length) {\n const stripData: any = _stripData\n let tabSelected = stripData.viewMoreUrl && stripData.viewMoreUrl.queryParams && stripData.viewMoreUrl.queryParams.tabSelected && stripData.viewMoreUrl.queryParams.tabSelected || ''\n this.router.navigate(\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-content`],\n { queryParams: { pageDetails: true, tabSelected, key: columnData.sectionKey } })\n\n } else {\n this.router.navigate(\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-CBP`],\n { queryParams: { pageDetails: true } })\n }\n }\n\n raiseTelemetryInteratEvent(event: any) {\n if (event && event.viewMoreUrl) {\n this.raiseTelemetry(`${event.stripTitle} ${event.viewMoreUrl.viewMoreText}`)\n }\n if (!this.isTelemetryRaised && event && !event.viewMoreUrl) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'ATI/CTI',\n id: `${_.kebabCase(event.typeOfTelemetry.toLocaleLowerCase())}-card`,\n },\n {\n id: event.identifier,\n type: event.primaryCategory,\n },\n {\n pageIdExt: `${_.kebabCase(event.primaryCategory.toLocaleLowerCase())}-card`,\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n this.isTelemetryRaised = true\n }\n }\n\n raiseCompetencyTelemetry(name: string) {\n this.raiseTelemetry(`${name} core expertise`)\n }\n\n raiseTelemetry(name: string) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'ATI/CTI',\n id: `${_.kebabCase(name).toLocaleLowerCase()}`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n }\n\n raiseNavTelemetry(name: string) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'ATI/CTI',\n id: `${_.kebabCase(name).toLocaleLowerCase()}-navigation`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\nimport {\n CalenderModule,\n CardsModule, \n CommonMethodsService, \n CommonStripModule, \n CompetencyPassbookModule, \n ContentStripWithTabsLibModule,\n DataPointsModule, \n HttpLoaderFactory, \n SlidersLibModule, \n UserContentRatingLibModule \n} from './../../../../public-api'\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ProvidersV2Component } from './providers-v2/providers-v2.component';\nimport { RouterModule } from '@angular/router';\n\n\n@NgModule({\n declarations: [ProvidersV2Component],\n imports: [\n CommonModule,\n MatIconModule,\n RouterModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n CalenderModule,\n CardsModule,\n CommonStripModule,\n CompetencyPassbookModule,\n UserContentRatingLibModule,\n ContentStripWithTabsLibModule,\n DataPointsModule,\n SlidersLibModule,\n MatTabsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports: [ProvidersV2Component],\n providers:[\n CommonMethodsService],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class ProvidersModule { }\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2';\nimport * as _ from 'lodash'\n\n@Component({\n selector: 'sb-uic-national-learning',\n templateUrl: './national-learning.component.html',\n styleUrls: ['./national-learning.component.scss']\n})\nexport class NationalLearningComponent implements OnInit {\n @Input() sectionList:any = []\n @Input() configDetails: any\n @Input() nwlConfiguration: any\n providerId: string = '123456789'\n providerName: ''\n descriptionMaxLength = 500\n constructor(public router: Router, private events: EventService) {\n }\n\n ngOnInit(): void {\n }\n\n\n hideKeyHightlight(event: any, learnerReview: any) {\n if (event) {\n learnerReview['hideSection'] = true\n }\n }\n\n showAllContent(_stripData: any, columnData: any) {\n if (columnData && columnData.contentStrip && columnData.contentStrip.strips && columnData.contentStrip.strips.length) {\n const stripData: any = _stripData\n let tabSelected = stripData.viewMoreUrl && stripData.viewMoreUrl.queryParams && stripData.viewMoreUrl.queryParams.tabSelected && stripData.viewMoreUrl.queryParams.tabSelected || ''\n this.router.navigate(\n [`app/learn/national-learning-week/see-all`],\n { queryParams: { pageDetails: true, tabSelected, key: columnData.sectionKey } })\n\n } else {\n this.router.navigate(\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-CBP`],\n { queryParams: { pageDetails: true } })\n }\n }\n\n hideContentStrip(event: any, contentStripData: any) {\n if (event) {\n contentStripData.contentStrip['hideSection'] = true\n }\n }\n\n raiseTabClick(event) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'mdo-leaderboard',\n id: `${event}-tab`,\n },\n {\n },\n {\n module: 'National Learning Week',\n }\n )\n }\n\n raiseTelemetryInteratEvent(event: any) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'mandatory-courses',\n id: `mandatory-courses-card`,\n },\n {\n id: event.identifier,\n type: event.primaryCategory,\n },\n {\n pageIdExt: `mandatory-courses-card`,\n module: 'National Learning Week',\n }\n )\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\n\n@Component({\n selector: 'sb-uic-key-highlights',\n templateUrl: './key-highlights.component.html',\n styleUrls: ['./key-highlights.component.scss']\n})\nexport class KeyHighlightsComponent implements OnInit {\n currentIndex: any = 0\n @Input() providerId : any = ''\n @Input() formData : any = ''\n @Input() mode: any\n @Output() emptyResponse = new EventEmitter<any>()\n titleMaxLength = 100\n\n styleData: any = {} \n contentdata: any = []\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor() { }\n\n ngOnInit() {\n this.styleData = this.formData && this.formData.sliderData && this.formData.sliderData.styleData\n this.contentdata = this.formData && this.formData.content ? this.formData.content : []\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KeyHighlightsComponent } from './key-highlights.component';\nimport { MatIconModule } from '@angular/material';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\n\n\n\n@NgModule({\n declarations: [KeyHighlightsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n SlidersNgContentLibModule,\n ScrollableItemModule\n ],\n exports: [\n KeyHighlightsComponent\n ],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class KeyHighlightsModule { }\n","import { Component, Input, OnInit } from '@angular/core'\nimport { InsiteDataService } from '../../_services/insite-data.service'\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\n@Component({\n selector: 'sb-uic-events',\n templateUrl: './events.component.html',\n styleUrls: ['./events.component.scss']\n})\nexport class EventsComponent implements OnInit {\n\n @Input() object: any\n @Input() nwlEventsConfig: any\n daysBetween: any = []\n events: any = []\n requestBody: any\n currentDay: any\n loader: boolean = false\n constructor(public insightSvc: InsiteDataService) { }\n\n ngOnInit() {\n this.requestBody = {\n locale: [\n 'en',\n ],\n query: '',\n request: {\n query: '',\n filters: {\n status: ['Live'],\n contentType: 'Event',\n category: 'Event',\n startDate\t: {\n \">=\": '',\n \"<\": ''\n }\n },\n sort_by: {\n startDate: 'desc',\n },\n },\n }\n this.getEventsList()\n }\n getDaysBetweenDates() {\n let currentDate = moment(this.nwlEventsConfig.startDate, 'DD-MM-YYYY')\n const endDate = moment(this.nwlEventsConfig.endDate, 'DD-MM-YYYY')\n while (currentDate.isSameOrBefore(endDate)) {\n let localObj = {}\n localObj['startDate'] = currentDate.format('YYYY-MM-DD')\n localObj['diplayFormat'] = currentDate.format('MMM DD, YYYY')\n if(currentDate.isSame(moment(), 'day')){\n this.currentDay = currentDate.format('YYYY-MM-DD')\n }\n currentDate.add(1, 'days').format('YYYY-MM-DD')\n this.daysBetween.push(localObj)\n }\n console.log(\"currentDay \", this.currentDay)\n }\n\n getEvents(slectedDate: any) {\n this.currentDay = slectedDate.target.value\n let nextDay = moment(slectedDate.target.value, 'YYYY-MM-DD')\n nextDay.add(1, 'days')\n this.requestBody.request.filters.startDate[\">=\"] = this.currentDay\n this.requestBody.request.filters.startDate[\"<\"] = nextDay.format('YYYY-MM-DD')\n this.loader = true\n this.insightSvc.fetchTrainingDetails(this.requestBody).subscribe((res: any)=> {\n this.events = []\n if (res && res.result && res.result.count > 0) {\n this.events = res.result.Event\n this.loader = false\n } else {\n this.loader = false\n }\n }, error => {\n this.loader = false\n })\n }\n\n getEventsList() {\n this.getDaysBetweenDates()\n let nextDay = moment(this.currentDay, 'YYYY-MM-DD')\n nextDay.add(1, 'days')\n this.requestBody.request.filters.startDate[\">=\"] = this.currentDay\n this.requestBody.request.filters.startDate[\"<\"] = nextDay.format('YYYY-MM-DD')\n this.loader = true\n this.insightSvc.fetchTrainingDetails(this.requestBody).subscribe((res: any)=> {\n this.events = []\n if (res && res.result && res.result.count > 0) {\n this.events = res.result.Event\n this.loader = false\n } else {\n this.loader = false\n }\n }, error => {\n this.loader = false\n })\n }\n\n}\n","import { Component, Inject, Input } from '@angular/core'\nimport { Router } from '@angular/router'\nimport * as moment_ from 'moment'\nconst moment = moment_\n\n@Component({\n selector: 'sb-uic-event-card',\n templateUrl: './event-card.component.html',\n styleUrls: ['./event-card.component.scss']\n})\nexport class EventCardComponent {\n\n @Input() objectData: any\n @Input() eventDetails: any\n environment!: any\n @Input() loader: any\n descriptionMaxLength: number = 50\n constructor(@Inject('environment') environment: any, private router: Router) {\n this.environment = environment\n }\n\n getEventDate(event: any) {\n let timeString = event.startTime.split(\":\")\n let dataString = `${moment(event.startDate).format('MMM DD, YYYY')} ${timeString[0]}:${timeString[1]}`\n return dataString\n }\n\n getPublicUrl(url: string): string {\n const mainUrl = url.split('/content').pop() || ''\n return `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n }\n\n redirectTo(event: any) {\n this.router.navigate([\"/app/event-hub/home/\", event.identifier]);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EventsComponent } from './events.component';\nimport { EventCardComponent } from './event-card/event-card.component';\nimport { RouterModule } from '@angular/router';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { MatIconModule } from '@angular/material';\n\n\n\n@NgModule({\n declarations: [EventsComponent, EventCardComponent],\n imports: [\n CommonModule,\n RouterModule,\n SkeletonLoaderLibModule,\n MatIconModule\n ],\n exports: [EventsComponent, EventCardComponent]\n})\nexport class EventsModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-mdo-leaderboard',\n templateUrl: './mdo-leaderboard.component.html',\n styleUrls: ['./mdo-leaderboard.component.scss']\n})\nexport class MdoLeaderboardComponent implements OnInit {\n\n currentTab: any = 'XL'\n result: any = []\n filteredData: any\n searchTerm: string = ''\n expand: boolean = true\n\n @Input() object: any\n @Output() tabClicked = new EventEmitter<any>()\n constructor(private insiteDataService: InsiteDataService) { }\n\n ngOnInit() {\n this.getData()\n }\n\n getData() {\n this.insiteDataService.fetchLeaderboard().subscribe((res: any) => {\n if (res && res.result) {\n this.result = res.result\n this.filteredData = this.result.mdoLeaderBoard\n .filter(user => user.size === this.currentTab) \n .map(user => ({ ...user, children: [], selected: false })).slice(0, 5)\n }\n \n }, error => {\n console.log(error)\n })\n }\n\n getTabData(name: any) {\n this.currentTab = name\n this.searchTerm = ''\n this.filteredData = this.result.mdoLeaderBoard\n .filter(user => user.size === this.currentTab) \n .map(user => ({ ...user, children: [], selected: false })).slice(0, 5)\n let nameStr: any = ''\n switch (name) {\n case 'XL':\n nameStr = 'greater-than-50K'\n break\n case 'L':\n nameStr = '10K-50K'\n break\n case 'M':\n nameStr = '1K-10K'\n break\n case 'S':\n nameStr = '500-1K'\n break\n default:\n nameStr = 'less-than-500'\n break\n }\n this.tabClicked.emit(nameStr)\n }\n\n getRank(rank: number) {\n return [1,2,3].includes(rank) ? `rank${rank}` : 'rank0'\n }\n\n getMedal(rank: number) {\n if (rank === 1) {\n return 'assets/images/national-learning/Medal1.svg'\n } else if(rank === 2) {\n return 'assets/images/national-learning/Medal2.svg'\n } else {\n return 'assets/images/national-learning/Medal3.svg'\n }\n }\n\n handleSearchQuery(e: any) {\n if (e.target.value && e.target.value.length > 0) {\n this.searchTerm = e.target.value\n this.filteredData = this.result.mdoLeaderBoard\n .filter(user => user.size === this.currentTab && user.org_name.toLowerCase().includes(e.target.value))\n .map(user => ({ ...user, children: []})).slice(0, 5)\n } else {\n this.filteredData = this.result.mdoLeaderBoard\n .filter(user => user.size === this.currentTab)\n .map(user => ({ ...user, children: []})).slice(0, 5)\n }\n }\n\n toggleWeekHightlits() {\n this.expand = !this.expand\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MdoLeaderboardComponent } from './mdo-leaderboard.component';\nimport { MatIconModule, MatTooltipModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { FormsModule } from '@angular/forms';\n\n\n\n@NgModule({\n declarations: [MdoLeaderboardComponent],\n imports: [\n CommonModule,\n MatIconModule,\n SkeletonLoaderLibModule,\n FormsModule,\n MatTooltipModule\n ],\n exports: [\n MdoLeaderboardComponent\n ],\n providers: [InsiteDataService]\n})\nexport class MdoLeaderboardModule { }\n","import { Component, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\n\n@Component({\n selector: 'sb-uic-highlights-of-week',\n templateUrl: './highlights-of-week.component.html',\n styleUrls: ['./highlights-of-week.component.scss']\n})\nexport class HighlightsOfWeekComponent implements OnInit {\n\n @Input() objectData: any\n currentIndex = 0\n contentdata: any = []\n styleData: any = {}\n expand: boolean = true\n \n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor() { }\n\n ngOnInit() {\n this.styleData = this.objectData && this.objectData.sliderData && this.objectData.sliderData.styleData\n if (this.objectData && this.objectData.list) {\n this.objectData.list.forEach((contentEle: any) => {\n let localData = {}\n localData['title'] = contentEle.title\n localData['videoUrl'] = contentEle.videoUrl\n localData['cardSubType'] = \"card-wide-lib\"\n localData['description'] = contentEle.description\n this.contentdata.push(localData)\n })\n }\n }\n\n toggleWeekHightlits() {\n this.expand = !this.expand\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule, MatTooltipModule } from '@angular/material';\nimport { HighlightsOfWeekComponent } from './highlights-of-week.component';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\n\n\n\n@NgModule({\n declarations: [HighlightsOfWeekComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatTooltipModule,\n ScrollableItemModule,\n SlidersNgContentLibModule\n ],\n exports: [\n HighlightsOfWeekComponent\n ]\n})\nexport class HighlightsOfWeekModule { }\n","import { Component, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\n\n@Component({\n selector: 'sb-uic-speakers',\n templateUrl: './speakers.component.html',\n styleUrls: ['./speakers.component.scss']\n})\nexport class SpeakersComponent implements OnInit {\n @Input() objectData: any\n currentIndex = 0\n contentdata: any = []\n styleData: any = {}\n expand: boolean = true\n \n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n\n constructor() { }\n\n ngOnInit() {\n this.styleData = this.objectData && this.objectData.sliderData && this.objectData.sliderData.styleData\n if (this.objectData && this.objectData.list) {\n this.objectData.list.forEach((contentEle: any) => {\n let localData = {}\n localData['name'] = contentEle.title\n localData['cardSubType'] = \"card-wide-lib\"\n localData['description'] = contentEle.description\n localData['initial'] = this.createInititals(contentEle.title)\n localData['profileImage'] = contentEle.profileImage ? contentEle.profileImage : ''\n this.contentdata.push(localData)\n })\n }\n }\n\n createInititals(name: string) {\n let initials = ''\n const array = name.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < name.length; i += 1) {\n if (name.charAt(i) === ' ') {\n continue\n }\n if (name.charAt(i) === name.charAt(i)) {\n initials += name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n return initials.toUpperCase()\n }\n \n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n\n toggleWeekHightlits() {\n this.expand = !this.expand\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpeakersComponent } from './speakers.component';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { MatIconModule, MatTooltipModule } from '@angular/material';\n\n\n\n@NgModule({\n declarations: [SpeakersComponent],\n imports: [\n CommonModule,\n ScrollableItemModule,\n SlidersNgContentLibModule,\n MatTooltipModule,\n MatIconModule,\n ],\n exports: [\n SpeakersComponent\n ]\n})\nexport class SpeakersModule { }\n","import { Component, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\nimport { ConfigurationsService } from '@sunbird-cb/utils-v2';\n\n@Component({\n selector: 'sb-uic-user-progress',\n templateUrl: './user-progress.component.html',\n styleUrls: ['./user-progress.component.scss']\n})\nexport class UserProgressComponent implements OnInit {\n\n @Input() objectData: any\n @Input() rootOrgId: any\n insitesData = []\n currentIndex = 0\n styleData: any = {}\n userProgress: any = {}\n expand: boolean = true\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor(public insightSvc: InsiteDataService, private configSvc: ConfigurationsService,\n ) { }\n\n ngOnInit() {\n this.styleData = this.objectData.insights.data.sliderData.styleData\n this.getUserProgress()\n this.getInsightsData()\n }\n\n getUserProgress() {\n debugger\n this.insightSvc.fetchUserProgress().subscribe((res: any) => {\n if(res && res.result && res.result.userLeaderBoard) {\n this.userProgress = res.result.userLeaderBoard\n if (!this.userProgress.fullname && this.configSvc && this.configSvc.userProfile && this.configSvc.userProfile.firstName) {\n this.userProgress['fullname'] = this.configSvc.userProfile.firstName\n this.userProgress['profile_image'] = this.configSvc.userProfile.profileImageUrl\n }\n }\n }, error => {\n this.userProgress['fullname'] = this.configSvc.userProfile.firstName\n this.userProgress['profile_image'] = this.configSvc.userProfile.profileImageUrl\n })\n }\n getInsightsData() {\n const request = {\n request: {\n filters: {\n primaryCategory: 'programs',\n organisations: [\n 'across',\n this.rootOrgId,\n //\"01390354700029132834\"\n ],\n },\n },\n }\n this.insightSvc.fetchInsightsData(request).subscribe((res: any) => {\n if (res && res.result && res.result.response && res.result.response.nudges) {\n this.insitesData = res.result.response.nudges\n this.insitesData = this.insitesData.map((obj: any) => {\n return {...obj, cardSubType: 'card-wide-lib'}\n })\n }\n })\n }\n\n roundTo(number: any) {\n return Math.round(number * 100 /100)\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n\n createInititals(name: string) {\n let initials = ''\n const array = name.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < name.length; i += 1) {\n if (name.charAt(i) === ' ') {\n continue\n }\n if (name.charAt(i) === name.charAt(i)) {\n initials += name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n return initials.toUpperCase()\n }\n\n toggleWeekHightlits() {\n this.expand = !this.expand\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserProgressComponent } from './user-progress.component';\nimport { MatIconModule, MatTooltipModule } from '@angular/material';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\n\n\n\n@NgModule({\n declarations: [UserProgressComponent],\n imports: [\n CommonModule,\n MatTooltipModule,\n MatIconModule,\n ScrollableItemModule,\n SlidersNgContentLibModule,\n ],\n exports: [\n UserProgressComponent\n ]\n})\nexport class UserProgressModule { }\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { NationalLearningComponent } from './national-learning/national-learning.component';\nimport { CommonMethodsService } from '../../../_services/common-methods.service';\nimport { SlidersLibModule } from '../../sliders/sliders.module';\nimport { KeyHighlightsModule } from '../../key-highlights/key-highlights.module';\nimport { ContentStripWithTabsLibModule } from '../../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { EventsModule } from '../../events/events.module';\nimport { MdoLeaderboardModule } from '../../mdo-leaderboard/mdo-leaderboard.module';\nimport { DataPointsModule } from '../../data-points/data-points.module';\nimport { HighlightsOfWeekModule } from '../../highlights-of-week/highlights-of-week.module';\nimport { SpeakersModule } from '../../speakers/speakers.module';\nimport { UserProgressModule } from '../../user-progress/user-progress.module';\nimport { ContentStripFacetFilterModule } from '../../strips/content-strip-facet-filter/content-strip-facet-filter.module';\n\n\n\n@NgModule({\n declarations: [NationalLearningComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n SlidersLibModule,\n MatTabsModule,\n KeyHighlightsModule,\n ContentStripWithTabsLibModule,\n DataPointsModule,\n EventsModule,\n MdoLeaderboardModule,\n HighlightsOfWeekModule,\n SpeakersModule,\n UserProgressModule,\n ContentStripFacetFilterModule\n ],\n exports: [\n NationalLearningComponent,\n ],\n providers:[\n CommonMethodsService\n ],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class NationalLearningModule { }\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@sunbird-cb/consumption/lib/consumption.service.ts","ng://@sunbird-cb/consumption/lib/consumption.component.ts","ng://@sunbird-cb/consumption/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.module.ts","ng://@sunbird-cb/consumption/lib/_models/widget-content.model.ts","ng://@sunbird-cb/consumption/lib/_services/viewer-route-util.ts","ng://@sunbird-cb/consumption/lib/_models/card-content-v2.model.ts","ng://@sunbird-cb/consumption/lib/_services/widget-user-lib.service.ts","ng://@sunbird-cb/consumption/lib/_services/widget-content-lib.service.ts","ng://@sunbird-cb/consumption/lib/_services/configurations.service.ts","ng://@sunbird-cb/consumption/lib/_services/multilingual-translations.service.ts","ng://@sunbird-cb/consumption/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/sliders/sliders.component.ts","ng://@sunbird-cb/consumption/lib/_directives/image-responsive/image-responsive.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/image-responsive/image-responsive.module.ts","ng://@sunbird-cb/consumption/lib/_directives/navigation/navigation.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/navigation/navigation.module.ts","ng://@sunbird-cb/consumption/lib/_common/sliders/sliders.module.ts","ng://@sunbird-cb/consumption/lib/_services/insite-data.service.ts","ng://@sunbird-cb/consumption/lib/_common/data-points/data-points.component.ts","ng://@sunbird-cb/consumption/lib/_common/skeleton-loader-lib/skeleton-loader-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/skeleton-loader-lib/skeleton-loader-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/data-points/data-points.module.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender.component.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender-day/calender-day.component.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender.module.ts","ng://@sunbird-cb/consumption/lib/_services/common-methods.service.ts","ng://@sunbird-cb/consumption/lib/_common/common-strip/common-strip.component.ts","ng://@sunbird-cb/consumption/lib/_common/common-strip/common-strip.module.ts","ng://@sunbird-cb/consumption/lib/_common/announcements/announcements.component.ts","ng://@sunbird-cb/consumption/lib/_common/announcements/announcements.module.ts","ng://@sunbird-cb/consumption/lib/_common/top-learners/top-learners.component.ts","ng://@sunbird-cb/consumption/lib/_common/top-learners/top-learners.module.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.directive.ts","ng://@sunbird-cb/consumption/lib/_common/cbp-plan/cbp-plan.component.ts","ng://@sunbird-cb/consumption/lib/_common/sliders-ng-content/sliders-ng-content.component.ts","ng://@sunbird-cb/consumption/lib/_common/sliders-ng-content/sliders-ng-content.module.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.module.ts","ng://@sunbird-cb/consumption/lib/_common/cbp-plan/cbp-plan.module.ts","ng://@sunbird-cb/consumption/lib/consumption.module.ts","ng://@sunbird-cb/consumption/lib/consumption.config.ts","ng://@sunbird-cb/consumption/lib/_models/card-content.model.ts","ng://@sunbird-cb/consumption/lib/_common/cards/cards.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-resource/card-resource.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-portrait/card-portrait.component.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-public-URL/pipe-public-URL.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-public-URL/pipe-public-URL.module.ts","ng://@sunbird-cb/consumption/lib/_pipes/object-to-array/object-to-array.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/object-to-array/object-to-array.pipe.module.ts","ng://@sunbird-cb/consumption/lib/_common/display-content-type-lib/display-content-type-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/display-content-type-lib/display-content-type-lib.module.ts","ng://@sunbird-cb/consumption/lib/_directives/default-thumbnail/default-thumbnail.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/default-thumbnail/default-thumbnail.module.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-duration-transform/pipe-duration-transform.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-user/card-user.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-landscape/card-landscape.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-wide/card-wide.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-wide-v2/card-wide-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-karma-programs/card-karma-programs.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-karma-programs-v2/card-karma-programs-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/provider-card/provider-card.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.ts","ng://@sunbird-cb/consumption/lib/_services/certificate.service.ts","ng://@sunbird-cb/consumption/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-progress/content-progress.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-progress/content-progress.module.ts","ng://@sunbird-cb/consumption/lib/_common/dialog-components/dialog-components.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.ts","ng://@sunbird-cb/consumption/lib/_common/avatar-photo-lib/avatar-photo-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/avatar-photo-lib/avatar-photo-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/cards.module.ts","ng://@sunbird-cb/consumption/lib/registration-lib.config.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.model.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.component.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.component.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.module.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-facet-filter/content-strip-facet-filter.module.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook/competency-passbook.service.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook/competency-passbook.component.ts","ng://@sunbird-cb/consumption/lib/_common/pills/pills.component.ts","ng://@sunbird-cb/consumption/lib/_common/pills/pills.module.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook/competency-passbook.module.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook-mdo/competency-passbook-mdo.service.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook-mdo/competency-passbook-mdo.component.ts","ng://@sunbird-cb/consumption/lib/_common/competency-passbook-mdo/competency-passbook-mdo.module.ts","ng://@sunbird-cb/consumption/lib/_services/rating.service.ts","ng://@sunbird-cb/consumption/lib/_common/user-content-rating/user-content-rating-lib.service.ts","ng://@sunbird-cb/consumption/lib/_common/user-content-rating/user-content-rating-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/user-content-rating/user-content-rating-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/mdo-channels/mdo-channel-v1/mdo-channel-v1.component.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/mdo-channels/mdo-channel-v2/mdo-channel-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/mdo-channels/mdo-channel.module.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/providers/providers-v2/providers-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/providers/providers.module.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/national-learning-week/national-learning/national-learning.component.ts","ng://@sunbird-cb/consumption/lib/_common/key-highlights/key-highlights.component.ts","ng://@sunbird-cb/consumption/lib/_common/key-highlights/key-highlights.module.ts","ng://@sunbird-cb/consumption/lib/_common/events/events.component.ts","ng://@sunbird-cb/consumption/lib/_common/events/event-card/event-card.component.ts","ng://@sunbird-cb/consumption/lib/_common/events/events.module.ts","ng://@sunbird-cb/consumption/lib/_common/mdo-leaderboard/mdo-leaderboard.component.ts","ng://@sunbird-cb/consumption/lib/_common/mdo-leaderboard/mdo-leaderboard.module.ts","ng://@sunbird-cb/consumption/lib/_common/highlights-of-week/highlights-of-week.component.ts","ng://@sunbird-cb/consumption/lib/_common/highlights-of-week/highlights-of-week.module.ts","ng://@sunbird-cb/consumption/lib/_common/speakers/speakers.component.ts","ng://@sunbird-cb/consumption/lib/_common/speakers/speakers.module.ts","ng://@sunbird-cb/consumption/lib/_common/user-progress/user-progress.component.ts","ng://@sunbird-cb/consumption/lib/_common/user-progress/user-progress.module.ts","ng://@sunbird-cb/consumption/lib/_common/microsites/national-learning-week/national-learning.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__createBinding","o","m","k","k2","undefined","__exportStar","exports","__values","__read","ar","error","__spread","concat","__spreadArrays","il","a","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","ConsumptionService","Injectable","args","providedIn","ConsumptionComponent","ngOnInit","Component","selector","template","HorizontalScrollerV2Component","valueSvc","loadStatus","id","onHover","sliderConfig","showNavs","showDots","cerificateCardMargin","loadNext","EventEmitter","horizontalScrollElem","enablePrev","enableNext","activeNav","cardSubType","bottomDotsArray","scrollObserver","isMobile","defaultMenuSubscribe","isLtMedium$","_this","stripConfig","horizontalScrollElem_1","fromEvent","nativeElement","pipe","debounceTime","throttleTime","subscribe","updateNavigationBtnStatus","setTimeout","getBottomDotsArray","isLtMedium","ngOnChanges","timer","ngOnDestroy","unsubscribe","showPrev","clientWidth","scrollTo","left","scrollLeft","behavior","elem","scrollWidth","arrowsAlwaysOn","showNext","widthDiff","Math","abs","round","emit","ceil","slideTo","ele","diff","arrLength_1","cardWidth","document","getElementsByClassName","getElementById","scrollerWidth","widgetsLength","defaultMaxWidgets","ValueService","Input","Output","ViewChild","static","HorizontalScrollerV2Module","NgModule","declarations","imports","CommonModule","MatButtonModule","MatIconModule","MatProgressSpinnerModule","NsContent","IContinueLearningData","IContinueLearningDataReq","IContent","IContentResponse","IBatch","IBatchListResponse","ICourse","IContentMinimal","ICollectionHierarchyResponse","IRelatedContentMeta","ICreator","IContentTopic","IContact","IViewerContinueLearningRequest","EPrimaryCategory","EMiscPlayerSupportedCollectionTypes","EMimeTypes","EContentTypes","ECourseCategory","WFBlendedProgramStatus","WFBlendedProgramApprovalTypes","WFSTATUS_MSG_MAPPING","INITIATE","SEND_FOR_MDO_APPROVAL","SEND_FOR_PC_APPROVAL","APPROVED","REJECTED","WITHDRAWN","REMOVED","EXPIRED","EResourcePrimaryCategories","PLAYER_SUPPORTED_COLLECTION_TYPES","COURSE","MODULE","PROGRAM","CURATED_PROGRAM","BLENDED_PROGRAM","STANDALONE_ASSESSMENT","PLAYLIST","KB_SUPPORTED_CONTENT_TYPES","RESOURCE","PLAYLIST_SUPPORTED_CONTENT_TYPES","EDisplayContentTypes","EFilterCategory","ETagType","UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS","PUBLIC_SUPPORTED_CONTENT_TYPES","APPLICATION_JSON","FINAL_ASSESSMENT","HTML","HTML_TEXT","ZIP","ZIP2","M4A","MP3","MP4","PDF","YOUTUBE","TEXT_WEB","SURVEY","VIEWER_ROUTE_FROM_MIME","mimeType","COLLECTION","CHANNEL","CERTIFICATION","window","location","href","includes","IAP","ILP_FP","M3U8","WEB_MODULE","WEB_MODULE_EXERCISE","CLASS_DIAGRAM","HANDS_ON","RDBMS_HANDS_ON","HTML_PICKER","QUIZ","PRACTICE_RESOURCE","COLLECTION_RESOURCE","OFFLINE_SESSION","NsCardContent","viewerRouteGenerator","collectionId","collectionType","forPreview","primaryCategory","batchId","courseName","collId","collType","url","forcreator","queryParams","preview","editMode","ICard","IContentTags","ICompetency","EContentStatus","ACBPConst","IGOTConst","dayjs","dayjs_","PROTECTED_SLAG_V8","userId","ɵ1","COMPETENCIES","ɵ2","ɵ3","orgdetails","licenseDetails","fields","batchDetails","API_END_POINTS","FETCH_USER_GROUPS","FETCH_CPB_PLANS","FETCH_USER_ENROLLMENT_LIST","FETCH_USER_ENROLLMENT_LIST_PROFILE","FETCH_USER_ENROLLMENT_LIST_V2","WidgetUserServiceLib","environment","http","handleError","errorMessage","ErrorEvent","message","throwError","fetchUserGroupDetails","catchError","fetchUserBatchList","path","headers","HttpHeaders","Cache-Control","Pragma","Expires","map","data","coursesData","courses","forEach","content","contentStatus","storeUserEnrollmentInfo","userCourseEnrolmentInfo","fetchProfileUserBatchList","checkStorageData","dataKey","checkTime","localStorage","getItem","parsedData","JSON","parse","apiCache","getData","Observable","of","getSavedData","setTime","Date","getTime","setItem","stringify","resetTime","fetchCbpPlanList","cbpData","getCbpFormatedData","cbpDoIds","contentIds","join","cbpContentData","fetchEnrollmentDataByContentId","toPromise","res","enrollData","catch","_err","responseData","_a","mapCbpData","enrollmentData","enrolledCourseCount","userData","removeItem","contentdata","cbpContent","todayDate","format","contentList","childData","endDate","daysCount","OVERDUE","SUCCESS","UPCOMING","identifier","status","RETIRED","cbpFilteredContent","keys","cbp","childEnrollData","competencyArea","competencyTheme","competencyThemeType","competencySubTheme","competencyAreaId","competencyThemeId","competencySubThemeId","competencies_v5","element","sortedData","sort","firstDate","uniqueUsersByID","lodash.uniqBy","sortedByEndDate","lodash.orderBy","sortedByStatus","mapEnrollmentData","courseData","Inject","HttpClient","moment","moment_","type","ɵ1$1","contentId","ɵ2$1","certId","ɵ3$1","CONTENT","AUTHORING_CONTENT","CONTENT_LIKES","SET_S3_COOKIE","SET_S3_IMAGE_COOKIE","FETCH_MANIFEST","FETCH_WEB_MODULE_FILES","MULTIPLE_CONTENT","CONTENT_SEARCH_V5","CONTENT_SEARCH_V6","TRENDING_CONTENT_SEARCH","CONTENT_SEARCH_RELATED_CBP_V6","CONTENT_SEARCH_REGION_RECOMMENDATION","CONTENT_HISTORY","CONTENT_HISTORYV2","COURSE_BATCH_LIST","COURSE_BATCH","AUTO_ASSIGN_BATCH","AUTO_ASSIGN_CURATED_BATCH","AUTO_ASSIGN_OPEN_PROGRAM","USER_CONTINUE_LEARNING","CONTENT_RATING","COLLECTION_HIERARCHY","REGISTRATION_STATUS","MARK_AS_COMPLETE_META","ENROLL_BATCH","ENROLL_BATCH_WF","WITHDRAW_BATCH_WF","BLENDED_USER_WF","BLENDED_USER_COUNT","CERT_ADD_TEMPLATE","CERT_ISSUE","CERT_DOWNLOAD","READ_KARMAPOINTS","CONTENT_READ","READ_COURSE_KARMAPOINTS","CLAIM_KARMAPOINTS","USER_KARMA_POINTS","AGGREGATION_SEARCH","FEATURE_SEARCH","WidgetContentLibService","configSvc","userSvc","tocConfigData","BehaviorSubject","tocConfigData$","asObservable","telemetryData","Subject","telemetryData$","programChildCourseResumeData","programChildCourseResumeData$","changeTelemetryData","isResource","LEARNING_RESOURCE","COMP_ASSESSMENT","fetchMarkAsCompleteMeta","updateTocConfig","fetchContent","hierarchyType","_additionalFields","shareReplay","fetchAuthoringContent","fetchMultipleContent","ids","fetchCollectionHierarchy","pageNumber","pageSize","fetchBlendedCourse","fetchCourseBatches","req","post","retry","response","fetchCourseBatch","autoAssignBatchApi","autoAssignCuratedBatchApi","request","programType","MODERATED_PROGRAM","enrollUserToBatch","enrollAndUnenrollUserToBatchWF","fetchBlendedUserWF","fetchBlendedUserCOUNT","fetchContentLikes","fetchContentRatings","fetchContentHistory","fetchContentHistoryV2","courseId","subscribeData","resumeData","continueLearning","toLowerCase","reqBody","contextPathId","resourceId","timestamp","now","contextFullPath","dateAccessed","contextType","saveContinueLearning","finally","setS3Cookie","_contentId","EMPTY","setS3ImageCookie","fetchManifest","fetchWebModuleContent","encodeURIComponent","search","query","searchRegionRecommendation","preLabelValue","userProfile","country","filters","labels","searchV6","apiPath","_.get","searchRelatedCBPV6","fetchContentRating","deleteContentRating","delete","addContentRating","getFirstChildInHierarchy","children","artifactUrl","MANDATORY_COURSE_GOAL","child","KNOWLEDGE_ARTIFACT","firstChild","getRegistrationStatus","source","fetchConfig","addCertTemplate","patch","issueCert","downloadCert","trendingContentSearch","getKarmaPoitns","limit","offset","fetchProgramContent","getCourseKarmaPoints","claimKarmapoints","userKarmaPoints","getEnrolledData","doId","getResourseLink","enrolledCourse","enrolledCourseData","courseCategory","INVITE_ONLY_PROGRAM","isBatchInProgress","batch","checkForDataToFormUrl","gotoTocPage","completionPercentage","lrcProgressDetails","modifyEnrollData","name","lastReadContentId","getResourseDataWithData","firstChildId","contentData","urlData","resourseId","planType","batchData","startDate","isSameOrBefore","isSameOrAfter","postApiMethod","apiUrl","getApiMethod","getEnrolledDataFromList","enrollmentList","enrolledData","filter","ConfigurationsService","appSetup","userUrl","baseUrl","sitePath","hostPath","replace","userRoles","userGroups","restrictedFeatures","restrictedWidgets","instanceConfig","appsConfig","rootOrg","org","activeOrg","isProduction","hasAcceptedTnc","profileDetailsStatus","isActive","userPreference","userProfileV2","nodebbUserProfile","isAuthenticated","isNewUser","pinnedApps","Set","prefChangeNotifier","ReplaySubject","tourGuideNotifier","authChangeNotifier","updateProfile","updateProfileObservable","updateTourGuide","updateTourGuideObservable","updatePlatformRating","bottom","updatePlatformRatingObservable$","languageTranslationFlag","activeThemeObject","activeFontObject","isDarkMode","isIntranetAllowed","isRTL","activeLocale","activeLocaleGroup","completedActivity","completedTour","profileSettings","primaryNavBar","color","pageNavBar","primaryNavBarConfig","welcomeTabs","cstoken","changeNavBarFullView","openExploreMenuForMWeb","updateGlobalProfile","state","updateTourGuideMethod","updatePlatformRatingMethod","MultilingualTranslationsService","translate","selectedLang","languageSelected","languageSelectedObservable","editProfileDetails","getLanguage","unMappedUser","profileDetails","additionalProperties","webPortalLang","lang","use","setDefaultLang","translateLabelWithoutspace","subtype","nlabel","translationKey","instant","translationKeyn","translateLabel","sl_1","split","w","index","toUpperCase","slice","translateActualLabel","sl","editProfileDetailsAPI","updatelanguageSelected","userid","reqUpdates","TranslateService","IStripUnitContentData","ContentStripWithTabsLibComponent","_super","contentSvc","loggerSvc","eventSvc","utilitySvc","router","langtranslations","emptyResponse","viewAllResponse","telemtryResponse","providerId","emitViewAll","channnelName","random","stripsResultDataMap","stripsKeyOrder","showAccordionData","showParentLoader","showParentError","showParentNoData","errorDataCount","noDataCount","successDataCount","contentAvailable","veifiedKarmayogi","changeEventSubscription","todaysEvents","tslib_1.__extends","initData","showAccordion","mode","setHiddenForStrip","showStrip","sessionStorage","getIfStripHidden","storageItem","Boolean","widgetData","strips","strip","loader","_b","tslib_1.__values","_c","checkForEmptyWidget","fetchStripFromRequestData","processStrip","keyAndEvent","refreshEvent","eventType","from","toString","eventTypeSet","events$","event","fetchStripFromKey","calculateParentStatus","stripData","find","isStripShowing","count","programStripKey","tabs","stripTitle","programStripName","widgets","programStripPrimaryCategory","getdata","stripInfo","widget","checkCondition","wData","hideShowAll","viewMoreUrl","checkVisible","visibilityMode","getContineuLearningLenth","getLength","tabWithMaxWidgets","reduce","prev","current","getFiltersFromArray","v6filters","transformSearchV6FiltersV2","checkForDateFilters","eval","organisation","rootOrgId","designation","professionalDetails","loaderWidgets","transformSkeletonToWidgets","fetchFromEnrollmentList","fetchFromSearchV6","fetchFromTrendingContent","fetchAllCbpPlans","fetchAllTopContent","fetchAllFeaturedContent","fetchAllBookMarkData","fetchAllPlaylistSearch","fetchPlaylistReadData","fetchCiosContentData","content_1","contentNew_1","tabResults_1","postCardForSearch","contentTemp","progress","completionStatus","enrolledDate","lastContentAccessTime","lastReadContentStatus","issuedCertificates","dateA","splitEnrollmentTabsData","transformContentsToWidgets","contentNew","tabResults","splitData","getInprogressAndCompleted","fetchTabStatus","itmInner","array","customFilter","inprogress","completed","idx","arr","statusRetired","statusA","statusB","originalFilters","console","log","requestRequired","allTabs","currentTabFromMap","getTabDataByNewReqSearchV6","searchV6Request","results","checkInvitOnlyAssessments","Event","transformEventsToWidgets","filteredArray_1","now_1","tab","trendingSearch","getTabDataByNewReqTrending","trendingSearchRequest","responseKey","userRootOrgId","proccesedResult","certifications","toggleInfo","warn","contents","widgetType","widgetSubType","widgetHostClass","cardCustomeClass","customeClass","context","pageSection","position","intranetMode","deletedMode","contentTags","setEventListData","_content","loaderConfig","fetchStatus","_viewMoreUrl","tabsResults","canHideStrip","noDataWidget","errorWidget","info","title","stripTitleLink","disableTranslate","tabsType","stripName","stripBackground","secondaryHeading","preWidgets","postWidgets","showOnNoData","showOnLoader","showOnError","checkParentStatus","stripWidgetsCount","settledCount","totalCount","api","cbpList","topContent","featureContent","bookmarkRead","playlistSearch","playlistRead","ciosContent","tabClicked","tabEvent","stripMap","stripKey","tabLoading","textLabel","raiseInteractTelemetry","WsEvents","EnumInteractTypes","CLICK","subType","EnumInteractSubTypes","HOME_PAGE_STRIP_TABS","_.camelCase","module","EnumTelemetrymodules","HOME","currentStrip","tabSelected","computeDataOnClick","getTabDataByNewReqTopContent","getTabDataByNewReqPlaylistReadContent","getTabDataByCiosSearch","getTabDataByfilter","tabIndex","currentTab","splitCbpTabsData","getTabsList","all","upcoming","overdue","planDuration","allCompleted","allData","allInCompleted","allCompletedOverDue","allCompletedAll","getSelectedIndex","returnValue","translateLabels","identify","item","tracker","postMethodFilters","postRequestMethod","raiseTelemetry","getRequestMethod","showViewMore","orgList","featuredProvider","featuredProviders","getFullUrl","formedUrl","mdoChannelsBookmarkId","providerDataKey","redirectViewAll","queryParamsData","navigate","bookmarkId","transformAllContentsToWidgets","transformAllTabContentsToWidgets","finalPlaylistData_1","prgData","error_11","firstTab","extContentData","_currentTab","error_13","LoggerService","EventService","UtilityService","Router","HostBinding","WidgetBaseComponent","HttpLoaderFactory","TranslateHttpLoader","ContentStripWithTabsLibModule","SbUiResolverModule","RouterModule","MatToolbarModule","MatTooltipModule","MatListModule","MatSidenavModule","MatCardModule","MatExpansionModule","MatRadioModule","MatChipsModule","MatInputModule","MatFormFieldModule","MatDialogModule","MatSnackBarModule","MatSelectModule","MatDatepickerModule","MatNativeDateModule","MatTableModule","MatCheckboxModule","MatButtonToggleModule","MatTabsModule","MatAutocompleteModule","TranslateModule","forRoot","provide","TranslateLoader","useFactory","deps","entryComponents","SlidersLibComponent","events","currentIndex","slideInterval","reInitiateSlideInterval","interval","currentData","redirectUrl","openInNewTab","open","bannerUrl","pathname","pageUrl","bannerRedirectUrl","pageIdExt","IImageResponsiveUnit","customBreakPoints","xs","l","xl","xxl","ImageResponsiveDirective","breakpointObserver","src","srcBindUrl","currentSize","breakpointSubscription","observe","distinctUntilChanged","breakpoints","setSrc","Directive","BreakpointObserver","ImageResponsiveModule","NavigationDirective","wsUtilsNavigation","routeUrl","onMouseEnter","$event","preventDefault","stopPropagation","HostListener","NavigationModule","MyHammerConfig","buildHammer","Hammer","touchAction","HammerGestureConfig","SlidersLibModule","providers","HAMMER_GESTURE_CONFIG","useClass","PROVIDER_INSIGHTS","TRAINING_DETAILS","ANNOUNCEMENTS_DETAILS","LEARNERS","LEADERBOARD","LEADERBOARD_USERS","NLW_LEADERBOARD","INSIGHTS","USER_PROGRESS","InsiteDataService","fetchSearchData","fetchAnnouncementsData","fetchTrainingDetails","fetchLearner","channelId","fetchLeaderboard","fetchMdoUsers","orgId","fetchNwlStats","fetchInsightsData","payload","fetchUserProgress","DataPointsComponent","insightSvc","layoutType","fetchDataFromApi","pageLayout","customArray","isDataLoading","objectData","createCustomArray","metrics","getStats","getInsiteData","nByn","dataColSpan","organisations","requestType","nudges","nudgeData","converToIndianSystem","integerPart","decimalPart","lastThree","otherNumbers","formattedIntegerPart","substr","SkeletonLoaderLibComponent","bindingClass","height","width","SkeletonLoaderLibModule","FormsModule","ReactiveFormsModule","DataPointsModule","CalenderComponent","datePipe","showHeader","defaultDays","fullCalendor","days","trainings","currentDate","allMonths","monthsDropdown","currentMonthAndYear","transform","selectedMonth","getDaysInMonth","getFullYear","getMonth","getMonthsDropdownData","getDays","locale","category","contentType",">=","<=","channel","sort_by","lastUpdatedOn","resp","prevData","location_1","formatObject","startTime","convertTo12HourFormat","endTime","formatDate","registrationLink","getKeys","obj","date","timeString","time","hours","minutes","ampm","cDate","counter","initDate","myDate","setDate","getDate","year","month","selectMonth","DatePipe","CalenderDayComponent","webDisplayDate","mobileDisplayDate","openLink","link","fDate","CalenderModule","schemas","CUSTOM_ELEMENTS_SCHEMA","CommonMethodsService","handleCapitalize","str","_str","charAt","IStripUnitCommonData","CommonStripComponent","commonMethodsSvc","dataType","ɵ0$2","CommonStripModule","AnnouncementsComponent","mobileHeight","openDialog","isLoading","announcements","expand","expanded","fetchData","filterCriteriaMap","requestedFields","orderBy","orderDirection","facets","description","list","viewMoreOrLess","openAnnouncements","showMoreOrLess","AnnouncementsModule","TopLearnersComponent","loading","colors","toLocaleString","Number","_error","getRank","rank","getColor","randomIndex","floor","createInititals","initials","TopLearnersModule","ScrollableItemDirective","el","scrollIntoView","blockValue","block","ElementRef","CbpPlanComponent","styleData","sliderData","contentEle","localData","downloaUrl","getCurrentIndex","indexValue","getFileName","downloadUrl","at","downloadCBPPlan","xhr","XMLHttpRequest","responseType","onload","blob","Blob","URL","createObjectURL","createElement","download","appendChild","click","removeChild","revokeObjectURL","statusText","onerror","send","ViewChildren","SlidersNgContentLibComponent","loadNgContentData","autoScroll","customBanner","currentIndexValue","SlidersNgContentLibModule","ScrollableItemModule","CbpPlanModule","ConsumptionModule","ROOT_WIDGET_CONFIG","card","_type","cardResource","CardsComponent","contSvc","triggerTelemetry","isIntranetAllowedSettings","cbPlanInterval","setInterval","getCbPlanData","isInIntranet","getRedirectUrlData","externalId","cbpListArr","cbPlanMapData","clearInterval","raiseCardClick","CardResourceComponent","CardPortraitComponent","snackBar","isCardLoading","isCardFlipped","acbpConstants","showFlip","defaultThumbnail","logos","defaultContent","sourceLogos","sources","defaultSLogo","defaultSourceLogo","showSnackbar","showIntranetContent","duration","isLiveOrMarkForDeletion","MatSnackBar","PipePublicURL","mainUrl","finalURL","contentHost","contentBucket","Pipe","PipePublicURLModule","ObjectToArrayPipe","_i","ObjectToArrayPipeModule","DisplayContentTypeLibComponent","useTranslation","displayContentType","DEFAULT","displayContentTypeEnum","DisplayContentTypeLibModule","DefaultThumbnailDirective","wsUtilsDefaultThumbnail","isSrcUpdateAttemptedForDefault","srcUrl","updateSrc","DefaultThumbnailModule","PipeDurationTransformPipe","h","defaultDuration","hmsCalculation","duration2","moment.duration","moment.utc","asMilliseconds","duration2H","padStart","dur","space","PipeDurationTransformModule","CardUserComponent","rollup","CardLandscapeComponent","CardWideComponent","ver","version","CardMDOChannelComponent","channelData","emitTelemetry","channelClick","channeldata","redirectTo","orgName","CardWideV2Component","CardKarmaProgramsComponent","randomColorApply","randomColors","setRandomColor","randomIndex1","playListKey","CardKarmaProgramsV2Component","raiseTemeletry","ProviderCardComponent","CardPortraitExtComponent","CardAssessmentComponent","enrollList","activeResource","daysRemaining","daysPending","daysFinish","startCountdown","updateCountdown","distance","ɵ0$3","ɵ1$2","urls","DOWNLOAD_CERTIFICATE","DOWNLOAD_CERTIFICATE_v2","CertificateService","downloadCertificate","downloadCertificate_v2","CertificateDialogComponent","dialogRef","navUrl","cet","raiseIntreactTelemetry","style","remove","downloadCertPng","uriData","img","Image","canvas","ctx","getContext","drawImage","toDataURL","append","downloadCertPdf","dataImg","pdf","jsPDF","addImage","save","shareCert","raiseShareIntreactTelemetry","action","CERTIFICATE","host","class","MatDialogRef","MAT_DIALOG_DATA","CardProgressPortraitLibComponent","certificateService","dialog","downloadCertificateLoading","certificateData","certData_1","printUri","MatDialog","ContentProgressComponent","progressType","className","customClassName","rendom","role","aria-valuemin","aria-valuemax","[attr.aria-valuenow]","ContentProgressModule","MatProgressBarModule","ɵ0$4","DialogComponentsModule","MatMenuModule","PipeSafeSanitizerModule","CardMdoChannelV1Component","AvatarPhotoLibComponent","size","defaulfColor","randomColor","showBadge","showInitials","randomcolors","photoUrl","datalen","circleColor","change","currentValue","previousValue","firstChange","AvatarPhotoLibModule","MatRippleModule","ɵ0$5","CardsModule","WIDGET_REGISTERED_LIB_MODULES","WIDGET_REGISTRATION_LIB_CONFIG","component","NsContentStripWithFacets","IContentStripMultiple","IContentStripUnit","IStripRequestApi","INetworkRequestApi","IStripInfo","IContentStripResponseApi","IContentStripTab","SEARCH","IStripUnitContentData$1","ContentStripFacetFilterComponent","_fb","facetForm","group","stripRequestFor","ApiRequestFor","onTabClickRequest","fetchFromSearch","hideViewMoreUrl","requestBody","getSelectedPillIndex","tabdata","pillsData","findIndex","pill","selected","pillIndex","currentPillFromMap","pillSelected","resetFilter","resetSelectedPill","pillClicked","pillData","tabWithMaxWidgets_1","mapAllDataWithFacets","filteredData","contEle","nlwUserExp","contentFilteredData","getorgData","eventData","selectedValue","returnedValues","nlwOrgs","reset","FormBuilder","IStripUnitContentData$2","ContentStripWithTabsPillsComponent","fetchForYouData","allPills","currenPillsFromMap","countOfWidget_1","enrollInterval","HttpLoaderFactory1","ContentStripWithTabsPillsModule","ɵ0$6","ContentStripFacetFilterModule","API_POINTS","COMPETENCY_LIST","COMPETENCY_LIST_V2","CERTIFICATE_URL","CompetencyPassbookService","getCompetencyList","getCompetencyListv_V2","fetchCertificate","CompetencyPassbookComponent","competencySvc","cardDisplayCount","dynamicAlignPills","temeletryResponse","loadCometency","loadCompetencyArea","competencyVersion","allcompetencyTheme","competencyStrength","competencyThemeLength","showAllTheme","showAll","comeptencyKeys","compentency","compentencyVersionKey","getAllCompetencies","showMore","viewMore","getCompetencyArea","addfilter","createdFor","vCompetencyArea","callCompetencySearch","fact","values","area","addFilter","getcompetencyThemeCount","getThemeDataByArea","competencyChange","originalCompetencyArray","childEle","getcompetencyTheme","vCompetencyTheme","competencyThemeData_1","ele1","ele2","resetViewMore","areaData","competencyThemeData","themeData","getcompetencySubTheme","returnedData_1","competencyThemeData_2","comp","viewMoreChildren","displayAllTheme","navigateToCompetency","compData","navigateByUrl","compArea","vCompetencySubTheme","competencySubThemeData_1","areaEle","themeEle","obj1","some","obj2","every","PillsComponent","pillClick","dynamicClass","dynamicColor","requiredTitlecase","selectedPill","PillsModule","CompetencyPassbookModule","competency_URL","CompetencyPassbookMdoService","mdoCompetency","CompetencyPassbookMdoComponent","getMdoCompetencies","getMdoCompetency","facet","getCompetencyTheme","CompetencyPassbookMdoModule","PROXY_SLAG_V8","ɵ1$3","ɵ2$2","userID","GET_RATING","ADD_OR_UPDATE","GET_RATING_SUMMARY","GET_RATING_LOOKUP","GET_AUTHOR_REPLY","POST_AUTHOR_REPLY","RatingService","getRating","addOrUpdateRating","getRatingSummary","getRatingLookup","getRatingReply","getRatingIcon","ratingIndex","avg","avgRating","ratingFloor","getRatingIconClass","getAuthorReply","TOP_REVIEWS","UserContentRatingLibService","fetchTopReviews","UserContentRatingLibComponent","ratingService","userRatingSvc","formData","getTopReviews","contentInfo","rating","review","userDetails","handleScrollClick","dataValue","scrollableItems","x","UserContentRatingLibModule","MdoChannelV1Component","MdoChannelV2Component","route","sectionList","selectedIndex","hideCompetencyBlock","contentTabEmptyResponseCount","titles","icon","showModal","descriptionMaxLength","isTelemetryRaised","snapshot","form","onResize","setWidth","stripWidth","innerWidth","params","hideContentStrip","colData","contentStripData","triggerOpenDialog","overflow","onClose","raiseTelemetryInteratEvent","viewMoreText","_.kebabCase","typeOfTelemetry","toLocaleLowerCase","LEARN","raiseCompetencyTelemetry","hideCompetency","showAllContent","_stripData","columnData","contentStrip","sectionKey","ActivatedRoute","ɵ0$8","MDOChannelModule","ProvidersV2Component","providerName","getNavitems","navList","enabled","navigation","navOrder","scrollToSection","section","top","offsetTop","navItem","column","colEle","hideLearnerReview","learnerReview","pageDetails","raiseNavTelemetry","ɵ0$9","ProvidersModule","NationalLearningComponent","hideKeyHightlight","raiseTabClick","KeyHighlightsComponent","titleMaxLength","KeyHighlightsModule","EventsComponent","daysBetween","<","getEventsList","getDaysBetweenDates","nwlEventsConfig","localObj","isSame","currentDay","add","getEvents","slectedDate","nextDay","EventCardComponent","getEventDate","getPublicUrl","EventsModule","MdoLeaderboardComponent","insiteDataService","searchTerm","mdoLeaderBoard","user","getTabData","nameStr","getMedal","handleSearchQuery","org_name","toggleWeekHightlits","MdoLeaderboardModule","HighlightsOfWeekComponent","videoUrl","HighlightsOfWeekModule","SpeakersComponent","profileImage","SpeakersModule","UserProgressComponent","insitesData","userProgress","insights","getUserProgress","getInsightsData","userLeaderBoard","fullname","firstName","profileImageUrl","roundTo","number","UserProgressModule","NationalLearningModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsumptionService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-consumption',\n template: `\n <p>\n consumption works!\n </p>\n `,\n styles: []\n})\nexport class ConsumptionComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core';\nimport {\n fromEvent,\n Subscription,\n timer,\n} from 'rxjs';\nimport { debounceTime, throttleTime } from 'rxjs/operators';\nimport { TFetchStatus } from '../../_constants/misc.constants';\nimport { ValueService } from '@sunbird-cb/utils-v2';\nimport { NsCommonStrip } from '../common-strip/common-strip.model';\nimport { NsContentStripMultiple } from '../../_models/content-strip-multiple.model';\n\n@Component({\n selector: 'sb-uic-horizontal-scroller-v2',\n templateUrl: './horizontal-scroller-v2.component.html',\n styleUrls: ['./horizontal-scroller-v2.component.scss'],\n})\n\nexport class HorizontalScrollerV2Component implements OnInit, OnChanges, OnDestroy {\n\n @Input() loadStatus: TFetchStatus = 'fetching';\n @Input() id: string = '';\n @Input() onHover = false;\n @Input() sliderConfig: any = {\n showNavs: true,\n showDots: true,\n cerificateCardMargin: false,\n };\n @Output() loadNext = new EventEmitter();\n @Input() widgetsLength: any;\n @Input() defaultMaxWidgets: any;\n @Input() stripConfig: any;\n @ViewChild('horizontalScrollElem', { static: true })\n horizontalScrollElem: ElementRef | null = null;\n\n enablePrev = false;\n enableNext = false;\n activeNav = 0;\n cardSubType = 'standard';\n bottomDotsArray: any = [];\n private scrollObserver: Subscription | null = null;\n isMobile = false\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n\n constructor(private valueSvc: ValueService) { }\n\n ngOnInit() {\n this.cardSubType = this.stripConfig && this.stripConfig.cardSubType ? this.stripConfig.cardSubType : 'standard';\n if (this.horizontalScrollElem) {\n const horizontalScrollElem = this.horizontalScrollElem;\n this.scrollObserver = fromEvent(\n horizontalScrollElem.nativeElement,\n 'scroll',\n )\n .pipe(debounceTime(100), throttleTime(100))\n .subscribe(_ => {\n this.updateNavigationBtnStatus(horizontalScrollElem\n .nativeElement as HTMLElement);\n });\n setTimeout(() => {\n this.getBottomDotsArray();\n }, 700);\n }\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n\n ngOnChanges() {\n timer(100).subscribe(() => {\n if (this.horizontalScrollElem) {\n this.updateNavigationBtnStatus(this.horizontalScrollElem\n .nativeElement as HTMLElement);\n }\n });\n setTimeout(() => {\n this.getBottomDotsArray();\n }, 700);\n }\n\n ngOnDestroy() {\n if (this.scrollObserver) {\n this.scrollObserver.unsubscribe();\n }\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n\n showPrev() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft -= 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\n behavior: 'smooth',\n });\n \n const elem = this.horizontalScrollElem.nativeElement\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav -= 1;\n } else {\n if(this.sliderConfig.arrowsAlwaysOn) {\n if(this.horizontalScrollElem.nativeElement.scrollLeft === 0){\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: elem.scrollWidth,\n behavior: 'smooth',\n });\n this.activeNav = this.bottomDotsArray.length - 1;\n }\n }\n }\n }\n }\n\n showNext() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft += 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\n behavior: 'smooth',\n });\n const elem = this.horizontalScrollElem.nativeElement\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav += 1;\n } else {\n if(this.sliderConfig.arrowsAlwaysOn) {\n if(this.horizontalScrollElem.nativeElement.scrollLeft !== 0 && elem.clientWidth + elem.scrollLeft >= elem.scrollWidth ){\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: 0,\n behavior: 'smooth',\n });\n this.activeNav = 0;\n }\n }\n }\n }\n }\n\n private updateNavigationBtnStatus(elem: HTMLElement) {\n this.enablePrev = true;\n this.enableNext = true;\n if (elem.scrollLeft === 0) {\n if(!this.sliderConfig.arrowsAlwaysOn) {\n this.enablePrev = false;\n }\n this.activeNav = 0;\n }\n // if (elem.scrollWidth === Math.round(elem.clientWidth + elem.scrollLeft)) {\n // if (this.loadStatus === 'hasMore') {\n // this.loadNext.emit();\n // } else {\n // if(!this.sliderConfig.arrowsAlwaysOn) {\n // this.enableNext = false;\n // }\n // if (this.bottomDotsArray.length) {\n // this.activeNav = this.bottomDotsArray.length - 1;\n // }\n // }\n // }\n // if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n // this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth);\n // }\n\n\n const widthDiff = Math.abs(elem.scrollWidth - Math.round(elem.clientWidth + elem.scrollLeft))\n if (widthDiff === 0 || widthDiff === 1) {\n if (this.loadStatus === 'hasMore') {\n this.loadNext.emit()\n } else {\n this.enableNext = false\n if (this.bottomDotsArray.length) {\n this.activeNav = this.bottomDotsArray.length - 1\n }\n }\n }\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth)\n }\n }\n\n slideTo(ele: any) {\n const diff = ele - this.activeNav;\n // if (ele > this.activeNav && ele !== this.activeNav) {\n // if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // } else {\n // if (this.horizontalScrollElem && ele >= 0 && ele !== this.activeNav) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft - (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // }\n if (this.horizontalScrollElem) {\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth * diff),\n behavior: 'smooth',\n });\n }\n this.activeNav = ele;\n }\n\n getBottomDotsArray() {\n if (this.horizontalScrollElem) {\n this.bottomDotsArray = [];\n let cardWidth;\n let arrLength;\n if (this.cardSubType !== 'card-wide-v2') {\n cardWidth = this.cardSubType === 'standard' ? 245 :\n ((document.getElementsByClassName(this.cardSubType) &&\n document.getElementsByClassName(this.cardSubType)[0] !== undefined)\n ? document.getElementsByClassName(this.cardSubType)[0].clientWidth : 245);\n if (document.getElementById(`${this.id}`)) {\n const scrollerWidth = document.getElementById(`${this.id}`).clientWidth;\n const totalCardsLength = cardWidth * this.widgetsLength;\n if (totalCardsLength > scrollerWidth) {\n arrLength = Math.round(scrollerWidth / cardWidth);\n this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?\n this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets;\n arrLength = this.defaultMaxWidgets / arrLength;\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i);\n }\n }\n }\n } else {\n setTimeout(() => {\n this.bottomDotsArray = []\n arrLength = document.getElementsByClassName(this.cardSubType).length;\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i);\n }\n }, 1000);\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HorizontalScrollerV2Component } from './horizontal-scroller-v2.component';\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material';\n\n@NgModule({\n declarations: [HorizontalScrollerV2Component],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n ],\n exports: [HorizontalScrollerV2Component],\n})\nexport class HorizontalScrollerV2Module { }\n","export namespace NsContent {\n export interface IContinueLearningData extends IContent {\n continueData: any;\n }\n\n export interface IContinueLearningDataReq {\n request: {\n userId: string | undefined,\n courseId: string,\n contentIds: string[],\n batchId: string | undefined | null\n fields?: string[]\n };\n }\n\n export interface IContent {\n platform?: any;\n addedOn: string;\n appIcon: string;\n artifactUrl: string;\n averageRating?: any;\n // this will be used to content form enrollment user list\n batches?: any;\n batch?: any;\n body?: string;\n certificationList?: IRelatedContentMeta[];\n certificationStatus?: TCertificationStatus;\n certificationSubmissionDate?: string;\n certificationUrl: string;\n childNodes?: string[];\n children: IContent[];\n childrenClassifiers?: string[];\n clients?: IClient[];\n collections?: IContent[];\n completionPercentage?: number | null;\n completionStatus?: number;\n difficultyLevel: string;\n contentId: string;\n contentType: EContentTypes;\n contentUrlAtSource: string;\n creatorContacts: ICreator[];\n\n creatorDetails: ICreator[];\n creatorLogo: string;\n creatorPosterImage: string;\n creatorThumbnail: string;\n\n curatedTags: string[];\n description: string;\n displayContentType: EDisplayContentTypes; // For UI\n downloadUrl?: string;\n duration: number;\n enrolledDate?: string;\n exclusiveContent?: boolean;\n expiryDate?: string;\n equivalentCertifications?: IRelatedContentMeta[];\n hasAccess: boolean;\n hasAssessment?: string;\n idealScreenSize?: string;\n identifier: string;\n introductoryVideo?: string;\n introductoryVideoIcon?: string;\n learningTrack?: string;\n isExternal: boolean;\n isIframeSupported: 'Yes' | 'No' | 'Maybe';\n isInIntranet?: boolean;\n keywords?: string[];\n kArtifacts?: IRelatedContentMeta[];\n lastContentAccessTime?: string;\n lastUpdatedOn: string;\n learningMode?: TLearningMode;\n learningObjective: string;\n labels?: string[];\n locale?: string;\n hasTranslations?: { identifier: string; locale: string }[];\n isTranslationOf?: { identifier: string; locale: string }[];\n me_totalSessionsCount: number;\n mediaType: string;\n mimeType: EMimeTypes;\n msArtifactDetails?: IMSArtifactDetails;\n mode?: ETagType;\n name: string;\n nextCertificationAttemptDate?: string;\n playgroundInstructions?: string;\n playgroundResources?: IResourcePlayground[];\n postContents?: IPrePostContent[];\n posterImage?: string;\n preContents?: IPrePostContent[];\n preRequisites: string;\n price?: {\n currency: string\n value: number\n };\n primaryCategory: EPrimaryCategory;\n proctorUrl?: string;\n progress?: IMarkAsCompleteProgress;\n publishedOn: string;\n recentCertificationAttemptScore?: number;\n recommendationReasons?: string[];\n region?: string[];\n registrationUrl?: string;\n registrationInstructions?: string;\n resourceCategory?: string[];\n resourceType: string;\n size?: number;\n skills: ISkill[];\n softwareRequirements?: IResourceDetail[];\n sourceName: string;\n sourceShortName: string;\n sourceIconUrl?: string;\n sourceUrl?: string;\n ssoEnabled?: boolean;\n lastReadContentId?: string;\n status:\n | 'Draft'\n | 'InReview'\n | 'QualityReview'\n | 'Reviewed'\n | 'Processing'\n | 'Live'\n | 'Deleted'\n | 'MarkedForDeletion'\n | 'Expired';\n subTitle?: string;\n subTitles?: ISubtitle[];\n studyMaterials?: IRelatedContentMeta[];\n systemRequirements?: string[];\n tags: ITag[];\n topics: IContentTopic[];\n totalLikes?: { [key: string]: number };\n totalRating?: number;\n track: ITrack[];\n uniqueLearners?: number;\n viewCount?: { [key: string]: number };\n reason?: string; // required for Knowledge board\n trainingLHubCount?: number; // for LHub trainings\n verifiers?: {\n // required for External Certifications\n name: string\n email: string\n id: string\n }[];\n references?: { url: string; title: string }[];\n resumePage?: number; // For player WebModule in UI\n [key: string]: any;\n optionalReading: boolean;\n additionalTags?: string[];\n }\n\n export interface IContentResponse {\n id: string;\n params: any;\n responseCode: string;\n result: {\n content: IContent\n };\n ts: string;\n ver: string;\n }\n\n export interface IBatch {\n batchId: string;\n createdBy: string;\n endDate: string | null;\n enrollmentType: string;\n identifier: string;\n name: string;\n startDate: string;\n status: number;\n cert_templates?: null;\n collectionId: string;\n courseId: string;\n createdDate: string;\n createdFor: string[];\n description?: null;\n enrollmentEndDate: string | null;\n id: string;\n mentors?: string[] | null;\n tandc?: null;\n updatedDate?: string | null;\n }\n\n export interface IBatchListResponse {\n content?: IBatch[];\n count?: number;\n enrolled?: boolean;\n workFlow?: {\n wfInitiated?: boolean\n batch?: any\n wfItem?: any\n };\n }\n\n export interface ICourse {\n active: true;\n addedBy: string;\n batch: IBatch;\n batchId: string;\n certificates: [];\n collectionId: string;\n completedOn: string | null;\n completionPercentage: number | null;\n completionStatus?: number;\n content: IContent;\n contentId: string;\n contentStatus: any;\n courseId: string;\n courseLogoUrl: string;\n courseName: string;\n dateTime: number;\n description: string;\n enrolledDate: string;\n issuedCertificates: [];\n lastContentAccessTime?: string;\n lastReadContentId?: string;\n lastReadContentStatus: string | null;\n leafNodesCount: number;\n progress: number;\n status: number;\n userId: string;\n }\n\n export interface IContentMinimal {\n appIcon: string;\n artifactUrl: string;\n difficultyLevel: string;\n contentType: EContentTypes;\n description: string;\n displayContentType?: EDisplayContentTypes;\n duration: number;\n identifier: string;\n hasAccess?: boolean;\n isInIntranet?: boolean;\n learningMode?: TLearningMode;\n mimeType: EMimeTypes;\n name: string;\n creatorDetails: ICreator[];\n creatorContacts: ICreator[];\n posterImage: string;\n primaryCategory: EPrimaryCategory;\n resourceType?: string;\n totalRating?: number;\n }\n\n export interface ICollectionHierarchyResponse {\n data: IContent;\n hasMore: boolean;\n totalContents: number;\n }\n\n export interface IRelatedContentMeta {\n identifier: string;\n name: string;\n }\n\n type TCertificationStatus = 'ongoing' | 'passed' | 'canAttempt' | 'cannotAttempt';\n export type TLearningMode = 'Self-Paced' | 'Instructor-Led' | 'Open' | 'Closed';\n\n interface IMarkAsCompleteProgress {\n progressStatus: 'open' | 'started' | 'completed';\n showMarkAsComplete: boolean;\n markAsCompleteReason: string;\n progressSupported: boolean;\n progress: number | null;\n }\n\n interface ITag {\n id: string;\n type: string;\n value: string;\n }\n interface IMSArtifactDetails {\n channelId: string;\n videoId: string;\n }\n interface IClient {\n displayName: string;\n id: string;\n name: string;\n }\n interface ISubtitle {\n srclang: string;\n label: string;\n url: string;\n }\n interface IPrePostContent {\n identifier: string;\n name: string;\n }\n interface IResourceDetail {\n title?: string;\n url?: string;\n }\n interface IResourcePlayground {\n appIcon: string;\n artifactUrl: string;\n identifier: string;\n name: string;\n }\n interface ITrack {\n id: string;\n name: string;\n status: string;\n visibility: string;\n }\n interface ISkill {\n id: string;\n category: string;\n skill: string;\n name: string;\n }\n export interface ICreator {\n id: string;\n name: string;\n email: string;\n }\n export interface IContentTopic {\n identifier: string;\n name: string;\n }\n // API Based\n\n export interface IContact {\n id: string;\n name: string;\n email: string;\n }\n\n export interface IViewerContinueLearningRequest {\n resourceId: string;\n contextPathId: string;\n data: string;\n dateAccessed: number;\n contextType?: string;\n }\n /**\n * @deprecated Enum EContentTypes should not be used in future\n */\n export enum EContentTypes {\n PROGRAMV2 = 'Program',\n PROGRAM = 'Learning Path',\n CHANNEL = 'Channel',\n COURSE = 'Course',\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\n KNOWLEDGE_BOARD = 'Knowledge Board',\n LEARNING_JOURNEY = 'Learning Journeys',\n MODULE = 'CourseUnit',\n RESOURCE = 'Resource',\n }\n export enum EPrimaryCategory {\n PROGRAM = 'Program',\n COURSE = 'Course',\n MODULE = 'Course Unit',\n RESOURCE = 'Learning Resource',\n GOALS = 'GOALS',\n PLAYLIST = 'PLAYLIST',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n COMP_ASSESSMENT = 'Competency Assessment',\n FTB_QUESTION = 'FTB Question',\n MTF_QUESTION = 'MTF Question',\n MULTIPLE_CHOICE_QUESTION = 'Multiple Choice Question',\n SINGLE_CHOICE_QUESTION = 'Single Choice Question',\n MANDATORY_COURSE_GOAL = 'Mandatory Course Goal',\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\n BLENDED_PROGRAM = 'Blended Program',\n OFFLINE_SESSION = 'Offline Session',\n CURATED_PROGRAM = 'Curated Program',\n // following will not be available soon\n /**\n * @deprecated The type should not be used\n */\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\n /**\n * @deprecated The type should not be used\n */\n KNOWLEDGE_BOARD = 'Knowledge Board',\n /**\n * @deprecated The type should not be used\n */\n LEARNING_JOURNEY = 'Learning Journeys',\n /**\n * @deprecated The type should not be used\n */\n CHANNEL = 'Channel',\n }\n\n export enum ECourseCategory {\n INVITE_ONLY_PROGRAM = 'Invite-Only Program',\n MODERATED_PROGRAM = 'Moderated Program',\n BLENDED_PROGRAM = 'Blended Program',\n CURATED_PROGRAM = 'Curated Program',\n COURSE = 'Course',\n MODERATED_COURSE = 'Moderated Course',\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\n MODERATED_ASSESSEMENT = 'Moderated Assessment',\n }\n\n export enum WFBlendedProgramStatus {\n INITIATE = 'INITIATE',\n SEND_FOR_MDO_APPROVAL = 'SEND_FOR_MDO_APPROVAL',\n SEND_FOR_PC_APPROVAL = 'SEND_FOR_PC_APPROVAL',\n APPROVED = 'APPROVED',\n REJECTED = 'REJECTED',\n WITHDRAWN = 'WITHDRAWN',\n REMOVED = 'REMOVED',\n WITHDRAW = 'WITHDRAW',\n }\n export enum WFBlendedProgramApprovalTypes {\n ONE_STEP_PC = 'oneStepPCApproval',\n ONE_STEP_MDO = 'oneStepMDOApproval',\n TWO_STEP_MDO_PC = 'twoStepMDOAndPCApproval',\n TWO_STEP_PC_MDO = 'twoStepPCAndMDOApproval',\n }\n\n export const WFSTATUS_MSG_MAPPING: any = {\n INITIATE: '',\n SEND_FOR_MDO_APPROVAL: 'BatchEnrollL1Msg',\n SEND_FOR_PC_APPROVAL: 'BatchEnrollL2Msg',\n APPROVED: 'BatchEnrollApprovedMsg',\n REJECTED: 'BatchEnrollRejectedMsg',\n WITHDRAWN: 'BatchEnrollWithdrawMsg',\n REMOVED: 'BatchEnrollRemoveMsg',\n EXPIRED: 'BatchListExpiredMsg',\n };\n\n export enum EResourcePrimaryCategories {\n LEARNING_RESOURCE = 'Learning Resource',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n COMP_ASSESSMENT = 'Competency Assessment',\n OFFLINE_SESSION = 'Offline Session',\n }\n\n export enum EMiscPlayerSupportedCollectionTypes {\n PLAYLIST = 'Playlist',\n }\n export const PLAYER_SUPPORTED_COLLECTION_TYPES: string[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.CURATED_PROGRAM,\n EPrimaryCategory.BLENDED_PROGRAM,\n EPrimaryCategory.STANDALONE_ASSESSMENT,\n EMiscPlayerSupportedCollectionTypes.PLAYLIST,\n ];\n export const KB_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.RESOURCE,\n ];\n export const PLAYLIST_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.RESOURCE,\n ];\n export enum EMimeTypes {\n COLLECTION = 'application/vnd.ekstep.content-collection',\n ZIP = 'application/vnd.ekstep.html-archive',\n ZIP2 = 'application/vnd.ekstep.ecml-archive',\n HTML = 'application/html',\n HTML_TEXT = 'text/html',\n ILP_FP = 'application/ilpfp',\n IAP = 'application/iap-assessment',\n M4A = 'audio/m4a',\n MP3 = 'audio/mpeg',\n MP4 = 'video/mp4',\n M3U8 = 'application/x-mpegURL',\n INTERACTION = 'video/interactive',\n PDF = 'application/pdf',\n QUIZ = 'application/quiz',\n DRAG_DROP = 'application/drag-drop',\n HTML_PICKER = 'application/htmlpicker',\n WEB_MODULE = 'application/web-module',\n WEB_MODULE_EXERCISE = 'application/web-module-exercise',\n YOUTUBE = 'video/x-youtube',\n HANDS_ON = 'application/integrated-hands-on',\n RDBMS_HANDS_ON = 'application/rdbms',\n CLASS_DIAGRAM = 'application/class-diagram',\n CHANNEL = 'application/channel',\n COLLECTION_RESOURCE = 'resource/collection',\n APPLICATION_JSON = 'application/json',\n PRACTICE_RESOURCE = 'application/vnd.sunbird.questionset',\n FINAL_ASSESSMENT = 'application/vnd.sunbird.questionset',\n OFFLINE_SESSION = 'application/offline',\n // Added on UI Only\n CERTIFICATION = 'application/certification',\n PLAYLIST = 'application/playlist',\n TEXT_WEB = 'text/x-url',\n SURVEY = 'application/survey',\n QUESTION_SET = 'application/vnd.sunbird.questionset',\n QUESTION = 'application/vnd.sunbird.question',\n UNKNOWN = 'application/unknown',\n }\n export enum EDisplayContentTypes {\n ASSESSMENT = 'ASSESSMENT',\n STANDALONE_ASSESSMENT = 'STANDALONE ASSESSMENT',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n AUDIO = 'AUDIO',\n CERTIFICATION = 'CERTIFICATION',\n CHANNEL = 'Channel',\n CLASS_DIAGRAM = 'CLASS_DIAGRAM',\n COURSE = 'COURSE',\n DEFAULT = 'DEFAULT',\n DRAG_DROP = 'DRAG_DROP',\n EXTERNAL_CERTIFICATION = 'EXTERNAL_CERTIFICATION',\n EXTERNAL_COURSE = 'EXTERNAL_COURSE',\n GOALS = 'GOALS',\n HANDS_ON = 'HANDS_ON',\n IAP = 'IAP',\n INSTRUCTOR_LED = 'INSTRUCTOR_LED',\n INTERACTIVE_VIDEO = 'INTERACTIVE_VIDEO',\n KNOWLEDGE_ARTIFACT = 'KNOWLEDGE_ARTIFACT',\n MODULE = 'MODULE',\n PDF = 'PDF',\n SURVEY = 'SURVEY',\n PLAYLIST = 'PLAYLIST',\n PROGRAM = 'PROGRAM',\n QUIZ = 'QUIZ',\n RESOURCE = 'RESOURCE',\n RDBMS_HANDS_ON = 'RDBMS_HANDS_ON',\n VIDEO = 'VIDEO',\n WEB_MODULE = 'WEB_MODULE',\n WEB_PAGE = 'WEB_PAGE',\n YOUTUBE = 'YOUTUBE',\n LINK = 'LINK',\n KNOWLEDGE_BOARD = 'Knowledge Board',\n LEARNING_JOURNEY = 'Learning Journeys',\n BLENDED_PROGRAM = 'BLENDED PROGRAM',\n CURATED_PROGRAM = 'CURATED PROGRAM',\n }\n // for UI\n export enum EFilterCategory {\n ALL = 'ALL',\n LEARN = 'LEARN',\n PRACTICE = 'PRACTICE',\n ASSESS = 'ASSESS',\n }\n\n // for UI\n export enum ETagType {\n NEWLY_ADDED = 'NEWLY ADDED',\n }\n\n export const UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS: string[] = [\n // this is comment now for enabling links in the toc page for enrolled users\n // EMimeTypes.QUIZ,\n // EMimeTypes.APPLICATION_JSON,\n // EMimeTypes.WEB_MODULE_EXERCISE,\n\n ];\n export const PUBLIC_SUPPORTED_CONTENT_TYPES: EMimeTypes[] = [\n EMimeTypes.APPLICATION_JSON,\n EMimeTypes.FINAL_ASSESSMENT,\n EMimeTypes.HTML,\n EMimeTypes.HTML_TEXT,\n EMimeTypes.ZIP,\n EMimeTypes.ZIP2,\n EMimeTypes.M4A,\n EMimeTypes.MP3,\n EMimeTypes.MP4,\n EMimeTypes.PDF,\n EMimeTypes.YOUTUBE,\n EMimeTypes.TEXT_WEB,\n EMimeTypes.SURVEY,\n ];\n}\n","import { NsContent } from '../_models/widget-content.model';\n\nexport const VIEWER_ROUTE_FROM_MIME = (mimeType: NsContent.EMimeTypes) => {\n switch (mimeType) {\n case NsContent.EMimeTypes.MP3:\n return 'audio';\n case NsContent.EMimeTypes.M4A:\n return 'audio-native';\n case NsContent.EMimeTypes.COLLECTION:\n return 'html';\n case NsContent.EMimeTypes.CHANNEL:\n // case 'application/json' as any:\n // return 'channel'\n case NsContent.EMimeTypes.CERTIFICATION:\n return 'certification';\n case NsContent.EMimeTypes.HTML_TEXT:\n case NsContent.EMimeTypes.HTML:\n case NsContent.EMimeTypes.ZIP:\n if (window.location.href.includes('mobile/html')) {\n return 'mobile/html';\n }\n return 'html';\n case NsContent.EMimeTypes.TEXT_WEB:\n return 'youtube';\n case NsContent.EMimeTypes.SURVEY:\n return 'survey';\n case NsContent.EMimeTypes.IAP:\n return 'iap';\n case NsContent.EMimeTypes.ILP_FP:\n return 'ilp-fp';\n case NsContent.EMimeTypes.PDF:\n return 'pdf';\n case NsContent.EMimeTypes.MP4:\n case NsContent.EMimeTypes.M3U8:\n return 'video';\n case NsContent.EMimeTypes.YOUTUBE:\n return 'youtube';\n // return 'html'\n case NsContent.EMimeTypes.WEB_MODULE:\n return 'web-module';\n case NsContent.EMimeTypes.WEB_MODULE_EXERCISE:\n return 'web-module';\n case NsContent.EMimeTypes.CLASS_DIAGRAM:\n return 'class-diagram';\n case NsContent.EMimeTypes.HANDS_ON:\n return 'hands-on';\n case NsContent.EMimeTypes.RDBMS_HANDS_ON:\n return 'rdbms-hands-on';\n case NsContent.EMimeTypes.HTML_PICKER:\n return 'html-picker';\n case NsContent.EMimeTypes.QUIZ:\n case NsContent.EMimeTypes.APPLICATION_JSON:\n return 'quiz';\n case NsContent.EMimeTypes.PRACTICE_RESOURCE:\n return 'practice';\n case NsContent.EMimeTypes.COLLECTION_RESOURCE:\n return 'resource-collection';\n case NsContent.EMimeTypes.OFFLINE_SESSION:\n return 'offline-session';\n default:\n return 'html';\n }\n};\n\nexport function viewerRouteGenerator(\n id: string,\n mimeType: NsContent.EMimeTypes,\n collectionId?: string,\n collectionType?: string,\n forPreview = false,\n primaryCategory?: string,\n batchId?: string,\n courseName?: string,\n): { url: string; queryParams: { [key: string]: any } } {\n let collId = collectionId;\n let collType = collectionType;\n if (collType && !NsContent.PLAYER_SUPPORTED_COLLECTION_TYPES.includes(collType)) {\n collId = undefined;\n collType = undefined;\n }\n const url = `/viewer/${VIEWER_ROUTE_FROM_MIME(mimeType)}/${id}`;\n // tslint:disable-next-line\n // console.log(url,'========>Route from MIME TYPE<==========')\n const forcreator = window.location.href.includes('editMode=true');\n let queryParams = {};\n if (primaryCategory) {\n queryParams = {\n primaryCategory,\n };\n }\n if (collectionId && collectionType) {\n queryParams = { ...queryParams, collectionId: collId, collectionType: collType };\n }\n if (batchId) {\n queryParams = { ...queryParams, batchId };\n }\n if (courseName) {\n queryParams = { ...queryParams, courseName };\n }\n if (forPreview) {\n queryParams = { ...queryParams, preview: true };\n }\n if (forcreator) {\n queryParams = { ...queryParams, editMode: true };\n }\n return {\n queryParams,\n url,\n };\n}\n","import { NsContent } from './widget-content.model';\n\nexport namespace NsCardContent {\n export interface ICard {\n content: NsContent.IContent;\n cardSubType: TCardSubType;\n context: { pageSection: string; position?: number };\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n likes?: number;\n contentTags?: IContentTags;\n stateData: any;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField?: string;\n }\n\n export interface ICompetency extends ICard {\n competencyArea: '';\n competencyObject: {};\n }\n\n export type TCardSubType =\n | 'standard'\n | 'minimal'\n | 'space-saving'\n | 'card-user-details'\n | 'basic-info'\n | 'basic-details'\n | 'card-description-back'\n | 'network-card';\n\n export enum EContentStatus {\n LIVE = 'Live',\n EXPIRED = 'Expired',\n DELETED = 'Deleted',\n MARK_FOR_DELETION = 'MarkedForDeletion',\n }\n\n export enum ACBPConst {\n UPCOMING = 'upcoming',\n ALL = 'All',\n OVERDUE = 'overdue',\n SUCCESS = 'success',\n }\n\n export enum IGOTConst {\n COMPETENCIES = 'competencies_v5',\n RETIRED = 'Retired',\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { IUserGroupDetails } from '../_models/widget-user.model';\nimport { NsContent } from '../_models/widget-content.model';\nimport 'rxjs/add/observable/of'\nimport * as dayjs_ from 'dayjs';\nconst dayjs = dayjs_\n// import { environment } from 'src/environments/environment'\nimport { NsCardContent } from '../_models/card-content-v2.model';\nimport * as lodash from 'lodash';\n\n\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\nconst API_END_POINTS = {\n FETCH_USER_GROUPS: (userId: string) =>\n `${PROTECTED_SLAG_V8}/user/group/fetchUserGroup?userId=${userId}`,\n FETCH_CPB_PLANS: `/apis/proxies/v8/user/v1/cbplan`,\n FETCH_USER_ENROLLMENT_LIST: (userId: string | undefined) =>\n // tslint:disable-next-line: max-line-length\n `/apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=orgName,email&licenseDetails=name,description,url&fields=contentType,primaryCategory,courseCategory,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,posterImage,duration,creatorLogo,license,version,versionKey,avgRating,additionalTags,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=name,endDate,startDate,status,enrollmentType,createdBy,certificates,batchAttributes`,\n FETCH_USER_ENROLLMENT_LIST_PROFILE: (userId: string | undefined) =>\n // tslint:disable-next-line: max-line-length\n `/apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=orgName,email&licenseDetails=name,description,url&fields=contentType,primaryCategory,courseCategory,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,posterImage,duration,creatorLogo,license,version,versionKey,avgRating,additionalTags,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=name,endDate,startDate,status,enrollmentType,createdBy,certificates,batchAttributes&retiredCoursesEnabled=true`,\n // tslint:disable-next-line: max-line-length\n FETCH_USER_ENROLLMENT_LIST_V2: (userId: string | undefined, orgdetails: string, licenseDetails: string, fields: string, batchDetails: string) =>\n // tslint:disable-next-line: max-line-length\n `apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=${orgdetails}&licenseDetails=${licenseDetails}&fields=${fields},courseCategory,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=${batchDetails}`,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetUserServiceLib {\n environment: any;\n constructor(\n @Inject('environment') environment: any,\n private http: HttpClient) {\n this.environment = environment;\n }\n\n handleError(error: ErrorEvent) {\n let errorMessage = ''\n if (error.error instanceof ErrorEvent) {\n errorMessage = `Error: ${error.error.message}`\n }\n return throwError(errorMessage)\n }\n\n fetchUserGroupDetails(userId: string): Observable<IUserGroupDetails[]> {\n return this.http\n .get<IUserGroupDetails[]>(API_END_POINTS.FETCH_USER_GROUPS(userId))\n .pipe(catchError(this.handleError))\n }\n // tslint:disable-next-line: max-line-length\n fetchUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\n let path = ''\n if (queryParams) {\n // tslint:disable-next-line: max-line-length\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails)\n } else {\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST(userId)\n }\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n })\n const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map( \n (data: any) => {\n const coursesData: any = []\n if (data && data.result && data.result.courses) {\n data.result.courses.forEach((content: any) => {\n if (content.contentStatus) {\n delete content.contentStatus\n }\n coursesData.push(content)\n })\n this.storeUserEnrollmentInfo(data.result.userCourseEnrolmentInfo,\n data.result.courses.length)\n data.result.courses = coursesData\n }\n return data.result\n }\n )\n )\n return result\n }\n\n // tslint:disable-next-line: max-line-length\n fetchProfileUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\n let path = ''\n if (queryParams) {\n // tslint:disable-next-line: max-line-length\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails)\n } else {\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_PROFILE(userId)\n }\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n })\n return this.http\n .get(path, { headers })\n .pipe(\n catchError(this.handleError),\n map(\n (data: any) => data.result\n )\n )\n }\n\n checkStorageData(key: any, dataKey: any) {\n const checkTime = localStorage.getItem('timeCheck')\n if (checkTime) {\n const parsedData = JSON.parse(checkTime)\n if (parsedData[key]) {\n const date = dayjs()\n const diffMin = date.diff(parsedData[key], 'minute')\n const timeCheck = this.environment.apiCache || 0\n if (diffMin >= timeCheck) {\n return true\n }\n return localStorage.getItem(dataKey) ? false : true\n }\n return true\n }\n return true\n }\n\n getData(key: any): Observable<any> {\n return Observable.of(JSON.parse(localStorage.getItem(key) || '{}'))\n }\n getSavedData(key: any): Observable<any> {\n return JSON.parse(localStorage.getItem(key) || '')\n }\n\n setTime(key: any) {\n const checkTime = localStorage.getItem('timeCheck')\n if (checkTime) {\n const parsedData = JSON.parse(checkTime)\n parsedData[key] = new Date().getTime()\n localStorage.setItem('timeCheck', JSON.stringify(parsedData))\n } else {\n const data: any = {}\n data[key] = new Date().getTime()\n localStorage.setItem('timeCheck', JSON.stringify(data))\n }\n }\n\n resetTime(key: any) {\n const checkTime = localStorage.getItem('timeCheck')\n if (checkTime) {\n const parsedData = JSON.parse(checkTime)\n if (parsedData[key]) {\n delete parsedData[key]\n localStorage.setItem('timeCheck', JSON.stringify(parsedData))\n }\n }\n }\n\n fetchCbpPlanList(userId: string) {\n if (this.checkStorageData('cbpService', 'cbpData')) {\n const result: any = this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\n async (data: any) => {\n if(data.result && data.result.content && data.result.content.length) {\n let cbpData: any = this.getCbpFormatedData(data.result.content)\n let cbpDoIds = cbpData.contentIds.join(',')\n let cbpContentData: any = cbpData.cbpContentData || []\n const responseData = await this.fetchEnrollmentDataByContentId(userId,cbpDoIds).toPromise().then(async (res: any) => {\n const enrollData: any = {}\n if (res && res.courses && res.courses.length) {\n res.courses.forEach((data: any) => {\n enrollData[data.collectionId] = data\n })\n return enrollData\n } else {\n return {}\n }\n }).catch((_err: any) => {\n return {}\n });\n return await this.mapCbpData(cbpContentData, responseData)\n }\n }\n )\n )\n this.setTime('cbpService')\n return result\n }\n return this.getData('cbpData')\n }\n\n storeUserEnrollmentInfo(enrollmentData: any, enrolledCourseCount: number) {\n const userData = {\n enrolledCourseCount,\n userCourseEnrolmentInfo: enrollmentData,\n }\n localStorage.removeItem('userEnrollmentCount')\n localStorage.setItem('userEnrollmentCount', JSON.stringify(userData))\n }\n\n\n fetchEnrollmentDataByContentId(userId, contentdata) {\n let path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST(userId)\n path = `${path}&courseIds=${contentdata}&cache=false'`\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n })\n return this.http\n .get(path, { headers })\n .pipe(\n catchError(this.handleError),\n map(\n (data: any) => data.result\n )\n )\n }\n\n getCbpFormatedData(cbpContent: any) {\n let cbpContentData = []\n let contentIds = []\n const todayDate = dayjs().format('YYYY-MM-DD')\n cbpContent.forEach((c: any) => {\n c.contentList.forEach((childData: any) => {\n const endDate = dayjs(c.endDate).format('YYYY-MM-DD')\n const daysCount = dayjs(endDate).diff(todayDate, 'day')\n childData['planDuration'] = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29\n ? NsCardContent.ACBPConst.SUCCESS : NsCardContent.ACBPConst.UPCOMING\n childData['endDate'] = c.endDate\n childData['parentId'] = c.id\n childData['planType'] = 'cbPlan'\n childData['contentStatus'] = 0\n contentIds.push(childData.identifier)\n if (childData.status !== NsCardContent.IGOTConst.RETIRED) {\n cbpContentData.push(childData)\n }\n })\n })\n return {cbpContentData,contentIds}\n }\n async mapCbpData(cbpContent: any, enrollmentData: any){\n let cbpFilteredContent: any = []\n if(cbpContent && cbpContent.length) {\n if(Object.keys(enrollmentData).length) {\n cbpContent.forEach((cbp: any) => {\n const childEnrollData = enrollmentData[cbp.identifier]\n\n const competencyArea: any = []\n const competencyTheme: any = []\n const competencyThemeType: any = []\n const competencySubTheme: any = []\n const competencyAreaId: any = []\n const competencyThemeId: any = []\n const competencySubThemeId: any = []\n cbp['contentStatus'] = 0\n if (childEnrollData) {\n cbp['contentStatus'] = childEnrollData.status\n }\n if (cbp.competencies_v5) {\n cbp.competencies_v5.forEach((element: any) => {\n if (!competencyArea.includes(element.competencyArea)) {\n competencyArea.push(element.competencyArea)\n competencyAreaId.push(element.competencyAreaId)\n }\n if (!competencyTheme.includes(element.competencyTheme)) {\n competencyTheme.push(element.competencyTheme)\n competencyThemeId.push(element.competencyThemeId)\n }\n if (!competencyThemeType.includes(element.competencyThemeType)) {\n competencyThemeType.push(element.competencyThemeType)\n }\n if (!competencySubTheme.includes(element.competencySubTheme)) {\n competencySubTheme.push(element.competencySubTheme)\n competencySubThemeId.push(element.competencySubThemeId)\n }\n })\n }\n\n cbp['competencyArea'] = competencyArea\n cbp['competencyTheme'] = competencyTheme\n cbp['competencyThemeType'] = competencyThemeType\n cbp['competencySubTheme'] = competencySubTheme\n cbp['competencyAreaId'] = competencyAreaId\n cbp['competencyThemeId'] = competencyThemeId\n cbp['competencySubThemeId'] = competencySubThemeId\n if (cbp.status !== NsCardContent.IGOTConst.RETIRED) {\n cbpFilteredContent.push(cbp)\n } else {\n if (childEnrollData && childEnrollData.status === 2) {\n cbpFilteredContent.push(cbp)\n }\n }\n });\n if (cbpFilteredContent.length > 1) {\n const sortedData: any = cbpFilteredContent.sort((a: any, b: any) => {\n const firstDate: any = new Date(a.endDate)\n const secondDate: any = new Date(b.endDate)\n\n return secondDate > firstDate ? 1 : -1\n })\n const uniqueUsersByID = lodash.uniqBy(sortedData, 'identifier')\n const sortedByEndDate = lodash.orderBy(uniqueUsersByID, ['endDate'], ['asc'])\n const sortedByStatus = lodash.orderBy(sortedByEndDate, ['contentStatus'], ['asc'])\n localStorage.setItem('cbpData', JSON.stringify(sortedByStatus))\n return sortedByStatus\n }\n localStorage.setItem('cbpData', JSON.stringify(cbpFilteredContent))\n return cbpFilteredContent\n }\n localStorage.setItem('cbpData', JSON.stringify(cbpContent))\n return cbpContent\n }\n localStorage.setItem('cbpData', JSON.stringify([]))\n return []\n }\n mapEnrollmentData(courseData: any) {\n const enrollData: any = {}\n if (courseData && courseData.courses.length) {\n courseData.courses.forEach((data: any) => {\n enrollData[data.collectionId] = data\n })\n }\n return enrollData\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationsService } from '@sunbird-cb/utils-v2';\nimport { Observable, of, EMPTY, BehaviorSubject, Subject } from 'rxjs';\nimport { catchError, retry, map, shareReplay } from 'rxjs/operators';\nimport { NsContentStripMultiple } from '../_models/content-strip-multiple.model';\nimport { NsContent } from '../_models/widget-content.model';\nimport { NSSearch } from '../_models/widget-search.model';\n// tslint:disable\nimport * as _ from 'lodash'\nimport { viewerRouteGenerator } from './viewer-route-util'\nimport {WidgetUserServiceLib} from './widget-user-lib.service'\nimport * as moment_ from 'moment';\nconst moment = moment_;\n// tslint:enable\n\n// TODO: move this in some common place\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\n\nconst API_END_POINTS = {\n CONTENT: `${PROTECTED_SLAG_V8}/content`,\n AUTHORING_CONTENT: `/api/course/v1/hierarchy`,\n CONTENT_LIKES: `${PROTECTED_SLAG_V8}/content/likeCount`,\n SET_S3_COOKIE: `${PROTECTED_SLAG_V8}/content/setCookie`,\n SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8}/content/setImageCookie`,\n FETCH_MANIFEST: `${PROTECTED_SLAG_V8}/content/getWebModuleManifest`,\n FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8}/content/getWebModuleFiles`,\n MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8}/content/multiple`,\n CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8}/content/searchV5`,\n CONTENT_SEARCH_V6: `/apis/proxies/v8/sunbirdigot/search`,\n TRENDING_CONTENT_SEARCH: `apis/proxies/v8/trending/content/search`,\n CONTENT_SEARCH_RELATED_CBP_V6: `/apis/proxies/v8/sunbirdigot/search`,\n CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8}/content/searchRegionRecommendation`,\n CONTENT_HISTORY: `${PROTECTED_SLAG_V8}/user/history`,\n CONTENT_HISTORYV2: `/apis/proxies/v8/read/content-progres`,\n COURSE_BATCH_LIST: `/apis/proxies/v8/learner/course/v1/batch/list`,\n COURSE_BATCH: `/apis/proxies/v8/course/v1/batch/read`,\n AUTO_ASSIGN_BATCH: `/apis/protected/v8/cohorts/user/autoenrollment/`,\n AUTO_ASSIGN_CURATED_BATCH: `/apis/proxies/v8/curatedprogram/v1/enrol`,\n AUTO_ASSIGN_OPEN_PROGRAM: `/apis/proxies/v8/openprogram/v1/enrol`,\n USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8}/user/history/continue`,\n CONTENT_RATING: `${PROTECTED_SLAG_V8}/user/rating`,\n COLLECTION_HIERARCHY: (type: string, id: string) =>\n `${PROTECTED_SLAG_V8}/content/collection/${type}/${id}`,\n REGISTRATION_STATUS: `${PROTECTED_SLAG_V8}/admin/userRegistration/checkUserRegistrationContent`,\n MARK_AS_COMPLETE_META: (contentId: string) => `${PROTECTED_SLAG_V8}/user/progress/${contentId}`,\n ENROLL_BATCH: `/apis/proxies/v8/learner/course/v1/enrol`,\n ENROLL_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/enrol`,\n WITHDRAW_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/unenrol`,\n BLENDED_USER_WF: `/apis/proxies/v8/workflow/blendedprogram/user/search`,\n BLENDED_USER_COUNT: `apis/proxies/v8/workflow/blendedprogram/enrol/status/count`,\n CERT_ADD_TEMPLATE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/template/add`,\n CERT_ISSUE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/issue`,\n CERT_DOWNLOAD: (certId: any) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,\n READ_KARMAPOINTS: `/apis/proxies/v8/karmapoints/read`,\n CONTENT_READ: (contentId: any) => `/apis/proxies/v8/action/content/v3/read/${contentId}`,\n READ_COURSE_KARMAPOINTS: '/apis/proxies/v8/karmapoints/user/course/read',\n CLAIM_KARMAPOINTS: '/apis/proxies/v8/claimkarmapoints',\n USER_KARMA_POINTS: '/apis/proxies/v8/user/totalkarmapoints',\n AGGREGATION_SEARCH: '/apis/proxies/v8/content/aggregation/search',\n FEATURE_SEARCH: '/apis/proxies/v8/featured/content/search',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetContentLibService {\n constructor(\n private http: HttpClient,\n private configSvc: ConfigurationsService,\n private userSvc: WidgetUserServiceLib\n ) {\n }\n\n tocConfigData: any = new BehaviorSubject<any>({});\n tocConfigData$ = this.tocConfigData.asObservable();\n\n private telemetryData: any = new Subject<any>()\n public telemetryData$ = this.telemetryData.asObservable()\n currentMetaData!: NsContent.IContent;\n currentContentReadMetaData!: NsContent.IContent;\n currentBatchEnrollmentList!: NsContent.ICourse[];\n programChildCourseResumeData = new BehaviorSubject<any>({});\n programChildCourseResumeData$ = this.programChildCourseResumeData.asObservable();\n\n changeTelemetryData(message: string) {\n this.telemetryData.next(message);\n }\n isResource(primaryCategory: string) {\n if (primaryCategory) {\n const isResource = (primaryCategory === NsContent.EResourcePrimaryCategories.LEARNING_RESOURCE) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.PRACTICE_RESOURCE) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.FINAL_ASSESSMENT) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.COMP_ASSESSMENT) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.OFFLINE_SESSION);\n return isResource;\n }\n return false;\n }\n\n fetchMarkAsCompleteMeta(identifier: string): Promise<any> {\n // tslint:disable-next-line\n const url = API_END_POINTS.MARK_AS_COMPLETE_META(identifier)\n // return this.http.get(url).toPromise()\n if (url) { }\n return of().toPromise();\n }\n\n updateTocConfig(data: any) {\n this.tocConfigData.next(data);\n }\n\n fetchContent(\n contentId: string,\n hierarchyType: 'all' | 'minimal' | 'detail' = 'detail',\n _additionalFields: string[] = [],\n primaryCategory?: string | null,\n ): Observable<NsContent.IContent> {\n // const url = `${API_END_POINTS.CONTENT}/${contentId}?hierarchyType=${hierarchyType}`\n let url = '';\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\n if (primaryCategory && this.isResource(primaryCategory)) {\n if (!forPreview) {\n url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;\n } else {\n url = `/api/content/v1/read/${contentId}`;\n }\n } else {\n if (!forPreview) {\n url = `/apis/proxies/v8/action/content/v3/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\n } else {\n const forcreator = window.location.href.includes('editMode=true');\n if (forcreator) {\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\n } else {\n url = `/api/course/v1/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\n }\n }\n }\n // return this.http\n // .post<NsContent.IContent>(url, { additionalFields })\n // .pipe(retry(1))\n return this.http\n .get<NsContent.IContent>(url)\n .pipe(shareReplay(1));\n // if (apiData && apiData.result) {\n // return apiData.result.content\n // }\n }\n fetchAuthoringContent(contentId: string): Observable<NsContent.IContent> {\n const forcreator = window.location.href.includes('editMode=true');\n let url = '';\n if (forcreator) {\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\n } else {\n url = `${API_END_POINTS.AUTHORING_CONTENT}/${contentId}?hierarchyType=detail`;\n }\n return this.http.get<NsContent.IContent>(url).pipe(shareReplay(1), r => r);\n }\n fetchMultipleContent(ids: string[]): Observable<NsContent.IContent[]> {\n return this.http.get<NsContent.IContent[]>(\n `${API_END_POINTS.MULTIPLE_CONTENT}/${ids.join(',')}`,\n );\n }\n fetchCollectionHierarchy(type: string, id: string, pageNumber: number = 0, pageSize: number = 1) {\n return this.http.get<NsContent.ICollectionHierarchyResponse>(\n `${API_END_POINTS.COLLECTION_HIERARCHY(\n type,\n id,\n )}?pageNumber=${pageNumber}&pageSize=${pageSize}`,\n );\n }\n\n fetchBlendedCourse() {\n\n }\n\n fetchCourseBatches(req: any): Observable<NsContent.IBatchListResponse> {\n return this.http\n .post<NsContent.IBatchListResponse>(API_END_POINTS.COURSE_BATCH_LIST, req)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n // fetch individual batch\n fetchCourseBatch(batchId: string): Observable<NsContent.IContinueLearningData> {\n return this.http.get<NsContent.IContinueLearningData>(\n `${API_END_POINTS.COURSE_BATCH}/${batchId}`,\n );\n }\n\n autoAssignBatchApi(identifier: any): Observable<NsContent.IBatchListResponse> {\n return this.http.get<NsContent.IBatchListResponse>(`${API_END_POINTS.AUTO_ASSIGN_BATCH}${identifier}`)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n autoAssignCuratedBatchApi(request: any, programType: any): Observable<NsContent.IBatchListResponse> {\n const url = programType === NsContent.ECourseCategory.MODERATED_PROGRAM ?\n API_END_POINTS.AUTO_ASSIGN_OPEN_PROGRAM : API_END_POINTS.AUTO_ASSIGN_CURATED_BATCH;\n return this.http.post<NsContent.IBatchListResponse>(`${url}`, request)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n enrollUserToBatch(req: any) {\n return this.http\n .post(API_END_POINTS.ENROLL_BATCH, req)\n .toPromise();\n }\n\n enrollAndUnenrollUserToBatchWF(req: any, type: any) {\n const url: any = type === 'WITHDRAW' ? API_END_POINTS.WITHDRAW_BATCH_WF : API_END_POINTS.ENROLL_BATCH_WF;\n return this.http\n .post(url, req)\n .toPromise();\n }\n\n fetchBlendedUserWF(req: any) {\n return this.http\n .post(API_END_POINTS.BLENDED_USER_WF, req)\n .toPromise();\n }\n\n fetchBlendedUserCOUNT(req: any) {\n return this.http\n .post(API_END_POINTS.BLENDED_USER_COUNT, req)\n .toPromise();\n }\n\n fetchContentLikes(contentIds: { content_id: string[] }) {\n return this.http\n .post<{ [identifier: string]: number }>(API_END_POINTS.CONTENT_LIKES, contentIds)\n .toPromise();\n }\n fetchContentRatings(contentIds: { contentIds: string[] }) {\n if (contentIds) { }\n // return this.http\n // .post(`${API_END_POINTS.CONTENT_RATING}/rating`, contentIds)\n // .toPromise()\n return of().toPromise();\n }\n\n fetchContentHistory(contentId: string): Observable<NsContent.IContinueLearningData> {\n return this.http.get<NsContent.IContinueLearningData>(\n `${API_END_POINTS.CONTENT_HISTORY}/${contentId}`,\n );\n }\n\n fetchContentHistoryV2(req: NsContent.IContinueLearningDataReq): Observable<NsContent.IContinueLearningData> {\n req.request.fields = ['progressdetails'];\n const data = this.http.post<NsContent.IContinueLearningData>(\n `${API_END_POINTS.CONTENT_HISTORYV2}/${req.request.courseId}`, req\n );\n data.subscribe((subscribeData: any) => {\n this.programChildCourseResumeData.next({ resumeData: subscribeData.result.contentList, courseId: req.request.courseId });\n });\n return data;\n }\n\n async continueLearning(id: string, collectionId?: string, collectionType?: string): Promise<any> {\n return new Promise(async resolve => {\n if (collectionType &&\n collectionType.toLowerCase() === 'playlist') {\n const reqBody = {\n contextPathId: collectionId ? collectionId : id,\n resourceId: id,\n data: JSON.stringify({\n timestamp: Date.now(),\n contextFullPath: [collectionId, id],\n }),\n dateAccessed: Date.now(),\n contextType: 'playlist',\n };\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\n resolve(true);\n }\n );\n } else {\n const reqBody = {\n contextPathId: collectionId ? collectionId : id,\n resourceId: id,\n data: JSON.stringify({ timestamp: Date.now() }),\n dateAccessed: Date.now(),\n };\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\n resolve(true);\n });\n }\n });\n }\n saveContinueLearning(content: NsContent.IViewerContinueLearningRequest): Observable<any> {\n // const url = API_END_POINTS.USER_CONTINUE_LEARNING\n // return this.http.post<any>(url, content)\n if (content) {\n\n }\n return of() as any;\n }\n\n setS3Cookie(\n _contentId: string,\n // _path: string,\n ): Observable<any> {\n // return this.http\n // .post(API_END_POINTS.SET_S3_COOKIE, { contentId })\n // .pipe(catchError(_err => of(true)))\n\n return EMPTY;\n }\n\n setS3ImageCookie(): Observable<any> {\n return this.http.post(API_END_POINTS.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)));\n }\n\n fetchManifest(url: string): Observable<any> {\n return this.http.post(API_END_POINTS.FETCH_MANIFEST, { url });\n }\n fetchWebModuleContent(url: string): Observable<any> {\n return this.http.get(`${API_END_POINTS.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`);\n }\n search(req: NSSearch.ISearchRequest): Observable<NSSearch.ISearchApiResult> {\n req.query = req.query || '';\n return this.http.post<NSSearch.ISearchApiResult>(API_END_POINTS.CONTENT_SEARCH_V5, {\n request: req,\n });\n }\n searchRegionRecommendation(\n req: NSSearch.ISearchOrgRegionRecommendationRequest,\n ): Observable<NsContentStripMultiple.IContentStripResponseApi> {\n req.query = req.query || '';\n req.preLabelValue =\n (req.preLabelValue || '') +\n ((this.configSvc.userProfile && this.configSvc.userProfile.country) || '');\n req.filters = {\n ...req.filters,\n labels: [req.preLabelValue || ''],\n };\n return this.http.post<NsContentStripMultiple.IContentStripResponseApi>(\n API_END_POINTS.CONTENT_SEARCH_REGION_RECOMMENDATION,\n { request: req },\n );\n }\n searchV6(req: NSSearch.ISearchV6Request): Observable<NSSearch.ISearchV6ApiResultV2> {\n const apiPath = _.get(req, 'api.path');\n req.query = req.query || '';\n if (apiPath) {\n return this.http.get<NSSearch.ISearchV6ApiResultV2>(apiPath);\n }\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_V6, req);\n }\n\n searchRelatedCBPV6(req: NSSearch.ISearchV6RequestV2): Observable<NSSearch.ISearchV6ApiResultV2> {\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_RELATED_CBP_V6, req);\n }\n\n fetchContentRating(contentId: string): Observable<{ rating: number }> {\n return this.http.get<{ rating: number }>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\n }\n deleteContentRating(contentId: string): Observable<any> {\n return this.http.delete(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\n }\n addContentRating(contentId: string, data: { rating: number }): Observable<any> {\n return this.http.post<any>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`, data);\n }\n\n getFirstChildInHierarchy(content: NsContent.IContent): NsContent.IContent {\n if (!(content.children || []).length) {\n return content;\n }\n if (\n (content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM &&\n !(content.artifactUrl && content.artifactUrl.length)) ||\n content.primaryCategory === NsContent.EPrimaryCategory.MANDATORY_COURSE_GOAL ||\n (content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM &&\n !(content.artifactUrl && content.artifactUrl.length)) ||\n (content.primaryCategory === NsContent.EPrimaryCategory.MODULE &&\n !(content.artifactUrl && content.artifactUrl.length))\n ) {\n const child = content.children[0];\n return this.getFirstChildInHierarchy(child);\n }\n if (\n content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE ||\n content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT ||\n content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM ||\n content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE ||\n content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT ||\n content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT ||\n content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\n content.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION\n ) {\n return content;\n }\n const firstChild = content.children[0];\n const resultContent = this.getFirstChildInHierarchy(firstChild);\n return resultContent;\n }\n\n getRegistrationStatus(source: string): Promise<{ hasAccess: boolean; registrationUrl?: string }> {\n return this.http.get<any>(`${API_END_POINTS.REGISTRATION_STATUS}/${source}`).toPromise();\n }\n\n fetchConfig(url: string) {\n return this.http.get<any>(url);\n }\n\n addCertTemplate(body: any) {\n return this.http.patch<any>(`${API_END_POINTS.CERT_ADD_TEMPLATE}`, body);\n }\n\n issueCert(body: any) {\n return this.http.post<any>(`${API_END_POINTS.CERT_ISSUE}`, body);\n }\n downloadCert(certId: any) {\n return this.http.get<any>(`${API_END_POINTS.CERT_DOWNLOAD(certId)}`);\n }\n\n trendingContentSearch(req: any): Observable<any> {\n req.query = req.query || '';\n return this.http.post<any>(API_END_POINTS.TRENDING_CONTENT_SEARCH, req);\n }\n\n getKarmaPoitns(limit: number, offset: any) {\n return this.http.post(API_END_POINTS.READ_KARMAPOINTS, { limit, offset }).pipe(catchError(_err => of(true)));\n }\n fetchProgramContent(contentId: string[]): Observable<NsContent.IContent[]> {\n let url = '';\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\n if (!forPreview) {\n return this.http.get<NsContent.IContent[]>(\n API_END_POINTS.CONTENT_READ(contentId),\n );\n }\n url = `/api/content/v1/read/${contentId}`;\n return this.http.get<NsContent.IContent[]>(url);\n // return this.http.get<NsContent.IContent[]>(API_END_POINTS.CONTENT_READ(contentId))\n }\n\n getCourseKarmaPoints(request: any) {\n return this.http.post<any>(API_END_POINTS.READ_COURSE_KARMAPOINTS, request);\n }\n\n claimKarmapoints(request: any) {\n return this.http.post<any>(API_END_POINTS.CLAIM_KARMAPOINTS, request);\n }\n\n userKarmaPoints() {\n return this.http.post<any>(API_END_POINTS.USER_KARMA_POINTS, {});\n }\n\n async getEnrolledData(doId: string) {\n let userId = this.configSvc.userProfile.userId\n const responseData = await this.userSvc.fetchEnrollmentDataByContentId(userId,doId).toPromise().then(async (res: any) => {\n if (res && res.courses && res.courses.length) {\n return res.courses\n } else {\n return []\n }\n }).catch((_err: any) => {\n return []\n });\n return responseData || []\n }\n\n async getResourseLink(content: any) {\n const enrolledCourse: any = await this.getEnrolledData(content.identifier);\n if (enrolledCourse && enrolledCourse.length) {\n const enrolledCourseData = enrolledCourse[0]\n if (enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.BLENDED_PROGRAM ||\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.INVITE_ONLY_PROGRAM ||\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.MODERATED_PROGRAM ||\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM) {\n if (!this.isBatchInProgress(enrolledCourseData.batch)) {\n return this.gotoTocPage(content);\n }\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\n return data;\n } {\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\n return data;\n }\n }\n return this.gotoTocPage(content);\n }\n async checkForDataToFormUrl(content: any, enrollData: any) {\n let urlData: any;\n if (enrollData.completionPercentage === 100) {\n return this.gotoTocPage(enrollData);\n }\n if (enrollData.lrcProgressDetails && enrollData.lrcProgressDetails.mimeType) {\n const modifyEnrollData = {\n ...enrollData,\n identifier: enrollData.collectionId,\n primaryCategory: enrollData.content.primaryCategory,\n name: enrollData.content.name,\n };\n if (modifyEnrollData.lastReadContentId) {\n return this.getResourseDataWithData(modifyEnrollData,\n enrollData.lastReadContentId, enrollData.lrcProgressDetails.mimeType);\n }\n if (modifyEnrollData.firstChildId) {\n return this.getResourseDataWithData(modifyEnrollData,\n enrollData.firstChildId,\n enrollData.lrcProgressDetails.mimeType);\n }\n }\n if (enrollData.firstChildId || enrollData.lastReadContentId) {\n const doId = enrollData.firstChildId || enrollData.lastReadContentId;\n const responseData = await this.fetchProgramContent(doId).toPromise().then(async (res: any) => {\n if (res && res.result && res.result.content) {\n const contentData: any = res.result.content;\n const modifyEnrollData = {\n ...enrollData,\n identifier: enrollData.collectionId,\n primaryCategory: enrollData.content.primaryCategory,\n name: enrollData.content.name,\n };\n urlData = this.getResourseDataWithData(modifyEnrollData, contentData.identifier, contentData.mimeType);\n if (urlData) {\n return urlData;\n }\n }\n });\n return responseData ? responseData : this.gotoTocPage(content);\n }\n return this.gotoTocPage(content);\n\n }\n\n getResourseDataWithData(content: any, resourseId: any, mimeType: any) {\n if (content) {\n const url = viewerRouteGenerator(\n resourseId,\n mimeType,\n content.identifier,\n 'Course',\n false,\n 'Learning Resource',\n content.batchId,\n content.name,\n );\n return url;\n }\n return this.gotoTocPage(content);\n }\n gotoTocPage(content: any) {\n const urlData: any = {\n url: `/app/toc/${content.identifier ? content.identifier : content.collectionId}/overview`,\n queryParams: { batchId: content.batchId },\n };\n if (content.endDate) {\n urlData.queryParams = { ...urlData.queryParams, planType: 'cbPlan', endDate: content.endDate };\n }\n return urlData;\n }\n isBatchInProgress(batchData: any) {\n // if (this.content && this.content['batches']) {\n // const batches = this.content['batches'] as NsContent.IBatch\n if (batchData && batchData.endDate) {\n const now = moment().format('YYYY-MM-DD');\n const startDate = moment(batchData.startDate).format('YYYY-MM-DD');\n const endDate = batchData.endDate ? moment(batchData.endDate).format('YYYY-MM-DD') : now;\n return (\n // batch.status &&\n moment(startDate).isSameOrBefore(now)\n && moment(endDate).isSameOrAfter(now)\n );\n } return true;\n }\n postApiMethod(apiUrl: any, req: any): Observable<NsContent.IContent> {\n return this.http.post<NsContent.IContent>(apiUrl, req);\n }\n getApiMethod(apiUrl: any): Observable<NsContent.IContent> {\n // req.query = req.query || '';\n return this.http.get<NsContent.IContent>(apiUrl);\n }\n\n\n getEnrolledDataFromList(enrollmentList: any, collectionId: string) {\n if(enrollmentList && enrollmentList.length) {\n let enrolledData = enrollmentList.filter((ele: any) => ele.collectionId === collectionId)\n return enrolledData.length ? enrolledData[0]: {}\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\nimport { IPortalUrls, IUserPreference, NsAppsConfig, NsInstanceConfig, NsPage, NsUser } from '@sunbird-cb/utils-v2';\nimport { NSProfileDataV3 } from '../_models/profile-v3.models';\n// const instanceConfigPath: string | null = window.location.host\n// const locationHost: string | null = window.location.host\n\n// if (!environment.production && Boolean(environment.sitePath)) {\n// locationHost = environment.sitePath\n// instanceConfigPath = environment.sitePath\n// }\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigurationsService {\n // update as the single source of truth\n constructor() {\n // @Inject('env') env: any\n // if (!env.production && Boolean(env.sitePath)) {\n // locationHost = env.sitePath\n // instanceConfigPath = env.sitePath\n // }\n }\n appSetup = true;\n // The url the user tried to access while landing in the app before accepting tnc\n userUrl = '';\n baseUrl = `assets/configurations`;\n sitePath = `assets/configurations`;\n hostPath = (window.location.host).replace(':', '_');\n\n userRoles: Set<string> | null = null;\n userGroups: Set<string> | null = null;\n restrictedFeatures: Set<string> | null = null;\n restrictedWidgets: Set<string> | null = null;\n instanceConfig: NsInstanceConfig.IConfig | null = null;\n appsConfig: NsAppsConfig.IAppsConfig | null = null;\n rootOrg: string | null = null;\n courseContentPath?: string;\n org: string[] | null = null;\n activeOrg: string | null = '';\n isProduction = false;\n hasAcceptedTnc = false;\n profileDetailsStatus = false;\n isActive = true;\n userPreference: IUserPreference | null = null;\n userProfile: NsUser.IUserProfile | null = null;\n userProfileV2: NsUser.IUserProfile | null = null;\n nodebbUserProfile: NsUser.INodebbUserProfile | null = null;\n // created to store complete user details sent by pid\n unMappedUser: any;\n isAuthenticated = false;\n isNewUser = false;\n portalUrls: IPortalUrls | undefined;\n positions: any;\n overrideThemeChanges: any;\n profileTimelyNudges: any;\n\n // pinnedApps\n pinnedApps = new BehaviorSubject<Set<string>>(new Set());\n\n // Notifier\n prefChangeNotifier = new ReplaySubject<Partial<IUserPreference>>(1);\n tourGuideNotifier = new ReplaySubject<boolean>();\n authChangeNotifier = new ReplaySubject<boolean>(1);\n\n private updateProfile = new BehaviorSubject(false);\n updateProfileObservable = this.updateProfile.asObservable();\n\n updateTourGuide = new BehaviorSubject(true);\n updateTourGuideObservable = this.updateTourGuide.asObservable();\n\n // platform rating\n updatePlatformRating = new BehaviorSubject({ bottom: '120px' });\n updatePlatformRatingObservable$ = this.updatePlatformRating.asObservable();\n\n languageTranslationFlag = new Subject();\n\n // Preference Related Values\n activeThemeObject: NsInstanceConfig.ITheme | null = null;\n activeFontObject: NsInstanceConfig.IFontSize | null = null;\n isDarkMode = false;\n isIntranetAllowed = false;\n isRTL = false;\n activeLocale: NsInstanceConfig.ILocalsConfig | null = null;\n activeLocaleGroup = '';\n completedActivity: string[] | null = null;\n completedTour = false;\n profileSettings = ['profilePicture', 'learningTime', 'learningPoints'];\n\n primaryNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n };\n pageNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n };\n primaryNavBarConfig: NsInstanceConfig.IPrimaryNavbarConfig | null = null;\n /* for temp Fix */\n // setBaseUrl = (sitePath: string) => `assets/configurations/${(sitePath).replace(':', '_')}`\n // setSitePath = (sitePath: string) => `assets/configurations/${(sitePath).replace(\n // ':',\n // '_',\n // )}`\n // setHostPath = (sitePath: string) => (sitePath).replace(':', '_')\n welcomeTabs: NSProfileDataV3.IProfileTab | null = null;\n\n // variable setting for csJwtToken\n cstoken = '';\n\n changeNavBarFullView = new Subject();\n openExploreMenuForMWeb = new Subject();\n updateGlobalProfile(state: boolean) {\n this.updateProfile.next(state);\n }\n updateTourGuideMethod(state: boolean) {\n this.updateTourGuide.next(state);\n }\n\n updatePlatformRatingMethod(state: any) {\n this.updatePlatformRating.next(state);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigurationsService } from './configurations.service';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class MultilingualTranslationsService {\n selectedLang = '';\n // website lang change\n languageSelected = new BehaviorSubject(true);\n languageSelectedObservable = this.languageSelected.asObservable();\n editProfileDetails = '/apis/proxies/v8/user/v1/extPatch';\n\n constructor(private translate: TranslateService, private http: HttpClient, private configSvc: ConfigurationsService) {\n // this.getLanguage()\n }\n\n getLanguage() {\n if (this.configSvc.unMappedUser) {\n if (this.configSvc.unMappedUser.profileDetails &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang) {\n const lang = this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang;\n this.translate.use(lang);\n localStorage.setItem('websiteLanguage', lang);\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n } else {\n this.translate.setDefaultLang('en');\n localStorage.setItem('websiteLanguage', 'en');\n }\n }\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n }\n }\n\n translateLabelWithoutspace(label: string, type: any, subtype: any) {\n let nlabel = label;\n nlabel = nlabel && nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n translateLabel(label: string, type: any, subtype: any) {\n if(label) {\n let nlabel = label;\n \n \n nlabel = nlabel && nlabel.toLowerCase() ;\n const sl = nlabel.split(' ');\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1);\n }\n });\n nlabel = sl.join('');\n nlabel = nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n } \n return label\n }\n\n translateActualLabel(label: string, type: any, subtype: any) {\n let nlabel = label;\n const sl = nlabel.split(' ');\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1);\n }\n });\n nlabel = sl.join('');\n nlabel = nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n editProfileDetailsAPI(data: any) {\n return this.http.post<any>(this.editProfileDetails, data);\n }\n\n updatelanguageSelected(state: any, lang: any, userid: any) {\n this.languageSelected.next(state);\n this.translate.use(lang);\n this.selectedLang = lang;\n\n if (userid) {\n const reqUpdates = {\n request: {\n userId: userid,\n profileDetails: {\n additionalProperties: {\n webPortalLang: this.selectedLang,\n },\n },\n },\n };\n this.editProfileDetailsAPI(reqUpdates).subscribe();\n }\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsContentStripWithTabs } from './content-strip-with-tabs-lib.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentLibService } from '../../_services/widget-content-lib.service';\nimport { NsContent } from '../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n WsEvents,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserServiceLib } from '../../_services/widget-user-lib.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { NsCardContent } from '../../_models/card-content-v2.model';\nimport { ITodayEvents } from '../../_models/event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\n\ninterface IStripUnitContentData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabsType?: string;\n tabs?: NsContentStripWithTabs.IContentStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsContentStripWithTabs.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n request?: any\n\n}\n\n@Component({\n selector: 'sb-uic-content-strip-with-tabs',\n templateUrl: './content-strip-with-tabs-lib.component.html',\n styleUrls: ['./content-strip-with-tabs-lib.component.scss'],\n})\nexport class ContentStripWithTabsLibComponent extends WidgetBaseComponent\n implements\n OnInit,\n OnDestroy,\n NsWidgetResolver.IWidgetData<NsContentStripWithTabs.IContentStripMultiple> {\n @Input() widgetData!: NsContentStripWithTabs.IContentStripMultiple;\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() viewAllResponse = new EventEmitter<any>()\n @Output() telemtryResponse = new EventEmitter<any>()\n @Input() providerId: any = ''\n @Input() emitViewAll: boolean = false\n @Input() channnelName: any = ''\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n todaysEvents: any = [];\n\n constructor(\n // private contentStripSvc: ContentStripNewMultipleService,\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentLibService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n public router: Router,\n private userSvc: WidgetUserServiceLib,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService\n ) {\n super();\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en');\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n this.environment = environment\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n this.contentSvc.telemetryData$.subscribe((data: any) => {\n this.telemtryResponse.emit(data)\n })\n\n\n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n if (this.checkForEmptyWidget(strip)) {\n this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n // console.log('data.key', data, data.key, data.widgets);\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitContentData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsContentStripWithTabs.IContentStripMultiple, data: IStripUnitContentData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitContentData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitContentData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitContentData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n const tabWithMaxWidgets = data.tabs.reduce(\n (prev, current) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n\n private getFiltersFromArray(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n private transformSearchV6FiltersV2(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n checkForDateFilters(filters: any) {\n let userData: any;\n if (this.configSvc.userProfile) {\n userData = this.configSvc.userProfile;\n }\n\n if (filters && filters.hasOwnProperty('batches.endDate')) {\n // tslint:disable-next-line\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\n // tslint:disable-next-line\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\n } else if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n if (this.providerId) {\n filters.organisation = this.providerId;\n } else {\n filters.organisation = userData && userData.rootOrgId;\n\n if (filters && filters.hasOwnProperty('designation')) {\n filters.designation = userData.professionalDetails.length > 0 ?\n userData.professionalDetails[0].designation : '';\n }\n }\n\n }\n return filters;\n }\n\n private fetchStripFromRequestData(\n strip: NsContentStripWithTabs.IContentStripUnit,\n calculateParentStatus = true,\n ) {\n // setting initial values\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\n this.processStrip(strip, [], 'fetching', false, null);\n this.fetchFromEnrollmentList(strip, calculateParentStatus);\n this.fetchFromSearchV6(strip, calculateParentStatus);\n this.fetchFromTrendingContent(strip, calculateParentStatus);\n this.fetchAllCbpPlans(strip, calculateParentStatus);\n this.fetchAllTopContent(strip, calculateParentStatus);\n this.fetchAllFeaturedContent(strip, calculateParentStatus);\n this.fetchAllBookMarkData(strip, calculateParentStatus);\n this.fetchAllPlaylistSearch(strip, calculateParentStatus);\n this.fetchPlaylistReadData(strip, calculateParentStatus);\n this.fetchCiosContentData(strip, calculateParentStatus);\n\n }\n\n fetchFromEnrollmentList(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) {\n let userId = '';\n let content: NsContent.IContent[];\n let contentNew: NsContent.IContent[];\n let tabResults: any[] = [];\n const queryParams = _.get(strip.request.enrollmentList, 'queryParams');\n // if (queryParams && queryParams.batchDetails) {\n // if (!queryParams.batchDetails.includes('&retiredCoursesEnabled=true')) {\n // queryParams.batchDetails += '&retiredCoursesEnabled=true'\n // }\n // }\n if (this.configSvc.userProfile) {\n userId = this.configSvc.userProfile.userId;\n }\n // this.userSvc.resetTime('enrollmentService')\n // tslint:disable-next-line: deprecation\n this.userSvc.fetchUserBatchList(userId, queryParams).subscribe(\n (result: any) => {\n const courses = result && result.courses;\n const showViewMore = Boolean(\n courses.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: (strip.viewMoreUrl && strip.viewMoreUrl.path) || '',\n queryParams: {\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n strip.request && strip.request.searchV6 && strip.request.searchV6.filters\n ? JSON.stringify(\n // this.searchServSvc.transformSearchV6Filters(\n strip.request.searchV6.filters\n // ),\n )\n : {},\n },\n }\n : null;\n if (courses && courses.length) {\n content = courses.map((c: any) => {\n const contentTemp: NsContent.IContent = c.content;\n contentTemp.completionPercentage = c.completionPercentage || c.progress || 0;\n contentTemp.completionStatus = c.completionStatus || c.status || 0;\n contentTemp.enrolledDate = c.enrolledDate || '';\n contentTemp.lastContentAccessTime = c.lastContentAccessTime || '';\n contentTemp.lastReadContentStatus = c.lastReadContentStatus || '';\n contentTemp.lastReadContentId = c.lastReadContentId || '';\n contentTemp.lrcProgressDetails = c.lrcProgressDetails || '';\n contentTemp.issuedCertificates = c.issuedCertificates || [];\n contentTemp.batchId = c.batchId || '';\n return contentTemp;\n });\n }\n // To filter content with completionPercentage > 0,\n // so that only those content will show in home page\n // continue learing strip\n // if (content && content.length) {\n // contentNew = content.filter((c: any) => {\n // /** commented as both are 0 after enrolll */\n // if (c.completionPercentage && c.completionPercentage > 0) {\n // return c\n // }\n // })\n // }\n\n // To sort in descending order of the enrolled date\n contentNew = (content || []).sort((a: any, b: any) => {\n const dateA: any = new Date(a.lastContentAccessTime || 0);\n const dateB: any = new Date(b.lastContentAccessTime || 0);\n return dateB - dateA;\n });\n\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitEnrollmentTabsData(contentNew, strip);\n this.processStrip(\n strip,\n this.transformContentsToWidgets(contentNew, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(contentNew, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n );\n }\n },\n () => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n );\n }\n }\n\n splitEnrollmentTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\n const tabResults: any[] = [];\n const splitData = this.getInprogressAndCompleted(\n contentNew,\n (e: any) => e.completionStatus === 1 || e.completionPercentage < 100,\n strip,\n );\n\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if (strip.tabs[i]) {\n tabResults.push(\n {\n ...strip.tabs[i],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n }\n return tabResults;\n }\n\n getInprogressAndCompleted(array: NsContent.IContent[],\n customFilter: any,\n strip: NsContentStripWithTabs.IContentStripUnit) {\n const inprogress: any[] = []\n const completed: any[] = []\n // array.forEach((e: any, idx: number, arr: any[]) => (customFilter(e, idx, arr) ? inprogress : completed).push(e))\n array.forEach((e, idx, arr) => {\n const status = e.status ? (e.status as string).toLowerCase() : ''\n const statusRetired = status === 'retired'\n if (customFilter(e, idx, arr)) {\n if (!statusRetired) {\n inprogress.push(e)\n }\n } else {\n completed.push(e)\n }\n })\n // Sort the completed array with 'Live' status first and 'Retired' status second\n completed.sort((a: any, b: any) => {\n const statusA = a.status ? a.status.toLowerCase() : ''\n const statusB = b.status ? b.status.toLowerCase() : ''\n if (statusA === 'live' && statusB !== 'live') {\n return -1\n }\n if (statusA !== 'live' && statusB === 'live') {\n return 1\n }\n if (statusA === 'retired' && statusB !== 'retired') {\n return 1\n }\n if (statusA !== 'retired' && statusB === 'retired') {\n return -1\n }\n return 0\n })\n return [\n { value: 'inprogress', widgets: this.transformContentsToWidgets(inprogress, strip) },\n { value: 'completed', widgets: this.transformContentsToWidgets(completed, strip) }];\n }\n\n async fetchFromSearchV6(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n console.log(originalFilters);\n if (strip.request &&\n strip.request.searchV6 &&\n strip.request.searchV6.request &&\n strip.request.searchV6.request.filters) {\n originalFilters = strip.request.searchV6.request.filters;\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\n strip.request.searchV6.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqSearchV6(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content) {\n if (strip.key === 'scheduledAssessment') {\n \n let result = response.results.result.content.map(a => a.identifier);\n const responseData = await this.userSvc.fetchEnrollmentDataByContentId(this.configSvc.userProfile.userId,result.join(',')).toPromise().then(async (res: any) => {\n const enrollData: any = {}\n if (res && res.courses && res.courses.length) {\n res.courses.forEach((data: any) => {\n enrollData[data.collectionId] = data\n })\n return enrollData\n } else {\n return {}\n }\n }).catch((_err: any) => {\n return {}\n });\n this.checkInvitOnlyAssessments(response.results.result.content, strip, calculateParentStatus, response.viewMoreUrl, responseData)\n\n\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n }\n\n } else if (response.results.result.Event) {\n this.processStrip(\n strip,\n this.transformEventsToWidgets(response.results.result.Event, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n checkInvitOnlyAssessments(content: any, strip: any, calculateParentStatus: any, viewMoreUrl: any, enrollmentData:any) {\n if (Object.keys(enrollmentData).length) {\n enrollmentData = enrollmentData\n let filteredArray: any = []\n let now = new Date().getTime()\n content.forEach((data: any) => {\n if (enrollmentData[data.identifier]) {\n if(enrollmentData[data.identifier].status !== 2 && enrollmentData[data.identifier].batch) {\n const enrollData = enrollmentData[data.identifier].batch\n let endDate:any = new Date(enrollData.endDate).getTime()\n // let endDate:any = '2024-07-7T00:00:00.000Z'\n let timeDuration = endDate - now\n if(timeDuration > 0 ) {\n data['batch'] = enrollmentData[data.identifier].batch\n data['completionPercentage'] = enrollmentData[data.identifier].completionPercentage\n filteredArray.push(data)\n }\n }\n \n }\n })\n filteredArray = filteredArray.sort((a: any, b: any) => {\n const dateA: any = new Date(a.batch.startDate || 0)\n const dateB: any = new Date(b.batch.startDate || 0)\n return dateA - dateB\n })\n this.processStrip(\n strip,\n this.transformContentsToWidgets(filteredArray, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n );\n }\n }\n\n async searchV6Request(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.searchV6) {\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.searchV6 &&\n request.searchV6.request &&\n request.searchV6.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\n // }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n async fetchFromTrendingContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n console.log(originalFilters);\n if (strip.request &&\n strip.request.trendingSearch &&\n strip.request.trendingSearch.request &&\n strip.request.trendingSearch.request.filters) {\n originalFilters = strip.request.trendingSearch.request.filters;\n strip.request.trendingSearch.request.filters = this.checkForDateFilters(strip.request.trendingSearch.request.filters);\n strip.request.trendingSearch.request.filters = this.getFiltersFromArray(\n strip.request.trendingSearch.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqTrending(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.trendingSearchRequest(strip, strip.request, calculateParentStatus);\n if (response && response.results && response.results.response) {\n const content = response.results.response[strip.request.trendingSearch.responseKey] || [];\n this.processStrip(\n strip,\n this.transformContentsToWidgets(content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl || '',\n );\n if (!content.length) {\n this.emptyResponse.emit(true)\n }\n } else {\n this.emptyResponse.emit(true)\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.emptyResponse.emit(true)\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n }\n }\n\n async trendingSearchRequest(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.trendingSearch) {\n // check for the request if it has dynamic values]\n if (request.trendingSearch.request.filters.organisation &&\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\n ) {\n let userRootOrgId;\n if (this.configSvc.userProfile) {\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\n }\n request.trendingSearch.request.filters.organisation = userRootOrgId;\n }\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\n const showViewMore = Boolean(\n results.result &&\n strip.request &&\n results.result[strip.request.trendingSearch.responseKey] &&\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\n strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.trendingSearch &&\n request.trendingSearch.request &&\n request.trendingSearch.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n let proccesedResult: any = []\n if (results && results.response && results.response.certifications) {\n results.response.certifications.map((result: any) => {\n if (result.source === this.channnelName) {\n proccesedResult.push(result)\n }\n })\n }\n results = { response: { certifications: proccesedResult } }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n if (error.error && error.error.status === 400) {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\n reject(error);\n },\n );\n }\n });\n }\n\n toggleInfo(data: IStripUnitContentData) {\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\n if (stripInfo) {\n if (stripInfo.mode !== 'below') {\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\n stripInfo.mode = 'below';\n }\n if (stripInfo.mode === 'below') {\n this.stripsResultDataMap[data.key].stripInfo = {\n ...stripInfo,\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\n };\n }\n }\n }\n\n private transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n private transformEventsToWidgets(\n contents: ITodayEvents[],\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n this.eventSvc.setEventListData(contents);\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n private transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n private async processStrip(\n strip: NsContentStripWithTabs.IContentStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsContentStripWithTabs.IContentStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n tabsType: strip.tabsType ? strip.tabsType : '',\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsContentStripWithTabs.IContentStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) ||\n (strip.request.topContent && Object.keys(strip.request.topContent).length) ||\n (strip.request.featureContent && Object.keys(strip.request.featureContent).length) ||\n (strip.request.bookmarkRead && Object.keys(strip.request.bookmarkRead).length) ||\n (strip.request.playlistSearch && Object.keys(strip.request.playlistSearch).length) ||\n (strip.request.playlistRead && Object.keys(strip.request.playlistRead).length) ||\n (strip.request.ciosContent && Object.keys(strip.request.ciosContent).length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitContentData, stripKey: string) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const data: WsEvents.ITelemetryTabData = {\n label: `${tabEvent.tab.textLabel}`,\n index: tabEvent.index,\n };\n this.eventSvc.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\n id: `${_.camelCase(data.label)}-tab`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n );\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.label,\n };\n }\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick) {\n if (currentTabFromMap.requestRequired && currentTabFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentTabFromMap.request.searchV6) {\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.trendingSearch) {\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.topContent) {\n this.getTabDataByNewReqTopContent(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.playlistRead) {\n this.getTabDataByNewReqPlaylistReadContent(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.ciosContent) {\n this.getTabDataByCiosSearch(currentStrip, tabEvent.index, currentTabFromMap, true)\n }\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].tabLoading = false;\n }\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].tabLoading = false;\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\n stripMap.showOnLoader = false;\n }\n }, 200);\n }\n }\n }\n\n\n async getTabDataByNewReqSearchV6(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\n if (response && response.results) {\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async getTabDataByNewReqTrending(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\n if (response && response.results && response.results.response) {\n const content = response.results.response[currentTab.value] || [];\n const widgets = this.transformContentsToWidgets(content, strip);\n // console.log('currentTab --- widgets', widgets)\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n // console.log('tabResults -++++***--', tabResults)\n // console.log('calling after-- ')\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n\n getTabDataByfilter(\n strip: NsContentStripWithTabs.IContentStripUnit,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n // tslint:disable:no-console\n console.log('strip -- ', strip);\n // tslint:disable:no-console\n console.log('currentTab -- ', currentTab);\n // tslint:disable:no-console\n console.log('calculateParentStatus-- ', calculateParentStatus);\n // TODO: Write logic for individual filter if passed in config\n // add switch case based on config key passed\n }\n\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\n\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\n\n let courses: NsContent.IContent[];\n let tabResults: any[] = [];\n let userId = this.configSvc.userProfile.userId\n const response = await this.userSvc.fetchCbpPlanList(userId).toPromise();\n if (response) {\n courses = response;\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitCbpTabsData(courses, strip);\n await this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n '',\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n 'viewMoreUrl',\n );\n }\n }\n\n }\n }\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\n const tabResults: any[] = [];\n const splitData = this.getTabsList(\n contentNew,\n strip,\n );\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if (strip.tabs[i]) {\n tabResults.push(\n {\n ...strip.tabs[i],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n }\n return tabResults;\n }\n\n getTabsList(array: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit) {\n let all: any[] = [];\n let upcoming: any[] = [];\n let overdue: any[] = [];\n array.forEach((e: any) => {\n all.push(e);\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n overdue.push(e);\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\n upcoming.push(e);\n }\n });\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\n\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\n\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\n\n overdue = overdue.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n\n overdue = overdue.sort((a: any, b: any): any => {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n });\n\n upcoming = upcoming.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n // this.getSelectedIndex(1)\n return [\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n if (key === 'cbpPlan') {\n if (stripsResultDataMap.tabs.length) {\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\n }\n }\n return returnValue;\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n async fetchAllTopContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.topContent && Object.keys(strip.request.topContent).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.topContent &&\n strip.request.topContent.request &&\n strip.request.topContent.request.filters) {\n originalFilters = strip.request.topContent.request.filters;\n strip.request.topContent.request.filters = this.postMethodFilters(strip.request.topContent.request.filters);\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqTopContent(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.postRequestMethod(strip, strip.request.topContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content && response.results.result.content.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n async fetchAllFeaturedContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.featureContent && Object.keys(strip.request.featureContent).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.featureContent &&\n strip.request.featureContent.request &&\n strip.request.featureContent.request.filters) {\n originalFilters = strip.request.featureContent.request.filters;\n strip.request.featureContent.request.filters = this.postMethodFilters(strip.request.featureContent.request.filters);\n }\n try {\n const response = await this.postRequestMethod(strip, strip.request.featureContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content && response.results.result.content.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n\n async getTabDataByNewReqTopContent(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n if (currentTab.request &&\n currentTab.request.topContent &&\n currentTab.request.topContent.request &&\n currentTab.request.topContent.request.filters) {\n currentTab.request.topContent.request.filters = this.postMethodFilters(currentTab.request.topContent.request.filters);\n }\n try {\n // const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\n const response = await this.postRequestMethod(strip, currentTab.request.topContent, currentTab.request.apiUrl, calculateParentStatus);\n if (response.results && response.results.result) {\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n raiseTelemetry(stripData: any) {\n this.telemtryResponse.emit(stripData)\n }\n\n async postRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n apiUrl: string,\n calculateParentStatus: boolean\n ): Promise<any> {\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.postApiMethod(apiUrl, request).subscribe(results => {\n if (results.result && results.result.content) {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f: {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n } else if (results && results.data) {\n const showViewMore = Boolean(\n results.data && results.data.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f: {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n } else if (results.result && results.result.data) {\n const showViewMore = Boolean(\n results.data && results.result.data && results.result.data.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f: {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n }\n\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n async getRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n apiUrl: string,\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.getApiMethod(apiUrl).subscribe(results => {\n let showViewMore: any\n if(results.result.data){\n showViewMore = Boolean(\n results.result.data && results.result.data.orgList.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n } else if(results.result.content){\n let featuredProvider = JSON.parse(results.result.content.featuredProviders || '[]')\n showViewMore = Boolean(\n featuredProvider && featuredProvider.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n }\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n }\n : null;\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n postMethodFilters(filters: any) {\n if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n filters.organisation = filters.organisation.replace('<orgID>', this.providerId)\n }\n return filters\n }\n getFullUrl(apiUrl: any, id: string) {\n let formedUrl: string = apiUrl\n if (apiUrl.indexOf('<bookmarkId>') >= 0) {\n formedUrl = apiUrl.replace('<bookmarkId>', this.environment.mdoChannelsBookmarkId)\n } else if (apiUrl.indexOf('<playlistKey>') >= 0 && apiUrl.indexOf('<orgID>') >= 0) {\n formedUrl = apiUrl.replace('<playlistKey>', this.providerId + id) \n formedUrl = formedUrl.replace('<orgID>', this.providerId) \n } else if(apiUrl.indexOf('<doId>') >= 0) {\n formedUrl = apiUrl.replace('<doId>', this.environment.providerDataKey) \n } \n return formedUrl\n }\n\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\n if (this.emitViewAll) {\n this.viewAllResponse.emit(stripData)\n } else {\n this.router.navigate([path], { queryParams: queryParamsData })\n }\n }\n\n async fetchAllBookMarkData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.bookmarkRead && Object.keys(strip.request.bookmarkRead).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.bookmarkRead &&\n strip.request.bookmarkRead.bookmarkId) {\n strip.request.apiUrl = this.getFullUrl(strip.request.apiUrl, strip.request.bookmarkRead.bookmarkId);\n }\n try {\n const response = await this.getRequestMethod(strip, strip.request.bookmarkRead, strip.request.apiUrl, calculateParentStatus);\n let content = response.results.result.data.orgList\n if (response) {\n this.processStrip(\n strip,\n this.transformAllContentsToWidgets(content, strip),\n 'done',\n calculateParentStatus,\n response,\n );\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n private transformAllContentsToWidgets(\n contents: any,\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n private transformAllTabContentsToWidgets(\n contents: any,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: currentTab.stripConfig && currentTab.stripConfig.cardSubType,\n cardCustomeClass: currentTab.customeClass ? currentTab.customeClass : '',\n context: { pageSection: currentTab.value, position: idx },\n intranetMode: currentTab.stripConfig && currentTab.stripConfig.intranetMode,\n deletedMode: currentTab.stripConfig && currentTab.stripConfig.deletedMode,\n contentTags: currentTab.stripConfig && currentTab.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n async fetchAllPlaylistSearch(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.playlistSearch && Object.keys(strip.request.playlistSearch).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.playlistSearch &&\n strip.request.playlistSearch.request &&\n strip.request.playlistSearch.request.filters) {\n originalFilters = strip.request.playlistSearch.request.filters;\n strip.request.playlistSearch.request.filters = this.postMethodFilters(strip.request.playlistSearch.request.filters);\n }\n try {\n const response = await this.postRequestMethod(strip, strip.request.playlistSearch.request, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.data && response.results.result.data.length) {\n let finalPlaylistData: any = []\n let programData: any = response.results.result.data\n programData.forEach((prgData: any) => {\n if (prgData.children && prgData.children.length) {\n finalPlaylistData.push(prgData)\n }\n })\n if (finalPlaylistData.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(finalPlaylistData, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.emptyResponse.emit(true)\n }\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n async fetchPlaylistReadData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.playlistRead && Object.keys(strip.request.playlistRead).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.playlistRead &&\n strip.request.playlistRead.type) {\n strip.request.apiUrl = this.getFullUrl(strip.request.apiUrl, strip.request.playlistRead.type);\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqPlaylistReadContent(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.getRequestMethod(strip, strip.request.playlistRead, strip.request.apiUrl, calculateParentStatus);\n \n if (response && response.results.result.content) { \n let content = response.results.result.content\n if(strip.key === 'providers'){\n let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\n this.processStrip(\n strip,\n this.transformAllContentsToWidgets(featuredProviders, strip),\n 'done',\n calculateParentStatus,\n response,\n );\n } else {\n this.processStrip(\n strip,\n this.transformAllContentsToWidgets(content, strip),\n 'done',\n calculateParentStatus,\n response,\n );\n }\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n async getTabDataByNewReqPlaylistReadContent(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n if (currentTab.request &&\n currentTab.request.playlistRead &&\n currentTab.request.playlistRead.type) {\n currentTab.request.apiUrl = this.getFullUrl(currentTab.request.apiUrl, currentTab.request.playlistRead.type);\n }\n try {\n const response = await this.getRequestMethod(strip, currentTab.request.playlistRead, currentTab.request.apiUrl, calculateParentStatus);\n // if (response && response.results.result.content) { \n // let content = response.results.result.content\n // if(strip.key === 'providers'){\n // let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\n // this.processStrip(\n // strip,\n // this.transformAllContentsToWidgets(featuredProviders, strip),\n // 'done',\n // calculateParentStatus,\n // response,\n // );\n // } else {\n // this.processStrip(\n // strip,\n // this.transformAllContentsToWidgets(content, strip),\n // 'done',\n // calculateParentStatus,\n // response,\n // );\n // }\n // } else {\n // this.processStrip(strip, [], 'error', calculateParentStatus, null);\n // this.emptyResponse.emit(true)\n // }\n if (response.results && response.results.result) {\n let content = response.results.result.content\n let widgets = []\n if(currentTab.value === 'providers'){\n let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\n widgets = this.transformAllTabContentsToWidgets(featuredProviders, currentTab)\n } else {\n widgets = this.transformAllTabContentsToWidgets(content, currentTab)\n }\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults);\n }\n } catch (error) {\n console.error('Error:', error)\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs && this.stripsResultDataMap[strip.key].tabs.length) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults)\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n }\n\n async fetchCiosContentData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip && strip.request.ciosContent && Object.keys(strip.request.ciosContent).length) {\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired && firstTab.value === 'extCourse') {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n this.getTabDataByCiosSearch(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n if (firstTab.requestRequired && firstTab.value === 'providers') {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n this.getTabDataByNewReqPlaylistReadContent(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n } else {\n try {\n const response = await this.postRequestMethod(strip, strip.request.ciosContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.data && response.results.data.length) {\n let extContentData: any = response.results.data\n if (extContentData.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(extContentData, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.emptyResponse.emit(true)\n }\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n \n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n async getTabDataByCiosSearch(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n _currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.contentSvc.postApiMethod(strip.request.apiUrl,strip.request.ciosContent).toPromise();;\n if (response && response.data && response.data.length) {\n const widgets = this.transformContentsToWidgets(response.data, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults);\n }\n } catch (error) {\n console.error('Error:', error)\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs && this.stripsResultDataMap[strip.key].tabs.length) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults)\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { ContentStripWithTabsLibComponent } from './content-strip-with-tabs-lib.component';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\n\n// tslint:disable-next-line:function-name\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n declarations: [ContentStripWithTabsLibComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n entryComponents: [ContentStripWithTabsLibComponent],\n exports: [ContentStripWithTabsLibComponent],\n})\nexport class ContentStripWithTabsLibModule { }\n","import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core'\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\nimport { ICarousel, ICarouselStyle } from './sliders.model'\nimport { Subscription, interval } from 'rxjs'\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-sliders',\n templateUrl: './sliders.component.html',\n styleUrls: ['./sliders.component.scss'],\n})\nexport class SlidersLibComponent extends WidgetBaseComponent\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\n @Input() widgetData!: ICarousel[]\n @Input() styleData!: ICarouselStyle\n @Input() title: any = ''\n @Input() type: any\n @HostBinding('id')\n public id = `banner_${Math.random()}`\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n currentIndex = 0\n slideInterval: Subscription | null = null\n isMobile = false\n\n constructor(\n private events: EventService,\n private valueSvc: ValueService\n ) {\n super()\n }\n\n ngOnInit() {\n this.reInitiateSlideInterval()\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n reInitiateSlideInterval() {\n if (this.widgetData && this.widgetData.length > 1) {\n try {\n if (this.slideInterval) {\n this.slideInterval.unsubscribe()\n }\n } catch (e) {\n } finally {\n this.slideInterval = interval(8000).subscribe(() => {\n if (this.currentIndex === this.widgetData.length - 1) {\n this.currentIndex = 0\n } else {\n this.currentIndex += 1\n }\n })\n }\n }\n }\n slideTo(index: number) {\n if (index >= 0 && index < this.widgetData.length) {\n this.currentIndex = index\n } else if (index === this.widgetData.length) {\n this.currentIndex = 0\n } else {\n this.currentIndex = this.widgetData.length + index\n }\n this.reInitiateSlideInterval()\n }\n\n get isOpenInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n return true\n } return false\n }\n\n openInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n window.open(currentData.redirectUrl)\n }\n }\n raiseTelemetry(bannerUrl: string | undefined) {\n this.openInNewTab()\n const path = window.location.pathname.replace('/', '')\n const url = path + window.location.search\n\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'banner',\n },\n {\n pageUrl: url,\n bannerRedirectUrl: bannerUrl,\n },\n {\n pageIdExt: 'banner',\n module: WsEvents.EnumTelemetrymodules.CONTENT,\n })\n }\n\n ngOnDestroy() {\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout'\r\nimport { Directive, HostBinding, Input, OnChanges, OnDestroy } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { distinctUntilChanged } from 'rxjs/operators'\r\n\r\nexport interface IImageResponsiveUnit {\r\n [key: string]: string\r\n}\r\n\r\nconst customBreakPoints = {\r\n xs: '(max-width: 450px)',\r\n s: '(min-width: 450.001px) and (max-width: 768px)',\r\n m: '(min-width: 768.001px) and (max-width: 1024px)',\r\n l: '(min-width: 1024.001px) and (max-width: 1400px)',\r\n xl: '(min-width: 1400.001px) and (max-width: 1920px)',\r\n xxl: '(min-width: 1920.001px)',\r\n}\r\n\r\n@Directive({\r\n selector: '[wsUtilsImageResponsive]',\r\n})\r\nexport class ImageResponsiveDirective implements OnChanges, OnDestroy {\r\n\r\n @Input() src: IImageResponsiveUnit | null = null\r\n @HostBinding('src') srcBindUrl = ''\r\n\r\n currentSize = ''\r\n breakpointSubscription: Subscription | null = null\r\n constructor(\r\n private breakpointObserver: BreakpointObserver,\r\n ) {\r\n this.breakpointSubscription = this.breakpointObserver\r\n .observe([\r\n customBreakPoints.xs,\r\n customBreakPoints.s,\r\n customBreakPoints.m,\r\n customBreakPoints.l,\r\n customBreakPoints.xl,\r\n customBreakPoints.xxl,\r\n ])\r\n .pipe(distinctUntilChanged())\r\n .subscribe(data => {\r\n // //console.log('data >', data)\r\n if (data.breakpoints[customBreakPoints.xxl]) {\r\n this.currentSize = 'xxl'\r\n } else if (data.breakpoints[customBreakPoints.xl]) {\r\n this.currentSize = 'xl'\r\n } else if (data.breakpoints[customBreakPoints.l]) {\r\n this.currentSize = 'l'\r\n } else if (data.breakpoints[customBreakPoints.m]) {\r\n this.currentSize = 'm'\r\n } else if (data.breakpoints[customBreakPoints.s]) {\r\n this.currentSize = 's'\r\n } else if (data.breakpoints[customBreakPoints.xs]) {\r\n this.currentSize = 'xs'\r\n } else {\r\n this.currentSize = 'xl'\r\n }\r\n this.setSrc()\r\n })\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.setSrc()\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.breakpointSubscription) {\r\n this.breakpointSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n private setSrc() {\r\n if (\r\n this.currentSize &&\r\n this.src &&\r\n this.src[this.currentSize]\r\n ) {\r\n this.srcBindUrl = this.src[this.currentSize]\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ImageResponsiveDirective } from './image-responsive.directive'\r\n\r\n@NgModule({\r\n declarations: [ImageResponsiveDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ImageResponsiveDirective],\r\n})\r\nexport class ImageResponsiveModule { }\r\n","import { Directive, OnChanges, Input, HostBinding, HostListener } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsNavigation]',\r\n})\r\nexport class NavigationDirective implements OnChanges {\r\n @Input() wsUtilsNavigation = ''\r\n @Input() openInNewTab = false\r\n @Input()\r\n @HostBinding('attr.routerLink') routeUrl = ''\r\n @HostListener('mousedown', ['$event']) onMouseEnter($event: Event) {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n $event.preventDefault()\r\n $event.stopPropagation()\r\n this.routeUrl = './'\r\n window.open(this.wsUtilsNavigation)\r\n }\r\n }\r\n constructor() { }\r\n\r\n ngOnChanges() {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n this.routeUrl = './'\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NavigationDirective } from './navigation.directive'\r\n\r\n@NgModule({\r\n declarations: [NavigationDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [NavigationDirective],\r\n})\r\nexport class NavigationModule { }\r\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SlidersLibComponent } from './sliders.component'\nimport { RouterModule } from '@angular/router'\nimport { ImageResponsiveModule } from './../../_directives/image-responsive/image-responsive.module'\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\n/* tslint:disable */\nimport Hammer from 'hammerjs'\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\n/* tslint:enable */\nexport class MyHammerConfig extends HammerGestureConfig {\n buildHammer(element: HTMLElement) {\n const mc = new Hammer(element, {\n touchAction: 'pan-y',\n })\n return mc\n }\n}\n\n// tslint:disable-next-line: max-classes-per-file\n@NgModule({\n declarations: [SlidersLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n NavigationModule,\n ImageResponsiveModule,\n ],\n exports: [SlidersLibComponent],\n entryComponents: [SlidersLibComponent],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: MyHammerConfig,\n },\n ],\n})\nexport class SlidersLibModule { }\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nconst API_END_POINTS = {\n PROVIDER_INSIGHTS: `/apis/proxies/v8/microsite/read/insights`,\n TRAINING_DETAILS: `apis/proxies/v8/sunbirdigot/search`,\n ANNOUNCEMENTS_DETAILS: `apis/proxies/v8/announcements/v1/search`,\n LEARNERS: `apis/proxies/v8/halloffame/top/learners`,\n LEADERBOARD: 'apis/proxies/v8/halloffame/v1/mdoleaderboard',\n LEADERBOARD_USERS: `apis/proxies/v8/halloffame/v1/userleaderboard`,\n NLW_LEADERBOARD: `apis/proxies/v8/national/learning/week/insights`,\n INSIGHTS: `apis/proxies/v8/read/user/insights`,\n USER_PROGRESS: `apis/proxies/v8/halloffame/v1/userleaderboard`,\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InsiteDataService {\n\n constructor(\n private http: HttpClient\n ) {}\n fetchSearchData(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.PROVIDER_INSIGHTS, request)\n }\n\n fetchAnnouncementsData(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.ANNOUNCEMENTS_DETAILS, request)\n }\n\n\n fetchTrainingDetails(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.TRAINING_DETAILS, request)\n }\n\n fetchLearner(channelId: any): Observable<any> {\n return this.http.get(`${API_END_POINTS.LEARNERS}/${channelId}`)\n }\n\n fetchLeaderboard() {\n return this.http.get(`${API_END_POINTS.LEADERBOARD}`)\n }\n\n fetchMdoUsers(orgId: any): Observable<any> {\n return this.http.get(`${API_END_POINTS.LEADERBOARD_USERS}/${orgId}`)\n }\n\n fetchNwlStats() {\n return this.http.get(`${API_END_POINTS.NLW_LEADERBOARD}`)\n }\n\n fetchInsightsData(payload: any) {\n const result = this.http.post(API_END_POINTS.INSIGHTS, payload)\n return result\n }\n\n fetchUserProgress() {\n return this.http.get(`${API_END_POINTS.USER_PROGRESS}`)\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-data-points',\n templateUrl: './data-points.component.html',\n styleUrls: ['./data-points.component.css']\n})\nexport class DataPointsComponent implements OnInit {\n @Input() objectData: any\n @Input() layoutType: string = ''\n @Input() fetchDataFromApi: boolean = false\n @Input() providerId : any = ''\n @Input() pageLayout: any = ''\n @Input() title: any\n customArray: any[][] = []\n isDataLoading: boolean = false\n apiResults: any\n \n constructor(public insightSvc: InsiteDataService) { }\n\n ngOnInit() {\n if (this.objectData && this.layoutType === 'gridLayout') {\n this.customArray = this.createCustomArray(this.objectData.metrics)\n }\n if(this.fetchDataFromApi) {\n this.isDataLoading = true\n if (this.pageLayout === 'nlw') {\n this.getStats()\n } else {\n this.getInsiteData()\n }\n }\n } \n\n createCustomArray(arr: any[]): any[][] {\n const nByn: any[][] = []\n for (let i = 0; i < arr.length; i += this.objectData.dataColSpan) {\n nByn.push(arr.slice(i, i + this.objectData.dataColSpan))\n }\n return nByn \n }\n\n getInsiteData(){\n let request: any = {}\n request = {\n \"request\": {\n \"filters\": {\n \"organisations\": [\n this.providerId\n ]\n }\n }\n }\n if (this.pageLayout && this.pageLayout === 'mdo') {\n request = {\n \"request\": {\n \"filters\": {\n \"requestType\": \"MDO_INSIGHT\",\n \"organisations\": [\n this.providerId\n ]\n }\n }\n }\n }\n this.insightSvc.fetchSearchData(request).subscribe((res: any)=> {\n if(res && res.result && res.result.response && res.result.response.nudges && res.result.response.nudges.length) {\n res.result.response.nudges.forEach((nudgeData: any) => {\n if(this.providerId && this.providerId === nudgeData.orgId) {\n this.objectData = nudgeData.data\n }\n })\n }\n this.isDataLoading = false\n })\n\n }\n\n getStats() {\n this.insightSvc.fetchNwlStats().subscribe((res: any) => {\n if(res && res.result && res.result.data) {\n this.objectData = res.result.data\n }\n this.isDataLoading = false\n }, error => {\n console.log(error)\n this.isDataLoading = false\n })\n }\n\n converToIndianSystem(value: any) {\n if (value) {\n let numStr = value.toString()\n let [integerPart, decimalPart] = numStr.split('.')\n let lastThree = integerPart.slice(-3);\n let otherNumbers = integerPart.slice(0, -3);\n if (otherNumbers !== '') {\n lastThree = ',' + lastThree;\n }\n let formattedIntegerPart = otherNumbers.replace(/\\B(?=(\\d{2})+(?!\\d))/g, ',') + lastThree;\n const result = decimalPart ? `${formattedIntegerPart}.${decimalPart.substr(0,2)}` : formattedIntegerPart;\n return result\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-skeleton-loader',\n templateUrl: './skeleton-loader-lib.component.html',\n styleUrls: ['./skeleton-loader-lib.component.scss'],\n})\nexport class SkeletonLoaderLibComponent implements OnInit {\n\n @Input() bindingClass = ''\n @Input() height = ''\n @Input() width = ''\n constructor() { }\n\n ngOnInit() {\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SkeletonLoaderLibComponent } from './skeleton-loader-lib.component'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { MatDialogModule, MatIconModule } from '@angular/material'\n\n@NgModule({\n declarations: [SkeletonLoaderLibComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatIconModule,\n ],\n exports: [\n SkeletonLoaderLibComponent,\n ],\n entryComponents: [SkeletonLoaderLibComponent],\n})\nexport class SkeletonLoaderLibModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataPointsComponent } from './data-points.component';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [DataPointsComponent],\n imports: [\n CommonModule,\n SkeletonLoaderLibModule\n ],\n exports: [DataPointsComponent],\n providers:[InsiteDataService]\n})\nexport class DataPointsModule { }\n","import { DatePipe } from '@angular/common';\nimport {\n Component,\n Input,\n OnInit,\n \n} from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-calender',\n templateUrl: './calender.component.html',\n styleUrls: ['./calender.component.scss']\n})\nexport class CalenderComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() fetchDataFromApi: boolean = false\n @Input() showHeader: boolean = false\n @Input() defaultDays: number = 3\n @Input() providerId: any\n @Input() fullCalendor: boolean = false\n days = []\n trainings: any = {}\n currentMonthAndYear: any\n isDataLoading: boolean = false\n currentDate: any = new Date()\n endDate: any\n startDate: any\n allMonths = [\"January\", \"February\", \"March\",\n \"April\", \"May\", \"June\", \"July\",\n \"August\", \"September\", \"October\",\n \"November\", \"December\"\n ]\n monthsDropdown: any = []\n selectedMonth: any\n constructor(private datePipe: DatePipe, public insightSvc: InsiteDataService) { }\n\n ngOnInit() {\n this.currentMonthAndYear = this.datePipe.transform(this.currentDate, 'MMMM y')\n this.selectedMonth = this.datePipe.transform(this.currentDate, 'LLLL yyyy')\n if (this.fullCalendor) {\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\n this.getMonthsDropdownData()\n }\n if (!this.fullCalendor) {\n this.days = this.getDays(this.currentDate, +this.defaultDays)\n }\n this.startDate = this.days[0]\n this.endDate = this.days[this.days.length - 1]\n if(this.fetchDataFromApi) {\n this.isDataLoading = true\n this.getInsiteData()\n }\n }\n getInsiteData() {\n let request = {\n \"locale\": [\n \"en\"\n ],\n \"query\": \"\",\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"category\": [\n \"Calendar\"\n ],\n \"status\": [\n \"Live\",\n \"Retired\"\n ],\n \"contentType\": \"Event\",\n \"startDate\": {\n \">=\": this.startDate,\n \"<=\": this.endDate\n // \">=\": \"2024-01-15\",\n // \"<\": \"2024-05-31\"\n },\n \"channel\": [this.providerId]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n }\n }\n }\n this.insightSvc.fetchTrainingDetails(request).subscribe((res: any)=> {\n if (res && res.result && res.result.Event) {\n res.result.Event.forEach((resp: any) => {\n if (this.trainings[resp.startDate]) {\n let prevData = this.trainings[resp.startDate]\n let location = resp.eventType\n if (resp.location && location !== \"Online\") {\n const jsonResp = JSON.parse(resp.location)\n location = jsonResp['address']\n }\n const formatObject = {\n location: location,\n startTime: this.convertTo12HourFormat(resp.startTime),\n endTime: this.convertTo12HourFormat(resp.endTime),\n title: resp.name,\n startDate: this.formatDate(resp.startDate),\n endDate: this.formatDate(resp.endDate),\n registrationLink: resp.registrationLink,\n }\n prevData.push(formatObject)\n this.trainings[resp.startDate] = prevData\n }\n })\n }\n this.isDataLoading = false\n })\n }\n\n getKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n\n formatDate(date: any) {\n let formatDate = new Date(date)\n return this.datePipe.transform(formatDate, 'E, dd LLL')\n }\n\n convertTo12HourFormat(timeString: string): string {\n const time = timeString.split(\":\")\n let hours = +time[0]\n const minutes = +time[1]\n const ampm = hours >= 12 ? 'PM' : 'AM'\n hours = hours % 12\n hours = hours ? hours : 12\n const strHours = hours < 10 ? '0' + hours : hours.toString()\n const strMinutes = minutes < 10 ? '0' + minutes : minutes.toString()\n return `${strHours}:${strMinutes} ${ampm}`\n }\n\n getDays(cDate: any, counter: number) {\n const days: any = []\n let initDate: any = new Date(cDate)\n initDate = this.datePipe.transform(initDate, 'y-MM-dd')\n days.push(initDate)\n this.trainings[initDate] = []\n while (counter > 0) {\n let myDate: any = new Date(cDate)\n myDate = myDate.setDate(myDate.getDate() + 1)\n cDate = myDate\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\n days.push(myDate)\n this.trainings[myDate] = []\n counter = counter - 1\n }\n return days\n }\n\n getDaysInMonth(year: number, month: number): Date[] {\n const date = new Date(year, month, 1)\n const days: any = []\n this.trainings = {}\n while (date.getMonth() === month) {\n let myDate: any = new Date(date)\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\n days.push(myDate)\n this.trainings[myDate] = []\n date.setDate(date.getDate() + 1)\n }\n return days\n }\n\n getMonthsDropdownData() {\n this.allMonths.forEach((month: any) => {\n this.monthsDropdown.push(`${month} ${this.currentDate.getFullYear()}`)\n })\n }\n\n selectMonth(event: any) {\n const selectedMonth: any = new Date(event)\n this.currentDate = selectedMonth\n this.days = []\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\n this.startDate = this.days[0]\n this.endDate = this.days[this.days.length - 1]\n this.isDataLoading = true\n this.getInsiteData()\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-calender-day',\n templateUrl: './calender-day.component.html',\n styleUrls: ['./calender-day.component.scss']\n})\nexport class CalenderDayComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() day: any\n @Input() dataLoading: boolean\n @Input() rowId: any\n @Input() eventDate: any\n webDisplayDate: string = \"\"\n mobileDisplayDate: string = \"\"\n currentDate: any = new Date()\n\n constructor(private datePipe: DatePipe) { }\n\n ngOnInit() {\n this.currentDate = this.datePipe.transform(this.currentDate, 'y-MM-dd')\n }\n\n openLink(link: string) {\n window.open(link, \"_blank\")\n }\n\n formatDate(date: any, type: string) {\n let fDate = new Date(date)\n if (type === 'web') {\n return this.datePipe.transform(fDate, 'E, dd LLL')\n }\n if (type === 'mob') {\n return this.datePipe.transform(fDate, 'E dd LLL')\n }\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { CalenderComponent } from './calender.component';\nimport { MatIconModule, MatSelectModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { CalenderDayComponent } from './calender-day/calender-day.component';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n SkeletonLoaderLibModule\n ],\n declarations: [CalenderComponent, CalenderDayComponent],\n exports: [CalenderComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n providers:[DatePipe, InsiteDataService],\n})\nexport class CalenderModule {}","import { Injectable } from '@angular/core';\nimport { NsContent } from '../_models/widget-content.model';\nimport { NsContentStripWithTabs } from '../_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model';\nimport { NsCommonStrip } from '../_common/common-strip/common-strip.model'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommonMethodsService {\n\n constructor() { }\n\n transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit | NsCommonStrip.ICommonStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n handleCapitalize(str: string, type?: string): string {\n let returnValue = ''\n if (str) {\n if (type === 'name') {\n returnValue = str.split(' ').map(_str => {\n return _str.charAt(0).toUpperCase() + _str.slice(1)\n }).join(' ')\n } else {\n\n returnValue = str && (str.charAt(0).toUpperCase() + str.slice(1))\n }\n }\n return returnValue\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsCommonStrip } from './common-strip.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentLibService } from '../../_services/widget-content-lib.service';\nimport { NsContent } from '../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserServiceLib } from '../../_services/widget-user-lib.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CommonMethodsService } from '../../_services/common-methods.service';\n\n\ninterface IStripUnitCommonData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsCommonStrip.ICommonStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsCommonStrip.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n}\n\n@Component({\n selector: 'sb-uic-common-strip',\n templateUrl: './common-strip.component.html',\n styleUrls: ['./common-strip.component.scss']\n})\nexport class CommonStripComponent extends WidgetBaseComponent\nimplements\nOnInit,\nOnDestroy,\nNsWidgetResolver.IWidgetData<NsCommonStrip.ICommonStrip> {\n @Input() widgetData!: NsCommonStrip.ICommonStrip;\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitCommonData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n\n constructor(\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentLibService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n private userSvc: WidgetUserServiceLib,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private commonMethodsSvc: CommonMethodsService\n ) {\n super();\n this.environment = environment\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // null check if in case no strips key in config\n if(this.widgetData && this.widgetData.strips) {\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n this.processStrip(strip, [], 'fetching', false, null);\n if(strip.dataType === 'in-hand' && this.widgetData[strip.dataKey]){\n this.processStrip(\n strip,\n this.commonMethodsSvc.transformContentsToWidgets(this.widgetData[strip.dataKey], strip),\n 'done',\n true,\n strip.viewMoreUrl || '',\n );\n } else {\n if (this.checkForEmptyWidget(strip)) {\n // this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n // this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitCommonData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsCommonStrip.ICommonStrip, data: IStripUnitCommonData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitCommonData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitCommonData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitCommonData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n const tabWithMaxWidgets = data.tabs.reduce(\n (prev, current) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n \n private async processStrip(\n strip: NsCommonStrip.ICommonStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsCommonStrip.ICommonStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n dataType: strip.dataType,\n dataKey: strip.dataKey,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n if (key === 'cbpPlan') {\n if (stripsResultDataMap.tabs.length) {\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\n }\n }\n return returnValue;\n }\n \n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsCommonStrip.ICommonStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitCommonData, stripKey: string) {\n\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CommonStripComponent } from './common-strip.component';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { HttpClient } from '@angular/common/http';\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\n@NgModule({\n declarations: [CommonStripComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports: [CommonStripComponent]\n})\nexport class CommonStripModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-announcements',\n templateUrl: './announcements.component.html',\n styleUrls: ['./announcements.component.scss']\n})\nexport class AnnouncementsComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() mobileHeight: boolean = false\n @Input() fetchDataFromApi: boolean = false\n @Input() channelId: any\n @Output() openDialog = new EventEmitter<any>()\n isLoading: boolean = false\n announcements: any = []\n expand = false\n expanded: boolean = false\n\n constructor(public insightSvc: InsiteDataService) {\n }\n\n ngOnInit() {\n if (this.fetchDataFromApi) {\n this.isLoading = true\n this.fetchData()\n }\n }\n\n fetchData() {\n let request = {\n filterCriteriaMap: {\n channel: [this.channelId],\n //channel: [\"01381906916850892825\"],\n },\n requestedFields: [\n \"name\",\n \"description\",\n \"createdOn\",\n \"updatedOn\",\n \"category\"\n ],\n orderBy: \"createdOn\",\n orderDirection: \"ASC\",\n facets: [\n \"channel\"\n ],\n pageSize: this.objectData.pageSize\n }\n this.insightSvc.fetchAnnouncementsData(request).subscribe((res: any)=> {\n if(res && res.result && res.result.data) {\n res.result.data.forEach((resp: any) => {\n this.announcements.push({\n value: resp.description,\n expanded: false\n })\n })\n }\n if (this.announcements.length > 3) {\n this.expand = true\n }\n this.objectData.list = this.announcements\n this.isLoading = false\n }, error => {\n console.log(error)\n this.objectData.list = []\n this.isLoading = false\n })\n }\n\n viewMoreOrLess(item: any) {\n if (item.value.length > 152) {\n item.expanded = !item.expanded\n }\n }\n\n openAnnouncements() {\n this.openDialog.emit(true)\n }\n\n showMoreOrLess() {\n this.expanded = !this.expanded\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { AnnouncementsComponent } from './announcements.component';\nimport { MatIconModule } from '@angular/material';\n\n\n\n@NgModule({\n declarations: [AnnouncementsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n SkeletonLoaderLibModule\n ],\n exports: [AnnouncementsComponent],\n})\nexport class AnnouncementsModule { }","import { Component, Input, OnInit } from '@angular/core';\nimport * as moment_ from 'moment';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nconst moment = moment_;\n@Component({\n selector: 'sb-uic-top-learners',\n templateUrl: './top-learners.component.html',\n styleUrls: ['./top-learners.component.scss']\n})\nexport class TopLearnersComponent implements OnInit {\n\n @Input() objectData: any\n @Input() channelId: any\n @Input() channnelName: any\n loading: boolean = false\n month: string = ''\n results: any = []\n\n colors: any = [\n '#EB7181', // red\n '#306933', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n '#EB7181', // red\n '#306933', // green\n '#000000', // black\n '#3670B2', // blue\n ]\n\n constructor(public insightSvc: InsiteDataService,) { }\n\n ngOnInit() {\n this.getData()\n this.month = new Date().toLocaleString('default', { month: 'long' })\n }\n\n getData() {\n this.loading = true\n this.insightSvc.fetchLearner(this.channelId).subscribe((res: any)=> {\n if (res && res.result && res.result.result && res.result.result.length) {\n this.results = res.result.result\n this.month = moment().month(Number(res.result.result[0].month) - 1).format('MMMM')\n }\n this.loading = false\n }, (_error: any) => {\n // tslint:disable-next-line: align\n this.loading = false\n })\n }\n\n getRank(rank: number) {\n if (rank === 1) {\n return \"1st\"\n } \n if (rank === 2) {\n return \"2nd\"\n } \n if (rank === 3) {\n return \"3rd\"\n } else {\n return `${rank}th`\n } \n }\n\n getColor() {\n let circleColor = ''\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\n circleColor = this.colors[randomIndex]\n return circleColor\n }\n\n createInititals(name: string) {\n let initials = ''\n const array = name.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < name.length; i += 1) {\n if (name.charAt(i) === ' ') {\n continue\n }\n if (name.charAt(i) === name.charAt(i)) {\n initials += name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n return initials.toUpperCase()\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TopLearnersComponent } from './top-learners.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { MatTooltipModule } from '@angular/material';\n\n@NgModule({\n declarations: [TopLearnersComponent],\n imports: [\n CommonModule,\n SkeletonLoaderLibModule,\n MatTooltipModule\n ],\n exports: [TopLearnersComponent],\n})\nexport class TopLearnersModule { }","import { Directive, Input, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[sbUicScrollableItem]'\n})\nexport class ScrollableItemDirective {\n\n @Input('sbUicScrollableItem') public key: string\n constructor(private el: ElementRef<HTMLElement>) {}\n\n public scrollIntoView(blockValue: any) {\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: blockValue });\n }\n\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-cbp-plan',\n templateUrl: './cbp-plan.component.html',\n styleUrls: ['./cbp-plan.component.scss']\n})\nexport class CbpPlanComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() mobileHeight: boolean = false\n @Input() fetchDataFromApi: boolean = false\n @Input() channelId: any\n @Output() openDialog = new EventEmitter<any>()\n isLoading: boolean = false\n currentIndex = 0\n styleData: any = {}\n contentdata: any = []\n\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor(private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService) { }\n\n ngOnInit() {\n this.styleData = this.objectData && this.objectData.sliderData && this.objectData.sliderData.styleData\n if (this.objectData && this.objectData.list) {\n this.objectData.list.forEach((contentEle: any) => {\n let localData = {}\n localData['title'] = contentEle.title\n localData['downloaUrl'] = contentEle.downloaUrl\n localData['cardSubType'] = \"card-wide-lib\"\n localData['cardCustomeClass'] = \"\"\n this.contentdata.push(localData)\n })\n }\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n\n getFileName(item: any) {\n console.log(item.downloadUrl)\n return item.downloadUrl.split(\"/\").at(-1)\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateActualLabel(label, type, '');\n }\n\n downloadCBPPlan(item: any) {\n const downloadUrl = item.downloaUrl\n const xhr = new XMLHttpRequest()\n xhr.open('GET', downloadUrl, true)\n xhr.responseType = 'blob'\n\n xhr.onload = function() {\n if (xhr.status === 200) {\n const blob = new Blob([xhr.response], { type: 'application/pdf' })\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = downloadUrl.split(\"/\").at(-1)\n document.body.appendChild(a)\n a.click()\n document.body.removeChild(a)\n window.URL.revokeObjectURL(url)\n } else {\n console.error('Error downloading the PDF', xhr.statusText)\n }\n }\n xhr.onerror = function() {\n console.error('Network error')\n }\n xhr.send()\n }\n}\n","import { Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core'\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\nimport { ICarousel, ICarouselStyle } from './sliders-ng-content.model'\nimport { Subscription, interval } from 'rxjs'\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-sliders-ng-content',\n templateUrl: './sliders-ng-content.component.html',\n styleUrls: ['./sliders-ng-content.component.scss'],\n})\nexport class SlidersNgContentLibComponent extends WidgetBaseComponent\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\n @Input() widgetData!: ICarousel[]\n @Input() styleData!: ICarouselStyle\n @Input() title: any = ''\n @Input() loadNgContentData: boolean = false\n @Input() autoScroll: boolean = false\n @Input() customBanner: boolean = false\n @Output() currentIndexValue = new EventEmitter<any>()\n \n @HostBinding('id')\n public id = `banner_${Math.random()}`\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n @Input() currentIndex = 0\n slideInterval: Subscription | null = null\n isMobile = false\n\n constructor(\n private events: EventService,\n private valueSvc: ValueService\n ) {\n super()\n }\n\n ngOnInit() {\n if(this.autoScroll) {\n this.reInitiateSlideInterval()\n }\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n reInitiateSlideInterval() {\n if (this.widgetData && this.widgetData.length > 1) {\n try {\n if (this.slideInterval) {\n this.slideInterval.unsubscribe()\n }\n } catch (e) {\n } finally {\n this.slideInterval = interval(8000).subscribe(() => {\n if (this.currentIndex === this.widgetData.length - 1) {\n this.currentIndex = 0\n this.currentIndexValue.emit(this.currentIndex)\n } else {\n this.currentIndex += 1\n this.currentIndexValue.emit(this.currentIndex)\n }\n })\n }\n }\n }\n slideTo(index: number) {\n if (index >= 0 && index < this.widgetData.length) {\n this.currentIndex = index\n this.currentIndexValue.emit(this.currentIndex)\n } else if (index === this.widgetData.length) {\n this.currentIndex = 0\n this.currentIndexValue.emit(this.currentIndex)\n } else {\n this.currentIndex = this.widgetData.length + index\n this.currentIndexValue.emit(this.currentIndex)\n }\n if(this.autoScroll) {\n this.reInitiateSlideInterval()\n }\n }\n\n get isOpenInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n return true\n } return false\n }\n\n openInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n window.open(currentData.redirectUrl)\n }\n }\n raiseTelemetry(bannerUrl: string | undefined) {\n this.openInNewTab()\n const path = window.location.pathname.replace('/', '')\n const url = path + window.location.search\n\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'banner',\n },\n {\n pageUrl: url,\n bannerRedirectUrl: bannerUrl,\n },\n {\n pageIdExt: 'banner',\n module: WsEvents.EnumTelemetrymodules.CONTENT,\n })\n }\n\n ngOnDestroy() {\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SlidersNgContentLibComponent } from './sliders-ng-content.component'\nimport { RouterModule } from '@angular/router'\nimport { ImageResponsiveModule } from '../../_directives/image-responsive/image-responsive.module'\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\n/* tslint:disable */\nimport Hammer from 'hammerjs'\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\n/* tslint:enable */\nexport class MyHammerConfig extends HammerGestureConfig {\n buildHammer(element: HTMLElement) {\n const mc = new Hammer(element, {\n touchAction: 'pan-y',\n })\n return mc\n }\n}\n\n// tslint:disable-next-line: max-classes-per-file\n@NgModule({\n declarations: [SlidersNgContentLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n NavigationModule,\n ImageResponsiveModule,\n ],\n exports: [SlidersNgContentLibComponent],\n entryComponents: [SlidersNgContentLibComponent],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: MyHammerConfig,\n },\n ],\n})\nexport class SlidersNgContentLibModule { }\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { ScrollableItemDirective } from './scrollable-item.directive'\n\n@NgModule({\n declarations: [ScrollableItemDirective],\n imports: [\n CommonModule,\n ],\n exports: [ScrollableItemDirective],\n})\nexport class ScrollableItemModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CbpPlanComponent } from './cbp-plan.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { MatIconModule } from '@angular/material';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\n\n\n\n@NgModule({\n declarations: [CbpPlanComponent],\n imports: [\n CommonModule,\n SkeletonLoaderLibModule,\n MatIconModule,\n ScrollableItemModule,\n SlidersNgContentLibModule,\n ],\n exports: [CbpPlanComponent]\n})\nexport class CbpPlanModule { }\n","import { NgModule } from '@angular/core';\nimport { ConsumptionComponent } from './consumption.component';\nimport { ContentStripWithTabsLibModule } from './_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { SlidersLibModule } from '../lib/_common/sliders/sliders.module';\nimport { DataPointsModule } from './_common/data-points/data-points.module';\nimport { CalenderModule } from './_common/calender/calender.module';\nimport { CommonStripModule } from './_common/common-strip/common-strip.module';\nimport { AnnouncementsModule } from './_common/announcements/announcements.module';\nimport { TopLearnersModule } from './_common/top-learners/top-learners.module';\nimport { CbpPlanModule } from './_common/cbp-plan/cbp-plan.module';\n\n@NgModule({\n declarations: [ConsumptionComponent],\n imports: [\n ContentStripWithTabsLibModule,\n SlidersLibModule\n ],\n exports: [ConsumptionComponent,\n ContentStripWithTabsLibModule,\n SlidersLibModule,\n DataPointsModule,\n CalenderModule,\n CommonStripModule,\n AnnouncementsModule,\n TopLearnersModule,\n CbpPlanModule,\n ],\n})\nexport class ConsumptionModule { }\n","export const ROOT_WIDGET_CONFIG = {\n \n card: {\n _type: 'cardLib',\n cardResource: 'cardContentLib'\n },\n}\n","import { NsContent } from './widget-content.model';\n\nexport namespace NsCardContent {\n export interface ICard {\n content: NsContent.IContent;\n cardSubType: TCardSubType;\n context: { pageSection: string; position?: number };\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n likes?: number;\n contentTags?: IContentTags;\n stateData: any;\n cardCustomeClass?: any;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField?: string;\n }\n\n export type TCardSubType =\n | 'standard'\n | 'minimal'\n | 'space-saving'\n | 'card-user-details'\n | 'basic-info'\n | 'basic-details'\n | 'card-description-back'\n | 'network-card'\n | 'user-card';\n\n export enum EContentStatus {\n LIVE = 'Live',\n EXPIRED = 'Expired',\n DELETED = 'Deleted',\n MARK_FOR_DELETION = 'MarkedForDeletion',\n }\n export enum ACBPConst {\n UPCOMING = 'upcoming',\n ALL = 'All',\n OVERDUE = 'overdue',\n SUCCESS = 'success',\n }\n\n export enum IGOTConst {\n COMPETENCIES = 'competencies_v5',\n RETIRED = 'Retired',\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { WidgetBaseComponent, NsWidgetResolver } from '@sunbird-cb/resolver-v2';\nimport { NsCardContent } from '../../_models/card-content.model';\nimport { UtilityService } from '@sunbird-cb/utils-v2';\nimport { WidgetContentLibService } from '../../_services/widget-content-lib.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-cards',\n templateUrl: './cards.component.html',\n styleUrls: ['./cards.component.scss']\n})\nexport class CardsComponent extends WidgetBaseComponent\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Output() triggerTelemetry = new EventEmitter<any>()\n isIntranetAllowedSettings = false\n cbPlanMapData: any\n cbPlanInterval: any\n constructor(private utilitySvc: UtilityService,\n private contSvc: WidgetContentLibService,\n public router: Router\n ) {\n super();\n }\n\n ngOnInit() {\n this.cbPlanInterval = setInterval(() => {\n this.getCbPlanData()\n }, 1000)\n \n \n }\n\n get isLiveOrMarkForDeletion() {\n if (\n !this.widgetData.content.status ||\n this.widgetData.content.status === 'Live' ||\n this.widgetData.content.status === 'MarkedForDeletion'\n ) {\n return true\n }\n return false\n }\n\n get showIntranetContent() {\n if (this.widgetData.content.isInIntranet && this.utilitySvc.isMobile) {\n return !this.isIntranetAllowedSettings\n }\n return false\n }\n async getRedirectUrlData(content: any){\n if(content.externalId) {\n this.router.navigate(\n [`app/toc/ext/${content.contentId}`])\n } else {\n let urlData = await this.contSvc.getResourseLink(content)\n this.router.navigate(\n [urlData.url],\n {\n queryParams: urlData.queryParams\n })\n }\n \n }\n getCbPlanData() {\n let cbpList: any={}\n if (localStorage.getItem('cbpData')) {\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\n if (cbpListArr && cbpListArr.length) {\n cbpListArr.forEach((data: any) => {\n cbpList[data.identifier] = data\n })\n }\n this.cbPlanMapData = cbpList\n // this.karmaPointLoading = false\n clearInterval(this.cbPlanInterval)\n }\n }\n\n\n\n raiseCardClick(data: any) {\n this.triggerTelemetry.emit(data)\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsCardContent } from '../../../_models/card-content.model';\n\n@Component({\n selector: 'ws-cb-widget-card-resource',\n templateUrl: './card-resource.component.html',\n styleUrls: ['./card-resource.component.scss'],\n})\nexport class CardResourceComponent extends WidgetBaseComponent\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\n\n @Input() widgetData!: NsCardContent.ICard;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport { WidgetContentLibService } from '../../../_services/widget-content-lib.service';\n\n@Component({\n selector: 'sb-uic-card-portrait',\n templateUrl: './card-portrait.component.html',\n styleUrls: ['./card-portrait.component.scss']\n})\nexport class CardPortraitComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Input() cbPlanMapData: any\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentLibService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n // for telemetry\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\n }\n this.contSvc.changeTelemetryData(contentData)\n // for redirection\n this.contentData.emit(contentData)\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipePublicURL',\n})\nexport class PipePublicURL implements PipeTransform {\n environment: any\n constructor(\n @Inject('environment') environment: any,){\n this.environment = environment\n }\n\n transform(value: string): any {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n return value ? finalURL : ''\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipePublicURL } from './pipe-public-URL.pipe'\n\n@NgModule({\n declarations: [PipePublicURL],\n imports: [\n CommonModule,\n ],\n exports: [PipePublicURL],\n})\nexport class PipePublicURLModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'objectToArray'\n})\nexport class ObjectToArrayPipe implements PipeTransform {\n // transform(value: any, ...args: any[]): any[] {\n // console.log(\"function called\")\n // if (!value) {\n // return [];\n // }\n // console.log(Object.keys(value).map(key => ({ key, value: value[key] })), \"Object.keys(value).map(key => ({ key, value: value[key] }))==----------\")\n // return Object.keys(value).map(key => ({ key, value: value[key] }));\n // }\n transform(...args: any[]): any[] { \n return args; \n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { ObjectToArrayPipe } from './object-to-array.pipe'\n\n@NgModule({\n declarations: [ObjectToArrayPipe],\n imports: [\n CommonModule,\n ],\n exports: [ObjectToArrayPipe],\n})\nexport class ObjectToArrayPipeModule { }","import { Component, OnInit, Input } from '@angular/core'\nimport { NsContent } from '../../_models/widget-content.model'\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service'\n\n@Component({\n selector: 'sb-uic-display-content-type',\n templateUrl: './display-content-type-lib.component.html',\n styleUrls: ['./display-content-type-lib.component.scss'],\n})\nexport class DisplayContentTypeLibComponent implements OnInit {\n @Input() useTranslation: boolean = true\n @Input() displayContentType: NsContent.EDisplayContentTypes = NsContent.EDisplayContentTypes.DEFAULT\n displayContentTypeEnum = NsContent.EDisplayContentTypes\n constructor(private langtranslations: MultilingualTranslationsService) { }\n\n ngOnInit() {\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '')\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { DisplayContentTypeLibComponent } from './display-content-type-lib.component'\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms'\n\n@NgModule({\n declarations: [DisplayContentTypeLibComponent],\n imports: [CommonModule, ReactiveFormsModule, FormsModule],\n exports: [DisplayContentTypeLibComponent],\n})\nexport class DisplayContentTypeLibModule {}\n","import { Directive, Input, HostListener, HostBinding, OnChanges } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsDefaultThumbnail]',\r\n})\r\nexport class DefaultThumbnailDirective implements OnChanges {\r\n\r\n @Input() wsUtilsDefaultThumbnail = ''\r\n @Input() src = ''\r\n isSrcUpdateAttemptedForDefault = false\r\n\r\n @HostBinding('src') srcUrl = ''\r\n @HostListener('error') updateSrc() {\r\n if (!this.isSrcUpdateAttemptedForDefault) {\r\n this.srcUrl = this.wsUtilsDefaultThumbnail\r\n this.isSrcUpdateAttemptedForDefault = true\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.srcUrl = this.src\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { DefaultThumbnailDirective } from './default-thumbnail.directive'\r\n\r\n@NgModule({\r\n declarations: [DefaultThumbnailDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [DefaultThumbnailDirective],\r\n})\r\nexport class DefaultThumbnailModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport * as moment from 'moment'\r\n\r\n@Pipe({\r\n name: 'pipeDurationTransform',\r\n})\r\nexport class PipeDurationTransformPipe implements PipeTransform {\r\n\r\n transform(data: number, type: 'time24' | 'hms' | 'hour' | 'hms2H' | 'hms2M'| 'day'): any {\r\n if (data <= 0) {\r\n return ''\r\n }\r\n const h = Math.floor(data / 3600)\r\n const m = Math.floor((data % 3600) / 60)\r\n const s = Math.floor((data % 3600) % 60)\r\n let duration = ''\r\n switch (type) {\r\n case 'time24':\r\n return this.defaultDuration(h, m, s)\r\n case 'hms':\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n case 'hms2H':\r\n /**to Print HH:mm:ss */\r\n const duration2 = moment.duration(data, 'seconds')\r\n const resultstring = moment.utc(duration2.asMilliseconds()).format('HH:mm:ss')\r\n return resultstring\r\n case 'hms2M': /**to Print mm:ss */\r\n const duration2H = moment.duration(data, 'seconds')\r\n const resultstring2H = moment.utc(duration2H.asMilliseconds()).format('mm:ss')\r\n\r\n return resultstring2H\r\n case 'hour':\r\n if (h === 0) {\r\n duration += 'less than an hour'\r\n }\r\n if (h === 1) {\r\n duration += `${h} hour`\r\n }\r\n if (h > 1) {\r\n duration += `${h} hours`\r\n }\r\n return duration\r\n case 'day':\r\n if (h > 24) {\r\n const duration3 = moment.duration(data, 'seconds')\r\n return `${duration3.days()} day(s)`\r\n }\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n\r\n default:\r\n return this.defaultDuration(h, m, s)\r\n }\r\n }\r\n\r\n defaultDuration(h: number, m: number, s: number) {\r\n let duration = ''\r\n duration += h > 0 ? `${h.toString().padStart(2)}:` : ''\r\n duration += m > 0 ? `${m.toString().padStart(2)}:` : '00:'\r\n duration += s > 0 ? s.toString().padStart(2) : '00'\r\n return duration\r\n }\r\n hmsCalculation(h: number, m: number, s: number, dur: string, type: string) {\r\n let space = ''\r\n let duration = dur\r\n if (h > 0) {\r\n duration += type === 'hms' ? `${h}h` : `${h} hr`\r\n }\r\n if (m > 0) {\r\n if (h > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${m}m` : `${space}${m} min`\r\n }\r\n if (s > 0 && h === 0) {\r\n if (m > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${s}s` : `${space}${s} sec`\r\n }\r\n return duration\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeDurationTransformPipe } from './pipe-duration-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeDurationTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeDurationTransformPipe],\r\n})\r\nexport class PipeDurationTransformModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardUser } from '../../../_models/card-users.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-user',\n templateUrl: './card-user.component.html',\n styleUrls: ['./card-user.component.scss']\n})\nexport class CardUserComponent implements OnInit {\n @Input() widgetData!: NsCardUser.ICard;\n @Output() userData = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n }\n }\n\n getRedirectUrlData(userData: any){\n this.userData.emit(userData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\n },\n {\n id: this.widgetData.content.userId,\n // type: this.widgetData.user.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n // ver: `${this.widgetData.user.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase('user')}-card`,\n module: _.camelCase('user'),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n \n@Component({\n selector: 'sb-uic-card-landscape',\n templateUrl: './card-landscape.component.html',\n styleUrls: ['./card-landscape.component.scss']\n})\nexport class CardLandscapeComponent implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Output() triggerTelemetry = new EventEmitter<any>()\n @Input() cbPlanMapData: any\n isCardFlipped:boolean = false\n defaultThumbnail: any\n acbpConstants = NsCardContent.ACBPConst\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n cbPlanInterval: any\n \n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.cbPlanInterval = setInterval(() => {\n this.getCbPlanData()\n }, 1000)\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry(content: any) {\n this.triggerTelemetry.emit(content)\n }\n\n\n getCbPlanData() {\n let cbpList: any={}\n if (localStorage.getItem('cbpData')) {\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\n if (cbpListArr && cbpListArr.length) {\n cbpListArr.forEach((data: any) => {\n cbpList[data.identifier] = data\n })\n }\n // this.cbPlanMapData = cbpList\n // this.karmaPointLoading = false\n clearInterval(this.cbPlanInterval)\n }\n }\n\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-wide',\n templateUrl: './card-wide.component.html',\n styleUrls: ['./card-wide.component.scss']\n})\nexport class CardWideComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n \n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { WidgetContentLibService } from '../../../_services/widget-content-lib.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-card-mdo-channel',\n templateUrl: './card-mdo-channel.component.html',\n styleUrls: ['./card-mdo-channel.component.scss']\n})\nexport class CardMDOChannelComponent implements OnInit {\n @Input() widgetData!: NsContent.IContent;\n @Output() channelData = new EventEmitter<any>()\n @Output() emitTelemetry = new EventEmitter<any>()\n @Input() isCardLoading: boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentLibService,\n public router: Router) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n raiseTelemetry(contentData: any) {\n this.emitTelemetry.emit(contentData)\n if (this.widgetData) {\n contentData['typeOfTelemetry'] = 'mdo-channel'\n }\n this.contSvc.changeTelemetryData(contentData)\n }\n channelClick(channeldata:any) {\n this.channelData.emit(channeldata)\n }\n\n redirectTo(content: any) {\n this.router.navigate([`/app/learn/mdo-channels/${content.orgName}/${content.identifier}/micro-sites`])\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-wide-v2',\n templateUrl: './card-wide-v2.component.html',\n styleUrls: ['./card-wide-v2.component.scss']\n})\nexport class CardWideV2Component implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() cbPlanMapData: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Output() triggerTelemetry = new EventEmitter<any>()\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry(contentData: any) {\n this.triggerTelemetry.emit(contentData)\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { Router } from '@angular/router';\nimport { WidgetContentLibService } from '../../../_services/widget-content-lib.service';\n\n@Component({\n selector: 'sb-uic-card-karma-programs',\n templateUrl: './card-karma-programs.component.html',\n styleUrls: ['./card-karma-programs.component.scss']\n})\nexport class CardKarmaProgramsComponent implements OnInit {\n\n @Input() widgetData!: NsContent.IContent;\n @Input() randomColorApply: boolean = false\n @Output() userData = new EventEmitter<any>()\n @Input() isCardLoading: boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n randomColors: any = [\n '#EF941D',\n '#F97440',\n '#35B5B0',\n '#9988FF',\n '#254092',\n '#926525',\n '#4F72DF'\n ]\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentLibService,\n private router: Router) {\n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.setRandomColor()\n }\n\n setRandomColor(){\n if(this.widgetData && this.widgetData.content) {\n if(this.randomColorApply){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\n }else {\n this.widgetData.content['bgColor'] = '#1a4ca1'\n }\n }\n }\n\n \n\n get getRandomColors(){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n return this.randomColors[randomIndex1]\n }\n\n redirectTo(data: any) {\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n data['typeOfTelemetry'] = 'karma-programs'\n }\n this.contSvc.changeTelemetryData(data)\n this.router.navigate(\n [`/app/learn/karma-programs/${data.title}/${data.playListKey}/${data.orgId}/micro-sites`],\n )\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-card-karma-programs-v2',\n templateUrl: './card-karma-programs-v2.component.html',\n styleUrls: ['./card-karma-programs-v2.component.scss']\n})\nexport class CardKarmaProgramsV2Component implements OnInit {\n\n @Input() widgetData!: NsContent.IContent;\n @Input() randomColorApply: boolean = false\n @Output() userData = new EventEmitter<any>()\n @Output() raiseTemeletry = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n randomColors: any = [\n '#EF941D',\n '#F97440',\n '#35B5B0',\n '#9988FF',\n '#254092',\n '#926525',\n '#4F72DF'\n ]\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private router : Router,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.setRandomColor()\n }\n\n setRandomColor(){\n if(this.widgetData && this.widgetData.content) {\n if(this.randomColorApply){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\n }else {\n this.widgetData.content['bgColor'] = '#1a4ca1'\n }\n }\n }\n\n redirectTo(content: any) {\n this.raiseTemeletry.emit(content)\n this.router.navigate(\n [`/app/learn/karma-programs/${content.title}/${content.playListKey}/${content.orgId}/micro-sites`],\n )\n }\n\n get getRandomColors(){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n return this.randomColors[randomIndex1]\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-provider-card',\n templateUrl: './provider-card.component.html',\n styleUrls: ['./provider-card.component.scss']\n})\nexport class ProviderCardComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() randomColorApply: boolean = true\n @Input() isCardLoading: boolean = false\n\n colors = [\n '#EF941D', '#F97440', '#35B5B0', '#9988FF', '#816FEC',\n '#254092', '#926525', '#4F72DF'\n ];\n\n constructor(private router: Router) {}\n\n ngOnInit() {\n this.setRandomColor()\n }\n\n setRandomColor(){\n if(this.widgetData && this.widgetData.content) {\n if(this.randomColorApply){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.colors.length))\n this.widgetData.content['bgColor'] = this.colors[randomIndex1]\n }else {\n this.widgetData.content['bgColor'] = '#1a4ca1'\n }\n }\n }\n \n\n redirectTo(content: any) { \n this.router.navigate([`/app/learn/browse-by/provider/${content.name}/${content.orgId}/micro-sites`])\n }\n\n\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport { WidgetContentLibService } from '../../../_services/widget-content-lib.service';\n\n@Component({\n selector: 'sb-uic-card-portrait-ext',\n templateUrl: './card-portrait-ext.component.html',\n styleUrls: ['./card-portrait-ext.component.scss']\n})\nexport class CardPortraitExtComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Input() cbPlanMapData: any\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentLibService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n if (this.widgetData && this.widgetData.content) {\n this.widgetData.content.duration = this.widgetData.content.duration * 60\n }\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n // for telemetry\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\n }\n this.contSvc.changeTelemetryData(contentData)\n // for redirection\n this.contentData.emit(contentData)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n// import { WidgetUserServiceLib } from '../../../../_services/widget-user.service';\nimport { ConfigurationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { WidgetContentLibService } from '../../../../_services/widget-content-lib.service';\n\n@Component({\n selector: 'sb-uic-card-assessment',\n templateUrl: './card-assessment.component.html',\n styleUrls: ['./card-assessment.component.css']\n})\n\n// @Directive({\n// selector: '[callFunctionOnInit]'\n// })\nexport class CardAssessmentComponent implements OnInit {\n @Input() widgetData!: NsContent.IContent;\n @Output() contentData = new EventEmitter<any>()\n @Input() isCardLoading: boolean = false\n stripData: any = []\n enrollList: any = []\n activeResource: any = []\n defaultThumbnail: any\n defaultSLogo: any\n daysRemaining: number = 0;\n startDate: any\n endDate: any\n daysPending: boolean = false\n daysFinish: boolean = false\n private intervalId: any;\n days: number;\n hours: number;\n minutes: number;\n constructor(private configSvc: ConfigurationsService, private contSvc: WidgetContentLibService,) { }\n\n ngOnInit(): void {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n }\n }\n\n startCountdown(data: any): void {\n let startDate = data.startDate\n this.updateCountdown(startDate);\n // this.intervalId = setInterval(() => {\n // this.updateCountdown(startDate);\n // }, 1000);\n }\n\n // Method to update the countdown values\n updateCountdown(startDate: any): void {\n let now = new Date().getTime()\n let startingDate: any = new Date(startDate).getTime()\n // startingDate.setHours(startingDate.getHours() - 5);\n // startingDate.setMinutes(startingDate.getMinutes() - 30);\n // startingDate = startingDate.getTime()\n const distance = startingDate - now; \n if (distance > 0) {\n this.daysPending = true\n this.days = Math.floor(distance / (1000 * 60 * 60 * 24));\n this.hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n this.minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\n } else {\n this.daysRemaining = 0;\n this.daysPending = false\n }\n\n }\n\n ngOnDestroy(): void {\n }\n\n getRedirectUrlData(contentData: any) {\n // for telemetry\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\n }\n this.contSvc.changeTelemetryData(contentData)\n // for redirection\n this.contentData.emit(contentData)\n }\n\n}\n","import { Injectable } from '@angular/core'\nimport { Observable } from 'rxjs'\nimport { HttpClient } from '@angular/common/http'\n\nconst urls = {\n DOWNLOAD_CERTIFICATE: (id: string) => `certreg/v2/certs/download/${id}`,\n DOWNLOAD_CERTIFICATE_v2: (id: string) => `apis/protected/v8/cohorts/course/batch/cert/download/${id}`,\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\n\nexport class CertificateService {\n\n constructor(private http: HttpClient) { }\n downloadCertificate(id: string): Observable<any> {\n return this.http.get<any>(urls.DOWNLOAD_CERTIFICATE(id))\n }\n\n downloadCertificate_v2(id: string): Observable<any> {\n return this.http.get<any>(urls.DOWNLOAD_CERTIFICATE_v2(id))\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core'\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'\nimport { TranslateService } from '@ngx-translate/core'\nimport { EventService, MultilingualTranslationsService, WsEvents } from '@sunbird-cb/utils-v2'\nimport { jsPDF } from 'jspdf'\n\n@Component({\n selector: 'sb-uic-certificate-dialog',\n templateUrl: './certificate-dialog.component.html',\n styleUrls: ['./certificate-dialog.component.scss'],\n /* tslint:disable */\n host: { class: 'certificate-inner-dialog-panel' },\n /* tslint:enable */\n})\nexport class CertificateDialogComponent implements OnInit {\n url!: string\n navUrl = ''\n environment: any\n constructor(\n @Inject('environment') environment: any,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n public dialogRef: MatDialogRef<CertificateDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.environment = environment\n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n this.url = this.data.cet\n // tslint:disable-next-line:max-line-length\n this.navUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`\n }\n\n downloadCert() {\n this.raiseIntreactTelemetry('svg')\n const a: any = document.createElement('a')\n a.href = this.data.cet\n a.download = 'Certificate'\n document.body.appendChild(a)\n a.style = 'display: none'\n a.click()\n a.remove()\n }\n\n downloadCertPng() {\n this.raiseIntreactTelemetry('png')\n const uriData = this.data.cet\n const img = new Image()\n img.src = uriData\n img.width = 1820\n img.height = 1000\n img.onload = () => {\n const canvas = document.createElement('canvas');\n [canvas.width, canvas.height] = [img.width, img.height]\n const ctx = canvas.getContext('2d')\n if (ctx) {\n // ctx.imageSmoothingEnabled = true\n ctx.drawImage(img, 0, 0, img.width, img.height)\n const a = document.createElement('a')\n const quality = 1.0 // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality\n a.href = canvas.toDataURL('image/png', quality)\n a.download = 'Certificate'\n a.append(canvas)\n a.click()\n a.remove()\n }\n }\n }\n async downloadCertPdf() {\n this.raiseIntreactTelemetry('pdf')\n const uriData = this.data.cet\n const img = new Image()\n img.src = uriData\n img.width = 1820\n img.height = 1000\n img.onload = () => {\n const canvas = document.createElement('canvas');\n [canvas.width, canvas.height] = [img.width, img.height]\n const ctx = canvas.getContext('2d')\n if (ctx) {\n ctx.drawImage(img, 0, 0, img.width, img.height)\n const quality = 1.0 // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality\n const dataImg = canvas.toDataURL('application/pdf', quality)\n const pdf = new jsPDF('landscape', 'px', 'a4')\n\n // add the image to the PDF\n pdf.addImage(dataImg, 10, 20, 600, 350)\n\n // download the PDF\n pdf.save('Certificate.pdf')\n }\n }\n }\n\n shareCert() {\n this.raiseShareIntreactTelemetry('share')\n return window.open(this.navUrl, '_blank')\n }\n\n raiseShareIntreactTelemetry(type?: string, action?: string) {\n this.events.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n id: `${type}-${WsEvents.EnumInteractSubTypes.CERTIFICATE}`,\n subType: action && action,\n },\n {\n id: this.data.certId, // id of the certificate\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\n }\n )\n }\n\n raiseIntreactTelemetry(action?: string) {\n this.events.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n id: 'download-certificate',\n subType: action && action,\n },\n {\n id: this.data.certId, // id of the certificate\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\n }\n )\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatDialog, MatSnackBar } from '@angular/material'\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport { WidgetContentLibService } from '../../../_services/widget-content-lib.service';\nimport { ConfigurationsService, EventService, WsEvents } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { CertificateService } from '../../../_services/certificate.service';\nimport { CertificateDialogComponent } from '../../dialog-components/certificate-dialog/certificate-dialog.component';\n\n@Component({\n selector: 'sb-uic-card-progress-portrait-lib',\n templateUrl: './card-progress-portrait-lib.component.html',\n styleUrls: ['./card-progress-portrait-lib.component.scss']\n})\nexport class CardProgressPortraitLibComponent implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n @Input() cbPlanMapData: any\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n downloadCertificateLoading: boolean = false\n\n constructor(\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private events: EventService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentLibService,\n private certificateService: CertificateService,\n private dialog: MatDialog,\n ) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n // for telemetry\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\n }\n this.contSvc.changeTelemetryData(contentData)\n // for redirection\n this.contentData.emit(contentData)\n }\n\n translateLabels(label: string, type: any, subtype?: any) {\n return this.langtranslations.translateLabelWithoutspace(label, type, subtype)\n }\n raiseTelemetry() {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n downloadCertificate(certificateData: any) {\n this.events.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n id: 'view-certificate',\n subType: WsEvents.EnumInteractSubTypes.CERTIFICATE,\n },\n {\n id: certificateData.issuedCertificates[0].identifier, // id of the certificate\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\n })\n if(certificateData.issuedCertificates.length > 0) {\n this.downloadCertificateLoading = true\n let certData: any = certificateData.issuedCertificates[0]\n this.certificateService.downloadCertificate_v2(certData.identifier).subscribe((res: any)=>{\n this.downloadCertificateLoading = false\n const cet = res.result.printUri\n this.dialog.open(CertificateDialogComponent, {\n width: '1300px',\n data: { cet, certId: certData.identifier },\n })\n })\n } else {\n this.downloadCertificateLoading = false\n }\n }\n\n}\n","import { Component, HostBinding, Input, OnChanges } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-content-progress',\n templateUrl: './content-progress.component.html',\n styleUrls: ['./content-progress.component.scss'],\n /* tslint:disable */\n host: {\n // Sets the role for this component to \"progressbar\"\n role: 'progressbar',\n // Sets the minimum and maximum values for the progressbar role.\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n 'title': 'progres',\n // Binding that updates the current value of the progressbar.\n '[attr.aria-valuenow]': 'progress',\n },\n /* tslint:enable */\n})\nexport class ContentProgressComponent implements OnChanges {\n @Input()\n contentId = ''\n\n @Input()\n progress = 0\n\n @Input()\n progressType = ''\n\n @Input()\n forPreview = false\n\n @Input()\n className = ''\n @Input()\n customClassName: any = 'accent-progress'\n\n rendom = Math.random()\n @HostBinding('id')\n public id = `progress_${Math.random()}`\n constructor(\n // private progressSvc: ContentProgressService\n ) {\n if (this.contentId) {\n this.id = this.contentId\n }\n }\n\n ngOnChanges() {\n if (this.contentId && !this.progress && !this.forPreview) {\n // this.progressSvc.getProgressFor(this.contentId).subscribe(data => {\n // this.progress = data\n // if (this.progress) {\n // this.progress = Math.round(this.progress * 10000) / 100\n // }\n // })\n }\n\n if (this.progress) {\n if (this.progressType === 'percentage') {\n this.progress = this.progress\n } else {\n this.progress = Math.round(this.progress * 10000) / 100\n }\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { ContentProgressComponent } from './content-progress.component'\nimport { MatProgressBarModule, MatTooltipModule } from '@angular/material'\n\n@NgModule({\n declarations: [ContentProgressComponent],\n imports: [\n CommonModule,\n MatProgressBarModule,\n MatTooltipModule,\n ],\n exports: [ContentProgressComponent],\n})\nexport class ContentProgressModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CertificateDialogComponent } from './certificate-dialog/certificate-dialog.component';\nimport { MatCardModule, MatDialogModule, MatIconModule, MatMenuModule } from '@angular/material';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { HttpClient } from '@angular/common/http';\nimport { PipeSafeSanitizerModule } from '@sunbird-cb/utils-v2';\n\n\n\n@NgModule({\n declarations: [\n CertificateDialogComponent\n ],\n imports: [\n CommonModule,\n MatMenuModule,\n MatCardModule,\n MatIconModule,\n MatDialogModule,\n PipeSafeSanitizerModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports:[\n CertificateDialogComponent\n ],\n entryComponents: [CertificateDialogComponent],\n})\nexport class DialogComponentsModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\nimport { WidgetContentLibService } from '../../../_services/widget-content-lib.service';\nimport { Router } from '@angular/router';\n\n\n@Component({\n selector: 'sb-uic-card-mdo-channel-v1',\n templateUrl: './card-mdo-channel-v1.component.html',\n styleUrls: ['./card-mdo-channel-v1.component.scss']\n})\nexport class CardMdoChannelV1Component implements OnInit {\n @Input() widgetData!: NsContent.IContent;\n @Output() channelData = new EventEmitter<any>()\n @Output() emitTelemetry = new EventEmitter<any>()\n @Input() isCardLoading: boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentLibService,\n public router: Router) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n raiseTelemetry(contentData: any) {\n this.emitTelemetry.emit(contentData)\n if (this.widgetData) {\n contentData['typeOfTelemetry'] = 'mdo-channel'\n }\n this.contSvc.changeTelemetryData(contentData)\n }\n channelClick(channeldata:any) {\n this.channelData.emit(channeldata)\n }\n\n redirectTo(content: any) {\n this.router.navigate([`/app/learn/mdo-channels/${content.orgName}/${content.identifier}/micro-sites`])\n }\n\n}\n","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-avatar-photo',\n templateUrl: './avatar-photo-lib.component.html',\n styleUrls: ['./avatar-photo-lib.component.scss'],\n})\nexport class AvatarPhotoLibComponent implements OnInit, OnChanges {\n @Input() datalen: any\n\n @Input()\n public photoUrl!: string\n\n @Input()\n public name!: string\n @Input() public size = ''\n @Input() public defaulfColor = ''\n @Input() randomColor = false\n @Input() initials?: string\n @Input() showBadge = false\n public showInitials = false\n public circleColor!: string\n random = Math.random().toString(36).slice(2)\n\n // public initials!: string\n\n private colors = [\n '#EB7181', // red\n '#306933', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n ]\n\n private randomcolors = [\n '#EB7181', // red\n '#006400', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n ]\n\n ngOnInit() {\n if (!this.photoUrl) {\n this.showInitials = true\n if (!this.initials) {\n this.createInititals()\n }\n if (this.datalen === 1) {\n if(this.defaulfColor) {\n this.randomcolors = [\n this.defaulfColor\n ]\n } else {\n this.randomcolors = [\n '#006400', // green\n ]\n }\n }\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\n this.circleColor = this.colors[randomIndex]\n if (this.randomColor) {\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomcolors.length))\n this.circleColor = this.randomcolors[randomIndex1]\n }\n }\n\n }\n ngOnChanges(change: SimpleChanges) {\n if (change.name.currentValue !== change.name.previousValue && !change.name.firstChange) {\n this.createInititals()\n }\n }\n get userInitials() {\n return this.initials\n }\n private createInititals(): void {\n let initials = ''\n const array = `${this.name} `.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < this.name.length; i += 1) {\n if (this.name.charAt(i) === ' ') {\n continue\n }\n\n if (this.name.charAt(i) === this.name.charAt(i)) {\n initials += this.name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n this.initials = initials.toUpperCase()\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { RouterModule } from '@angular/router'\nimport { MatButtonModule, MatIconModule, MatMenuModule, MatRippleModule } from '@angular/material'\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2'\nimport { AvatarPhotoLibComponent } from './avatar-photo-lib.component'\n\n@NgModule({\n declarations: [AvatarPhotoLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatRippleModule,\n SbUiResolverModule,\n ],\n exports: [AvatarPhotoLibComponent],\n entryComponents: [AvatarPhotoLibComponent],\n})\nexport class AvatarPhotoLibModule { }\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule, MatCardModule, MatIconModule, MatProgressSpinnerModule, MatTooltipModule } from '@angular/material';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CardResourceComponent } from './card-resource/card-resource.component';\r\nimport { CardsComponent } from './cards.component';\r\nimport { CardPortraitComponent } from './card-portrait/card-portrait.component';\r\nimport { PipePublicURLModule } from '../../_pipes/pipe-public-URL/pipe-public-URL.module';\r\nimport { ObjectToArrayPipeModule } from '../../_pipes/object-to-array/object-to-array.pipe.module';\r\nimport { DisplayContentTypeLibModule } from '../display-content-type-lib/display-content-type-lib.module';\r\nimport { DefaultThumbnailModule } from '../../_directives/default-thumbnail/default-thumbnail.module';\r\nimport { PipeDurationTransformModule } from '../../_pipes/pipe-duration-transform/pipe-duration-transform.module';\r\nimport { CardUserComponent } from './card-user/card-user.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { CardLandscapeComponent } from './card-landscape/card-landscape.component';\r\nimport { CardWideComponent } from './card-wide/card-wide.component';\r\nimport { CardMDOChannelComponent } from './card-mdo-channel/card-mdo-channel.component';\r\nimport { CardWideV2Component } from './card-wide-v2/card-wide-v2.component';\r\nimport { CardKarmaProgramsComponent } from './card-karma-programs/card-karma-programs.component';\r\nimport { CardKarmaProgramsV2Component } from './card-karma-programs-v2/card-karma-programs-v2.component';\r\nimport { ProviderCardComponent } from './provider-card/provider-card.component';\r\nimport { CardPortraitExtComponent } from './card-portrait-ext/card-portrait-ext.component';\r\nimport { CardAssessmentComponent } from './card-assessment/card-assessment/card-assessment.component';\r\nimport { CardProgressPortraitLibComponent } from './card-progress-portrait-lib/card-progress-portrait-lib.component';\r\n// import { ContentProgressComponent } from './content-progress/content-progress.component';\r\nimport { ContentProgressModule } from './../content-progress/content-progress.module';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core'\r\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DialogComponentsModule } from '../dialog-components/dialog-components.module';\r\nimport { CardMdoChannelV1Component } from './card-mdo-channel-v1/card-mdo-channel-v1.component';\r\nimport { AvatarPhotoLibModule } from '../avatar-photo-lib/avatar-photo-lib.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CardResourceComponent,\r\n CardsComponent,CardPortraitComponent,\r\n CardUserComponent,\r\n CardLandscapeComponent,\r\n CardWideComponent,\r\n CardMDOChannelComponent,\r\n CardWideV2Component,\r\n CardKarmaProgramsComponent,\r\n CardKarmaProgramsV2Component,\r\n ProviderCardComponent,\r\n CardPortraitExtComponent,\r\n CardAssessmentComponent,\r\n CardProgressPortraitLibComponent,\r\n CardMdoChannelV1Component\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatCardModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n RouterModule,\r\n PipePublicURLModule,\r\n ObjectToArrayPipeModule,\r\n DisplayContentTypeLibModule,\r\n DefaultThumbnailModule,\r\n PipeDurationTransformModule,\r\n SkeletonLoaderLibModule,\r\n MatProgressSpinnerModule,\r\n ContentProgressModule,\r\n DialogComponentsModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient],\r\n },\r\n }),\r\n AvatarPhotoLibModule\r\n ],\r\n entryComponents:[CardsComponent],\r\n exports: [\r\n CardsComponent,\r\n CardResourceComponent,\r\n CardPortraitComponent, \r\n CardLandscapeComponent,\r\n CardUserComponent,\r\n CardWideComponent,\r\n CardMDOChannelComponent,\r\n CardWideV2Component,\r\n CardKarmaProgramsComponent,\r\n CardKarmaProgramsV2Component,\r\n CardPortraitExtComponent,\r\n ],\r\n})\r\nexport class CardsModule { }\r\n","import { NsWidgetResolver } from '@sunbird-cb/resolver-v2'\nimport { ROOT_WIDGET_CONFIG } from './consumption.config'\n// Components\nimport { CardsComponent } from './_common/cards/cards.component'\nimport { CardsModule } from './_common/cards/cards.module'\n\n\nexport const WIDGET_REGISTERED_LIB_MODULES = [\n CardsModule\n]\n\nexport const WIDGET_REGISTRATION_LIB_CONFIG: NsWidgetResolver.IRegistrationConfig[] = [\n {\n widgetType: ROOT_WIDGET_CONFIG.card._type,\n widgetSubType: ROOT_WIDGET_CONFIG.card.cardResource,\n component: CardsComponent,\n }\n]\n","import { NsWidgetResolver } from '@sunbird-cb/resolver-v2';\nimport { NSSearch } from '../../../_models/widget-search.model';\nimport { NsContent } from '../../../_models/widget-content.model';\nimport { NsCardContent } from '../../../_models/card-content.model';\n\nexport namespace NsContentStripWithFacets {\n export interface IContentStripMultiple {\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n loader?: boolean;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n strips: IContentStripUnit[];\n isChannelStrip?: boolean;\n }\n export interface IContentStripUnit {\n stripRequestFor?: string;\n onTabClickRequest?: boolean;\n hideViewMoreUrl?: boolean;\n type: string;\n disableTranslate?: any;\n key: string;\n title: string;\n customeClass?: string;\n nodataMsg?: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean,\n dotsAlign?: \"right\" | \"left\",\n arrowsPlacement?: \"bottom-right\" | \"bottom-center\" | \"bottom-left\" | \"middle-inline\",\n responsive?: {\n showNavs: boolean,\n showDots: boolean,\n dotsAlign?: \"right\" | \"left\",\n arrowsPlacement?: \"bottom-right\" | \"bottom-center\" | \"bottom-left\" | \"middle-inline\",\n };\n };\n tabs?: NsContentStripWithFacets.IContentStripTab[] | undefined;\n titleDescription?: string;\n name?: string;\n mode?: string |'accordion';\n info?: IStripInfo;\n logo?: string;\n preWidgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n postWidgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripConfig?: IStripConfig;\n canHideStrip?: boolean;\n showStrip: boolean;\n filters?: any[];\n selectAll?: boolean | null;\n request?: {\n requestBody: any\n playlistRead: any;\n playlistSearch?: any;\n ciosContent?:any;\n search?: NSSearch.ISearchRequest\n searchV6?: NSSearch.ISearchV6Request\n topContent?: any\n featureContent?: any\n bookmarkRead?: any\n enrollmentList?: any\n cbpList?: any,\n apiUrl: string\n searchRegionRecommendation?: NSSearch.ISearchOrgRegionRecommendationRequest\n api?: IStripRequestApi\n networkApi?: INetworkRequestApi\n ids?: string[]\n recommendedCourses?: any,\n masterCompetency?: any\n trendingSearch?: any\n };\n searchV6Type?: 'KB' | 'Collections' | 'searchQuery' | null;\n stripBackground?: string;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n loader?: boolean;\n loaderWidgets?: any;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n refreshEvent?: Record<'eventType' | 'from', string>;\n fetchLikes?: boolean;\n secondaryHeading?: any;\n viewMoreUrl?: {\n queryParams?: any\n viewMoreText: string\n path: string\n };\n data?: [];\n }\n\n export interface IStripRequestApi {\n path: string;\n queryParams?: {\n pageNo?: number\n pageSize?: number\n pageState?: string\n sourceFields?: string\n };\n }\n export interface INetworkRequestApi {\n path: string;\n data?: any;\n }\n export interface IStripInfo {\n mode: 'below' | 'popup' | 'modal';\n visibilityMode?: 'hidden' | 'visible';\n icon: {\n icon: string\n scale: number\n style?: any // added for UI\n };\n widget: NsWidgetResolver.IRenderConfigWithAnyData;\n }\n interface IStripConfig {\n // card subType key is used to determine the content Card display type\n cardSubType: NsCardContent.TCardSubType;\n // to show view more card for a search strip\n postCardForSearch?: boolean;\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n contentTags?: IContentTags;\n hideShowAll?: boolean;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField: string;\n }\n export interface IContentStripResponseApi {\n contents: NsContent.IContent[];\n hasMore?: boolean;\n pageState?: string;\n totalHits?: number;\n }\n\n export interface IContentStripTab {\n pillsData?: any;\n label: string;\n value: string;\n showTabDataCount: boolean;\n requestRequired?: boolean;\n computeDataOnClick?: boolean;\n computeDataOnClickKey?: string;\n request?: any;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n maxWidgets?: number;\n fetchTabStatus?: string;\n nodataMsg?: string;\n tabLoading?: boolean;\n facets?: any;\n }\n\n \n}\n\nexport enum ApiRequestFor {\n SEARCH= 'search'\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsContentStripWithFacets, ApiRequestFor } from './content-strip-facet-filter.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentLibService } from '../../../_services/widget-content-lib.service';\nimport { NsContent } from '../../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n WsEvents,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserServiceLib } from '../../../_services/widget-user-lib.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { NsCardContent } from '../../../_models/card-content-v2.model';\nimport { ITodayEvents } from '../../../_models/event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\nimport { FormBuilder } from '@angular/forms';\n\ninterface IStripUnitContentData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n hideViewMoreUrl?: boolean;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsContentStripWithFacets.IContentStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsContentStripWithFacets.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n request?: any\n \n}\n\n\n@Component({\n selector: 'sb-uic-content-strip-facet-filter',\n templateUrl: './content-strip-facet-filter.component.html',\n styleUrls: ['./content-strip-facet-filter.component.scss']\n})\nexport class ContentStripFacetFilterComponent extends WidgetBaseComponent\nimplements\nOnInit,\nOnDestroy,\nNsWidgetResolver.IWidgetData<NsContentStripWithFacets.IContentStripMultiple> {\n @Input() widgetData!: NsContentStripWithFacets.IContentStripMultiple;\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() viewAllResponse = new EventEmitter<any>()\n @Output() telemtryResponse = new EventEmitter<any>()\n @Input() providerId : any = ''\n @Input() emitViewAll : boolean = false\n @Input() channnelName: any = ''\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n facetForm: any\n constructor(\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentLibService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n public router: Router,\n private userSvc: WidgetUserServiceLib,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private _fb: FormBuilder\n ) {\n super();\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en');\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n this.environment = environment\n }\n ngOnDestroy(): void {\n \n }\n\n ngOnInit() {\n this.initData();\n this.contentSvc.telemetryData$.subscribe((data: any) => {\n this.telemtryResponse.emit(data)\n })\n this.facetForm = this._fb.group({\n org: ['0']\n })\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n if (this.checkForEmptyWidget(strip)) {\n this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n \n private fetchStripFromRequestData(\n strip: NsContentStripWithFacets.IContentStripUnit,\n calculateParentStatus = true,\n ) {\n // setting initial values\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\n this.processStrip(strip, [], 'fetching', false, null);\n if(strip && strip.stripRequestFor === ApiRequestFor.SEARCH && !strip.onTabClickRequest) {\n this.fetchFromSearch(strip, calculateParentStatus);\n }\n }\n\n private transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n private async processStrip(\n strip: NsContentStripWithFacets.IContentStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsContentStripWithFacets.IContentStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n hideViewMoreUrl:strip.hideViewMoreUrl || false,\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsContentStripWithFacets.IContentStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.requestBody && Object.keys(strip.request.requestBody).length))\n ) {\n return true;\n }\n return false;\n }\n // strip settings\n toggleInfo(data: IStripUnitContentData) {\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\n if (stripInfo) {\n if (stripInfo.mode !== 'below') {\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\n stripInfo.mode = 'below';\n }\n if (stripInfo.mode === 'below') {\n this.stripsResultDataMap[data.key].stripInfo = {\n ...stripInfo,\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\n };\n }\n }\n }\n\n raiseTelemetry(stripData: any){\n this.telemtryResponse.emit(stripData)\n }\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n // selected pills data\n getSelectedPillIndex(tabdata: any, tabIndex: any) {\n if(tabdata.pillsData && tabdata.pillsData.length) {\n let index = tabdata.pillsData.findIndex((pill: any) => {\n return pill.selected\n });\n return index\n }\n return 0\n }\n\n getdata(data: IStripUnitContentData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, pillIndex: any, stripMap: IStripUnitContentData, stripKey: string) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const data: WsEvents.ITelemetryTabData = {\n label: `${tabEvent.tab.textLabel}`,\n index: tabEvent.index,\n };\n this.eventSvc.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\n id: `${_.camelCase(data.label)}-tab`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n );\n\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index].pillsData[pillIndex];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.value,\n pillSelected: currentPillFromMap.value,\n };\n }\n\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\n if (currentPillFromMap.request.searchV6) {\n // this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, currentTabFromMap, true);\n }\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n this.resetFilter(stripMap, tabEvent.index ,pillIndex)\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabEvent.index].pillsData)\n stripMap.tabs[tabEvent.index].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n }\n }\n\n pillClicked(event: any, stripMap: IStripUnitContentData, stripKey: any, pillIndex: any, tabIndex: any) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex];\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex].pillsData[pillIndex];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.value,\n pillSelected: currentPillFromMap.value,\n };\n }\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentPillFromMap.request.searchV6) {\n // this.getTabDataByNewReqSearchV6(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\n } else if (currentPillFromMap.request.trendingSearch) {\n // this.getTabDataByNewReqTrending(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\n }\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n // stripMap.tabs[tabEvent.index].tabLoading = false;\n // }\n\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n this.resetFilter(stripMap, tabIndex ,pillIndex)\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n }\n }\n\n resetSelectedPill(pillData: any){\n if(pillData && pillData.length){\n pillData.forEach((pill: any) => {\n pill['selected'] = false\n });\n }\n }\n\n getTabDataByfilter(\n strip: NsContentStripWithFacets.IContentStripUnit,\n currentTab: NsContentStripWithFacets.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n // tslint:disable:no-console\n console.log('strip -- ', strip);\n // tslint:disable:no-console\n console.log('currentTab -- ', currentTab);\n // tslint:disable:no-console\n console.log('calculateParentStatus-- ', calculateParentStatus);\n // TODO: Write logic for individual filter if passed in config\n // add switch case based on config key passed\n }\n\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n // translate labes\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\n if(this.emitViewAll) {\n this.viewAllResponse.emit(stripData)\n } else {\n this.router.navigate([path], { queryParams: queryParamsData })\n }\n }\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n getContineuLearningLenth(data: IStripUnitContentData) {\n return data.widgets ? data.widgets.length : 0;\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n checkCondition(wData: NsContentStripWithFacets.IContentStripMultiple, data: IStripUnitContentData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitContentData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n return returnValue;\n }\n\n getLength(data: IStripUnitContentData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n let tabWithMaxWidgets: any = {}\n data.tabs.forEach((tab: any)=>{\n if(tab.pillsData && tab.pillsData.length){\n tabWithMaxWidgets = tab.pillsData.reduce(\n (prev: any, current: any) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n\n }\n })\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n isStripShowing(data: any) {\n let count = 0;\n \n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n // console.log('data.key', data, data.key, data.widgets);\n return data.showStrip;\n }\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n\n\n // search api with facets\n async postRequestMethod(strip: NsContentStripWithFacets.IContentStripUnit,\n request: NsContentStripWithFacets.IContentStripUnit['request'],\n apiUrl: string,\n calculateParentStatus: boolean\n ): Promise<any> {\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.postApiMethod(apiUrl, request).subscribe(results => {\n if (results.result && results.result.content) {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f: {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n }\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n async fetchFromSearch(strip: NsContentStripWithFacets.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && Object.keys(strip.request.requestBody).length) {\n try {\n const response = await this.postRequestMethod(strip, strip.request.requestBody, strip.request.apiUrl, calculateParentStatus);\n let tabIndex=0\n let pillIndex= 0\n if (response.results && response.results.result) {\n this.mapAllDataWithFacets(strip, response.results.result.content, response.results.result.facets, calculateParentStatus)\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n // if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n // const allTabs = this.stripsResultDataMap[strip.key].tabs;\n // const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\n // this.resetSelectedPill(allPills)\n // if (allTabs && allTabs.length && allTabs[tabIndex]) {\n // if(allPills && allPills.length && allPills[pillIndex]){\n // allPills[pillIndex] = {\n // ...allPills[pillIndex],\n // widgets,\n // fetchTabStatus: 'done',\n // selected: true\n // };\n // }\n // allTabs[tabIndex] = {\n // ...allTabs[tabIndex],\n // widgets,\n // fetchTabStatus: 'done',\n // };\n // tabResults = allTabs;\n // }\n // }\n // this.processStrip(\n // strip,\n // widgets,\n // 'done',\n // calculateParentStatus,\n // response.viewMoreUrl,\n // tabResults // tabResults as widgets\n // );\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n \n }\n }\n\n mapAllDataWithFacets(strip :any, content : any, facets:any, calculateParentStatus: any) {\n console.log(strip, content)\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n let facet: any = []\n allTabs.forEach((ele: any)=> {\n ele['fetchTabStatus']= 'done'\n let filteredData = content.filter((contEle: any) => contEle.nlwUserExp.includes(ele.value))\n // filteredData.forEach(element => {\n // facet = [...facet,..._.difference(element.nlwOrgs ,facet)];\n // });\n ele['widgets'] = filteredData\n ele.pillsData.forEach((pill: any) => {\n if(pill.value === 'all') {\n pill['widgets'] = this.transformContentsToWidgets(filteredData, strip);\n pill['fetchTabStatus']= 'done'\n } else if(pill.value === 'course') {\n let contentFilteredData = filteredData.filter((contEle: any) => contEle.courseCategory.toLowerCase() === pill.value)\n pill['widgets'] = this.transformContentsToWidgets(contentFilteredData, strip);\n pill['fetchTabStatus']= 'done'\n } else {\n let contentFilteredData = filteredData.filter((contEle: any) => contEle.courseCategory.toLowerCase() !== 'course')\n pill['widgets'] = this.transformContentsToWidgets(contentFilteredData, strip);\n pill['fetchTabStatus']= 'done'\n }\n })\n\n // ele['facets'] = [{\n // name:'nlwOrgs',\n // values: facet\n // }]\n ele['facets'] = facets\n })\n strip.tabs[0].pillsData[0].fetchTabStatus = 'done';\n strip.tabs[0].pillsData[0].tabLoading = false;\n strip.showOnLoader = false;\n this.resetSelectedPill(strip.tabs[0].pillsData)\n strip.tabs[0].pillsData[0]['selected']=true\n this.processStrip(\n strip,\n [],\n 'done',\n calculateParentStatus,\n strip.viewMoreUrl,\n allTabs // tabResults as widgets\n );\n }\n\n private transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithFacets.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n getorgData(eventData: any, stripMap: any, tabIndex: any) {\n console.log(eventData)\n let selectedValue = eventData.target.value\n let pillIndex: any = this.getSelectedPillIndex(stripMap.tabs[tabIndex], tabIndex)\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n let returnedValues = stripMap.tabs[tabIndex].widgets.filter((ele: any) => {\n var words = ele.nlwOrgs.map(v => v.toLowerCase());\n return words.includes(selectedValue)\n })\n stripMap.tabs[tabIndex].pillsData[pillIndex]['widgets'] = this.transformContentsToWidgets(returnedValues, stripMap);\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n\n resetFilter(stripMap: any, tabIndex: any, pillIndex: any) {\n // let selectedValue = eventData.target.value\n if(pillIndex) {\n pillIndex = this.getSelectedPillIndex(stripMap.tabs[tabIndex], tabIndex)\n }\n this.facetForm.reset({\n org: 0\n });\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n // let returnedValues = stripMap.tabs[tabIndex].widgets.filter((ele: any) => {\n // var words = ele.nlwOrgs.map(v => v.toLowerCase());\n // return words.includes(selectedValue)\n // })\n let contentData: any = stripMap.tabs[tabIndex].widgets || []\n stripMap.tabs[tabIndex].pillsData[pillIndex]['widgets'] = this.transformContentsToWidgets(contentData, stripMap);\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsContentStripWithTabsAndPills } from './content-strip-with-tabs-pills.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentLibService } from '../../../_services/widget-content-lib.service';\nimport { NsContent } from '../../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n WsEvents,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserServiceLib } from '../../../_services/widget-user-lib.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { NsCardContent } from '../../../_models/card-content-v2.model';\nimport { ITodayEvents } from '../../../_models/event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\n\ninterface IStripUnitContentData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsContentStripWithTabsAndPills.IContentStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsContentStripWithTabsAndPills.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n request?: any\n \n}\n\n\n@Component({\n selector: 'sb-uic-content-strip-with-tabs-pills',\n templateUrl: './content-strip-with-tabs-pills.component.html',\n styleUrls: ['./content-strip-with-tabs-pills.component.scss']\n})\nexport class ContentStripWithTabsPillsComponent extends WidgetBaseComponent\nimplements\nOnInit,\nOnDestroy,\nNsWidgetResolver.IWidgetData<NsContentStripWithTabsAndPills.IContentStripMultiple> {\n @Input() widgetData!: NsContentStripWithTabsAndPills.IContentStripMultiple;\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() viewAllResponse = new EventEmitter<any>()\n @Output() telemtryResponse = new EventEmitter<any>()\n @Input() providerId : any = ''\n @Input() emitViewAll : boolean = false\n @Input() channnelName: any = ''\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n\n constructor(\n // private contentStripSvc: ContentStripNewMultipleService,\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentLibService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n public router: Router,\n private userSvc: WidgetUserServiceLib,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService\n ) {\n super();\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en');\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n this.environment = environment\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n this.contentSvc.telemetryData$.subscribe((data: any) => {\n this.telemtryResponse.emit(data)\n })\n\n \n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n if (this.checkForEmptyWidget(strip)) {\n this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n \n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n // console.log('data.key', data, data.key, data.widgets);\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitContentData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsContentStripWithTabsAndPills.IContentStripMultiple, data: IStripUnitContentData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitContentData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitContentData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitContentData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n let tabWithMaxWidgets: any = {}\n data.tabs.forEach((tab: any)=>{\n if(tab.pillsData && tab.pillsData.length){\n tabWithMaxWidgets = tab.pillsData.reduce(\n (prev: any, current: any) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n\n }\n })\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n\n private getFiltersFromArray(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n private transformSearchV6FiltersV2(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n checkForDateFilters(filters: any) {\n let userData: any;\n if (this.configSvc.userProfile) {\n userData = this.configSvc.userProfile;\n }\n\n if (filters && filters.hasOwnProperty('batches.endDate')) {\n // tslint:disable-next-line\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\n // tslint:disable-next-line\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\n } else if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n if(this.providerId) {\n filters.organisation = this.providerId;\n } else {\n filters.organisation = userData && userData.rootOrgId;\n\n if (filters && filters.hasOwnProperty('designation')) {\n filters.designation = userData.professionalDetails.length > 0 ?\n userData.professionalDetails[0].designation : '';\n }\n }\n \n }\n return filters;\n }\n\n private fetchStripFromRequestData(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n calculateParentStatus = true,\n ) {\n // setting initial values\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\n this.processStrip(strip, [], 'fetching', false, null);\n this.fetchFromSearchV6(strip, calculateParentStatus);\n this.fetchForYouData(strip, calculateParentStatus)\n this.fetchAllCbpPlans(strip, calculateParentStatus);\n \n // this.enrollInterval = setInterval(() => {\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\n // }, 1000)\n }\n\n toggleInfo(data: IStripUnitContentData) {\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\n if (stripInfo) {\n if (stripInfo.mode !== 'below') {\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\n stripInfo.mode = 'below';\n }\n if (stripInfo.mode === 'below') {\n this.stripsResultDataMap[data.key].stripInfo = {\n ...stripInfo,\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\n };\n }\n }\n }\n\n private transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n private transformEventsToWidgets(\n contents: ITodayEvents[],\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n ) {\n this.eventSvc.setEventListData(contents);\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n private transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n private async processStrip(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsContentStripWithTabsAndPills.IContentStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsContentStripWithTabsAndPills.IContentStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip && strip.tabs.length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n\n getTabDataByfilter(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n // tslint:disable:no-console\n console.log('strip -- ', strip);\n // tslint:disable:no-console\n console.log('currentTab -- ', currentTab);\n // tslint:disable:no-console\n console.log('calculateParentStatus-- ', calculateParentStatus);\n // TODO: Write logic for individual filter if passed in config\n // add switch case based on config key passed\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n return returnValue;\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n raiseTelemetry(stripData: any){\n this.telemtryResponse.emit(stripData)\n }\n\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\n if(this.emitViewAll) {\n this.viewAllResponse.emit(stripData)\n } else {\n this.router.navigate([path], { queryParams: queryParamsData })\n }\n }\n\n // new code writting from here====new====\n\n fetchForYouData(strip: NsContentStripWithTabsAndPills.IContentStripUnit, calculateParentStatus = true) {\n if (strip && strip.type === 'forYou') {\n if (strip.tabs && strip.tabs.length) {\n const firstTab = strip.tabs[0];\n const pillData = firstTab.pillsData[0]\n if (pillData.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allPills = this.stripsResultDataMap[strip.key].tabs[0].pillsData;\n const currenPillsFromMap = (allPills && allPills.length && allPills[0]) as NsContentStripWithTabsAndPills.IContentStripTab;\n this.getTabDataByNewReqTrending(strip, 0, 0, currenPillsFromMap, calculateParentStatus);\n if (this.stripsResultDataMap[strip.key] && currenPillsFromMap) {\n this.stripsResultDataMap[strip.key].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[strip.key].viewMoreUrl.queryParams,\n key:strip.key,\n tabSelected: firstTab.value,\n pillSelected: pillData.value,\n };\n }\n }\n }\n \n }\n }\n }\n\n async fetchFromSearchV6(strip: NsContentStripWithTabsAndPills.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n if (strip.request &&\n strip.request.searchV6 &&\n strip.request.searchV6.request &&\n strip.request.searchV6.request.filters) {\n originalFilters = strip.request.searchV6.request.filters;\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\n strip.request.searchV6.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabsAndPills.IContentStripTab;\n\n this.getTabDataByNewReqSearchV6(strip, 0, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content) {\n \n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n \n \n } else if (response.results.result.Event) {\n this.processStrip(\n strip,\n this.transformEventsToWidgets(response.results.result.Event, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n async getTabDataByNewReqTrending(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n tabIndex: number,\n pillIndex: number,\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\n let tabResults: any[] = [];\n if (response && response.results && response.results.response) {\n const content = response.results.response[currentTab.value] || [];\n const widgets = this.transformContentsToWidgets(content, strip);\n \n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\n this.resetSelectedPill(allPills)\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n if(allPills && allPills.length && allPills[pillIndex]){\n allPills[pillIndex] = {\n ...allPills[pillIndex],\n widgets,\n fetchTabStatus: 'done',\n selected: true\n };\n }\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\n this.resetSelectedPill(allPills)\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n if(allPills && allPills.length && allPills[pillIndex]){\n allPills[pillIndex] = {\n ...allPills[pillIndex],\n widgets:[],\n fetchTabStatus: 'done',\n selected: true\n };\n }\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets:[],\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n\n async getTabDataByNewReqSearchV6(\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n tabIndex: number,\n pillIndex: number,\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\n if (response && response.results) {\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\n this.resetSelectedPill(allPills)\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n if(allPills && allPills.length && allPills[pillIndex]){\n allPills[pillIndex] = {\n ...allPills[pillIndex],\n widgets,\n fetchTabStatus: 'done',\n selected: true\n };\n }\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async trendingSearchRequest(strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n request: NsContentStripWithTabsAndPills.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.trendingSearch) {\n // check for the request if it has dynamic values]\n if (request.trendingSearch.request.filters.organisation &&\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\n ) {\n let userRootOrgId;\n if (this.configSvc.userProfile) {\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\n }\n request.trendingSearch.request.filters.organisation = userRootOrgId;\n }\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\n const showViewMore = Boolean(\n results.result &&\n strip.request &&\n results.result[strip.request.trendingSearch.responseKey] &&\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\n strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.trendingSearch &&\n request.trendingSearch.request &&\n request.trendingSearch.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n\n let proccesedResult: any = []\n if (results && results.response && results.response.certifications) {\n results.response.certifications.map((result: any) => {\n if (result.source === this.channnelName) {\n proccesedResult.push(result)\n }\n })\n results = {response: {certifications: proccesedResult}}\n }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n if (error.error && error.error.status === 400) {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\n reject(error);\n },);\n }\n });\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, pillIndex: any, stripMap: IStripUnitContentData, stripKey: string) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const data: WsEvents.ITelemetryTabData = {\n label: `${tabEvent.tab.textLabel}`,\n index: tabEvent.index,\n };\n this.eventSvc.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\n id: `${_.camelCase(data.label)}-tab`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n );\n\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index].pillsData[pillIndex];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.value,\n pillSelected: currentPillFromMap.value,\n };\n }\n\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentPillFromMap.request.searchV6) {\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, 0, currentPillFromMap, true);\n } else if (currentPillFromMap.request.trendingSearch) {\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, 0, currentPillFromMap, true);\n }\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n // stripMap.tabs[tabEvent.index].tabLoading = false;\n // }\n\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\n } else {\n // this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n // setTimeout(() => {\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n // stripMap.tabs[tabEvent.index].tabLoading = false;\n // stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\n // stripMap.showOnLoader = false;\n // }\n // }, 200);\n }\n }\n }\n\n pillClicked(event: any, stripMap: IStripUnitContentData, stripKey: any, pillIndex: any, tabIndex: any) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex];\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex].pillsData[pillIndex];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.value,\n pillSelected: currentPillFromMap.value,\n };\n }\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentPillFromMap.request.searchV6) {\n this.getTabDataByNewReqSearchV6(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\n } else if (currentPillFromMap.request.trendingSearch) {\n this.getTabDataByNewReqTrending(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\n }\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n // stripMap.tabs[tabEvent.index].tabLoading = false;\n // }\n\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = true;\n }\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\n stripMap.showOnLoader = false;\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\n }\n }, 200);\n }\n }\n }\n\n async searchV6Request(strip: NsContentStripWithTabsAndPills.IContentStripUnit,\n request: NsContentStripWithTabsAndPills.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.searchV6) {\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.searchV6 &&\n request.searchV6.request &&\n request.searchV6.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\n // }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n\n getSelectedPillIndex(tabdata: any, tabIndex: any) {\n if(tabdata.pillsData && tabdata.pillsData.length) {\n let index = tabdata.pillsData.findIndex((pill: any) => {\n return pill.selected\n });\n return index\n }\n return 0\n }\n\n\n\n\n\n // cbp plans\n\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\n\n let courses: NsContent.IContent[];\n let tabResults: any[] = [];\n let userId = this.configSvc.userProfile.userId\n const response = await this.userSvc.fetchCbpPlanList(userId).toPromise();\n if (response) {\n courses = response;\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitCbpTabsData(courses, strip);\n let countOfWidget = true\n if(strip && strip.tabs && strip.tabs.length) {\n strip.tabs.forEach((tab:any)=> {\n if(tab.pillsData && tab.pillsData.length) {\n tab.pillsData.forEach((pill: any) => {\n if(pill && pill.widgets && pill.widgets.length){\n if(countOfWidget){\n pill.selected = true\n countOfWidget= false\n }\n }\n });\n }\n })\n }\n await this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n '',\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n 'viewMoreUrl',\n );\n }\n }\n clearInterval(this.enrollInterval);\n }\n }\n\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabsAndPills.IContentStripUnit) {\n let tabResults: any[] = [];\n const splitData = this.getTabsList(\n contentNew,\n strip,\n );\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if( strip.tabs[i].value === \"myIgotPlans\") {\n let checkWidgetAndActivePill = true\n if (strip.tabs[i].pillsData && strip.tabs[i].pillsData.length) {\n for (let j = 0; j < strip.tabs[i].pillsData.length; j += 1) {\n // if(j === 0 ){\n // if(strip.tabs[i].pillsData[j].widgets && strip.tabs[i].pillsData[j].widgets.length ) {\n // strip.tabs[i].pillsData[j].selected = true\n // checkWidgetAndActivePill = false\n // }\n // strip.tabs[i].pillsData[j].selected = true\n // }\n if (strip.tabs[i].pillsData[j]) {\n tabResults.push(\n {\n ...strip.tabs[i].pillsData[j],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs[i].pillsData&& strip.tabs[i].pillsData[j] && itmInner.value === strip.tabs[i].pillsData[j].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n strip.tabs[i].pillsData = tabResults\n }\n }\n }\n }\n \n return strip.tabs;\n }\n\n getTabsList(array: NsContent.IContent[],\n strip: NsContentStripWithTabsAndPills.IContentStripUnit) {\n let all: any[] = [];\n let upcoming: any[] = [];\n let overdue: any[] = [];\n array.forEach((e: any) => {\n all.push(e);\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n overdue.push(e);\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\n upcoming.push(e);\n }\n });\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\n\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\n\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\n\n overdue = overdue.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n\n overdue = overdue.sort((a: any, b: any): any => {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n });\n\n upcoming = upcoming.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n \n return [\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\n { value: 'completed', widgets: this.transformContentsToWidgets(allCompleted, strip) },\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\n }\n resetSelectedPill(pillData: any){\n if(pillData && pillData.length){\n pillData.forEach((pill: any) => {\n pill['selected'] = false\n });\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HorizontalScrollerV2Module } from '../../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { ContentStripWithTabsPillsComponent } from './content-strip-with-tabs-pills.component';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\n\n// tslint:disable-next-line:function-name\nexport function HttpLoaderFactory1(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n declarations: [ContentStripWithTabsPillsComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory1,\n deps: [HttpClient],\n },\n }),\n ],\n entryComponents: [ContentStripWithTabsPillsComponent],\n exports: [ContentStripWithTabsPillsComponent],\n})\nexport class ContentStripWithTabsPillsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HorizontalScrollerV2Module } from '../../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { ContentStripFacetFilterComponent } from './content-strip-facet-filter.component';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\nimport { HttpLoaderFactory1 } from '../content-strip-with-tabs-pills/content-strip-with-tabs-pills.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n\n@NgModule({\n declarations: [ContentStripFacetFilterComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n ReactiveFormsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory1,\n deps: [HttpClient],\n },\n }),\n ],\n entryComponents: [ContentStripFacetFilterComponent],\n exports: [ContentStripFacetFilterComponent],\n})\nexport class ContentStripFacetFilterModule { }\n","import { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { Observable } from 'rxjs'\n\nconst API_POINTS = {\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\n COMPETENCY_LIST_V2: `apis/proxies/v8/searchBy/v2/competency`,\n CERTIFICATE_URL: `apis/protected/v8/cohorts/course/batch/cert/download/`,\n}\n\n@Injectable({ providedIn: 'root' })\n\nexport class CompetencyPassbookService {\n // tslint: disable-next-line: whitespace\n constructor(private http: HttpClient) { }\n getCompetencyList(payload: any): Observable<any> {\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\n }\n getCompetencyListv_V2(): Observable<any> {\n return this.http.get(API_POINTS.COMPETENCY_LIST_V2)\n }\n\n fetchCertificate(certId: string): Observable<any> {\n return this.http.get(API_POINTS.CERTIFICATE_URL + certId)\n }\n}\n","\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport { WidgetContentLibService } from '../../_services/widget-content-lib.service';\nimport { CompetencyPassbookService } from './competency-passbook.service';\nimport { Router } from '@angular/router';\nimport { NsCompentency } from '../../_models/compentencies.model'\n\n@Component({\n selector: 'sb-uic-competency-passbook',\n templateUrl: './competency-passbook.component.html',\n styleUrls: ['./competency-passbook.component.scss']\n})\nexport class CompetencyPassbookComponent implements OnInit {\n\n @Input() objectData: any\n @Input() providerId: any\n @Input() cardDisplayCount: any = 3\n @Input() dynamicClass: any\n @Input() dynamicColor: any\n @Input() dynamicAlignPills: any = 'center'\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() temeletryResponse = new EventEmitter<any>()\n loadCometency: boolean = false\n loadCompetencyArea: boolean = false\n originalCompetencyArray: any\n competencyArea: any []\n selectedValue: any;\n competencyVersion:string = ''\n competencyTheme: any = []\n allcompetencyTheme: any ={}\n competencyStrength: any = 0\n competencyThemeLength: any = 6\n showAllTheme : any = [{name:'Show all', showAll: false}]\n environment!: any;\n comeptencyKeys: NsCompentency.CompentencyKeys;\n // subTheme = ['Behavioural']\n // currentFilter = 'Behavioural'\n // currentCompetencies: any = []\n // competencyData: any\n constructor(public configSvc: ConfigurationsService,\n public contentSvc:WidgetContentLibService,\n public competencySvc: CompetencyPassbookService,\n public router : Router,\n @Inject('environment') environment: any,\n ) { \n this.environment = environment\n }\n\n \n ngOnInit() {\n this.comeptencyKeys = this.configSvc.compentency[this.environment.compentencyVersionKey]\n \n this.getAllCompetencies()\n // this.competencyData = this.objectData\n // this.filter(this.currentFilter)\n }\n // filter(filterValue: string) {\n // this.currentFilter = filterValue\n // this.currentCompetencies = this.competencyData.data.filter((item: any) => item.type === filterValue)\n // }\n showMore() {\n this.objectData.viewMore = !this.objectData.viewMore\n }\n\n // to get competency area from facets\n async getCompetencyArea(){\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"createdFor\": [\n this.providerId\n ],\n }\n }\n this.loadCompetencyArea = true\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addfilter,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n this.competencyStrength = 0\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n response.results.result.facets.forEach((fact: any) => {\n\n if(fact.name === `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`) {\n this.competencyArea = fact.values\n }\n });\n this.selectedValue = this.competencyArea[0].name.toLowerCase()\n this.competencyArea.forEach(async (area: any, indexValue: any)=> {\n let addFilter = {\n \"createdFor\": [\n this.providerId\n ]\n }\n let data = await this.getcompetencyThemeCount(area, addFilter)\n area['themeData'] = data\n area['count'] = data.length\n\n this.competencyStrength = this.competencyStrength + data.length\n if(indexValue === 0) {\n \n this.getThemeDataByArea(area)\n }\n })\n this.loadCompetencyArea = false\n }\n }\n } catch (error) {\n this.loadCompetencyArea = false\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async callCompetencySearch(request){\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.searchV6(request).subscribe(results => {\n resolve({ results });\n },(error: any) => {\n reject(error);\n },\n );\n }\n });\n }\n\n // competency theam change\n competencyChange(e){\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"createdFor\": [\n this.providerId\n ],\n }\n }\n\n this.temeletryResponse.emit(e.name)\n \n this.getThemeDataByArea(e)\n this.selectedValue = e.name\n }\n getAllCompetencies(){\n this.loadCometency = true\n this.competencySvc.getCompetencyListv_V2().subscribe((response: any) => {\n this.allcompetencyTheme = {}\n if(response && response.result && response.result.content) {\n this.originalCompetencyArray = response.result.content\n this.getCompetencyArea()\n response.result.content.forEach(element => {\n element.children.forEach((childEle) => {\n let name = childEle.name.toLowerCase()\n this.allcompetencyTheme[name] = childEle\n this.allcompetencyTheme[name]['viewMore'] = false\n });\n });\n }\n this.loadCometency = false\n })\n }\n\n async getcompetencyTheme(value: any,addFilter?: any) {\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addFilter,\n [`${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`] : value,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyTheme}`\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n this.loadCometency = true\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n let competencyThemeData : any = response.results.result.facets[0].values \n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === value) {\n this.competencyTheme = competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n this.resetViewMore()\n }\n this.loadCometency = false\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n getThemeDataByArea(areaData: any){\n let competencyThemeData : any = areaData.themeData\n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === areaData.name) {\n this.competencyTheme = competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"createdFor\": [\n this.providerId\n ],\n }\n }\n this.getcompetencySubTheme(areaData,addfilter)\n }\n\n async getcompetencyThemeCount(area: any,addFilter?: any) {\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addFilter,\n [`${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`] : area.name,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyTheme}`\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n let returnedData : any = \n this.loadCometency = true\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n let competencyThemeData : any = response.results.result.facets[0].values \n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === area.name) {\n returnedData = competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n }\n this.loadCometency = false\n return returnedData\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n resetViewMore(){\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\n this.allcompetencyTheme[comp]['viewMore'] = false\n })\n }\n viewMoreChildren(data: any) {\n data.viewMore = !data.viewMore\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\n }\n displayAllTheme(event: any) {\n this.showAllTheme[0]['showAll'] = !event.showAll \n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\n this.temeletryResponse.emit(event.name)\n }\n\n navigateToCompetency(compData: any){\n this.router.navigateByUrl(`/app/learn/browse-by/competency/${compData.name}`)\n }\n\n\n async getcompetencySubTheme(compArea: any,addFilter?: any) {\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addFilter,\n [`${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`] : compArea.name,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencySubTheme}`\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n this.loadCometency = true\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n let competencySubThemeData : any = response.results.result.facets[0].values \n this.competencyArea.forEach((areaEle: any) => {\n if(areaEle.name === compArea.name) {\n areaEle.themeData.forEach((themeEle) => {\n if(this.allcompetencyTheme[themeEle.name.toLowerCase()] &&\n this.allcompetencyTheme[themeEle.name.toLowerCase()].children && \n this.allcompetencyTheme[themeEle.name.toLowerCase()].children.length) {\n let data = this.allcompetencyTheme[themeEle.name.toLowerCase()].children.filter(obj1 => \n competencySubThemeData.some(obj2 => \n Object.keys(obj1).every(key => obj1['name'] === (obj2['name']))\n )\n );\n \n this.allcompetencyTheme[themeEle.name.toLowerCase()]['children'] = data\n }\n });\n }\n })\n }\n\n this.loadCometency = false\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-pills',\n templateUrl: './pills.component.html',\n styleUrls: ['./pills.component.scss']\n})\nexport class PillsComponent implements OnInit {\n\n @Input() pillsData: any\n @Input() selectedValue: any\n @Input() isLoading: boolean = false\n @Output() pillClick = new EventEmitter<any>()\n @Input() dynamicClass: any = ''\n @Input() dynamicColor: any = ''\n @Input() requiredTitlecase: boolean = true\n\n constructor() { }\n\n ngOnInit() {\n }\n selectedPill(pillData: any) {\n this.pillClick.emit(pillData)\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule } from '@angular/material';\nimport { PillsComponent } from './pills.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [PillsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule\n ],\n exports: [PillsComponent]\n})\nexport class PillsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CompetencyPassbookComponent } from './competency-passbook.component';\nimport { MatIconModule } from '@angular/material';\nimport { PillsModule } from './../pills/pills.module';\nimport { CompetencyPassbookService } from './competency-passbook.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [CompetencyPassbookComponent],\n imports: [\n CommonModule,\n MatIconModule,\n PillsModule,\n SkeletonLoaderLibModule\n ],\n exports: [CompetencyPassbookComponent],\n providers:[CompetencyPassbookService]\n})\nexport class CompetencyPassbookModule { }\n","import { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { Observable } from 'rxjs'\n\nconst API_POINTS = {\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\n competency_URL: `apis/proxies/v8/v1/search/competenciesByOrg/`,\n COMPETENCY_LIST_V2: `apis/proxies/v8/searchBy/v2/competency`,\n}\n\n@Injectable({ providedIn: 'root' })\n\nexport class CompetencyPassbookMdoService {\n // tslint: disable-next-line: whitespace\n constructor(private http: HttpClient) { }\n getCompetencyList(payload: any): Observable<any> {\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\n }\n getCompetencyListv_V2(): Observable<any> {\n return this.http.get(API_POINTS.COMPETENCY_LIST_V2)\n }\n mdoCompetency(providerId: string): Observable<any> {\n return this.http.get(API_POINTS.competency_URL + providerId)\n }\n}\n","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport { WidgetContentLibService } from '../../_services/widget-content-lib.service';\nimport { CompetencyPassbookMdoService } from './competency-passbook-mdo.service';\nimport { Router } from '@angular/router';\nimport { NsCompentency } from '../../_models/compentencies.model';\n@Component({\n selector: 'sb-uic-competency-passbook-mdo',\n templateUrl: './competency-passbook-mdo.component.html',\n styleUrls: ['./competency-passbook-mdo.component.scss']\n})\nexport class CompetencyPassbookMdoComponent implements OnInit {\n\n @Input() objectData: any\n @Input() providerId: any\n @Input() cardDisplayCount: any = 3\n @Input() dynamicClass: any\n @Input() dynamicColor: any\n @Input() dynamicAlignPills: any = 'center'\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() temeletryResponse = new EventEmitter<any>()\n loadCometency: boolean = false\n loadCompetencyArea: boolean = false\n originalCompetencyArray: any\n competencyArea: any []\n selectedValue: any = 'functional';\n competencyVersion:string = ''\n competencyThemeData: any\n competencyTheme: any = []\n allcompetencyTheme: any ={}\n competencyStrength: any = 0\n competencyThemeLength: any = 6\n showAllTheme : any = [{name:'Show all', showAll: false}]\n\n environment!: any;\n comeptencyKeys: NsCompentency.CompentencyKeys;\n \n // subTheme = ['Behavioural']\n // currentFilter = 'Behavioural'\n // currentCompetencies: any = []\n // competencyData: any\n constructor(public configSvc: ConfigurationsService,\n public contentSvc:WidgetContentLibService,\n public competencySvc: CompetencyPassbookMdoService,\n public router : Router,\n @Inject('environment') environment: any,\n\n ) {\n this.environment = environment\n }\n\n \n ngOnInit() {\n this.comeptencyKeys = this.configSvc.compentency[this.environment.compentencyVersionKey]\n \n this.getAllCompetencies()\n }\n\n\n getAllCompetencies(){\n this.loadCometency = true\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\n this.competencySvc.getCompetencyListv_V2().subscribe((response: any) => {\n this.allcompetencyTheme = {}\n if(response && response.result && response.result.content) {\n this.originalCompetencyArray = response.result.content\n this.getMdoCompetencies()\n // this.getCompetencyArea()\n response.result.content.forEach(element => {\n element.children.forEach((childEle) => {\n let name = childEle.name.toLowerCase()\n this.allcompetencyTheme[name] = childEle\n this.allcompetencyTheme[name]['viewMore'] = false\n });\n });\n }\n this.loadCometency = false\n })\n }\n \n\n\n async getMdoCompetencies(){\n try {\n this.loadCometency = true\n const response = await this.getMdoCompetency();\n if (response && response.results) {\n if(response.results.result.facets && response.results.result.facets.length){\n let facetData = response.results.result.facets\n facetData.forEach((facet: any) => {\n if(facet.name === `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyArea}`) {\n this.competencyArea = facet.values\n this.selectedValue = facet.values[0].name\n } else if(facet.name === `${this.environment.compentencyVersionKey}.${this.comeptencyKeys.vCompetencyTheme}`) {\n this.competencyThemeData = facet.values\n this.getCompetencyTheme()\n }\n });\n\n } else {\n this.emptyResponse.emit(true)\n }\n this.loadCometency = false\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n this.emptyResponse.emit(true)\n }\n }\n\n getCompetencyTheme(){\n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === this.selectedValue) {\n this.competencyTheme = this.competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n } else if('Behavioral'.toLowerCase() === this.selectedValue) {\n this.competencyTheme = this.competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n this.resetViewMore()\n }\n\n\n async getMdoCompetency(){\n return new Promise<any>((resolve, reject) => {\n if (this.providerId) {\n this.competencySvc.mdoCompetency(this.providerId).subscribe(results => {\n resolve({ results });\n },(error: any) => {\n reject(error);\n },\n );\n }\n });\n }\n\n // competency theam change\n competencyChange(e){\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"createdFor\": [\n this.providerId\n ],\n }\n }\n\n this.temeletryResponse.emit(e.name)\n this.selectedValue = e.name\n this.getCompetencyTheme()\n }\n\n\n\n resetViewMore(){\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\n this.allcompetencyTheme[comp]['viewMore'] = false\n })\n }\n viewMoreChildren(data: any) {\n data.viewMore = !data.viewMore\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\n }\n displayAllTheme(event: any) {\n this.showAllTheme[0]['showAll'] = !event.showAll \n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\n this.temeletryResponse.emit(event.name)\n }\n\n navigateToCompetency(compData: any){\n this.router.navigateByUrl(`app/learn/browse-by/competency/${compData.name}`)\n }\n\n showMore() {\n this.objectData.viewMore = !this.objectData.viewMore\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CompetencyPassbookMdoComponent } from './competency-passbook-mdo.component';\nimport { MatIconModule } from '@angular/material';\nimport { PillsModule } from './../pills/pills.module';\nimport { CompetencyPassbookMdoService } from './competency-passbook-mdo.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [CompetencyPassbookMdoComponent],\n imports: [\n CommonModule,\n MatIconModule,\n PillsModule,\n SkeletonLoaderLibModule\n ],\n exports: [CompetencyPassbookMdoComponent],\n providers:[CompetencyPassbookMdoService]\n})\nexport class CompetencyPassbookMdoModule { }\n","import { Injectable } from '@angular/core'\nimport { Observable, of } from 'rxjs'\nimport { HttpClient } from '@angular/common/http'\nimport { NsAppRating } from '../_models/rating.model'\n\nconst PROXY_SLAG_V8 = '/apis/proxies/v8'\nconst API_END_POINTS = {\n GET_RATING: (contentId: string, contentType: string, userId: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/${contentType}/${userId}`,\n ADD_OR_UPDATE: `${PROXY_SLAG_V8}/ratings/v1/upsert`,\n GET_RATING_SUMMARY: (contentId: string, contentType: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/summary/${contentId}/${contentType}`,\n GET_RATING_LOOKUP: `${PROXY_SLAG_V8}/ratings/v1/ratingLookUp`,\n GET_AUTHOR_REPLY: (contentId: string, userID: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/Course/${userID}`,\n POST_AUTHOR_REPLY: `${PROXY_SLAG_V8}/ratings/v2/read`,\n}\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class RatingService {\n\n constructor(public http: HttpClient) { }\n\n getRating(contentId: string, contentType: string, userId: string): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.get<any>(\n API_END_POINTS.GET_RATING(contentId, contentType, userId)\n )\n }\n return of({})\n }\n\n addOrUpdateRating(req: NsAppRating.IRating): Observable<any> {\n return this.http.post<any>(\n API_END_POINTS.ADD_OR_UPDATE, req\n )\n }\n\n getRatingSummary(contentId: string, contentType: string): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.get<any>(\n API_END_POINTS.GET_RATING_SUMMARY(contentId, contentType)\n )\n }\n return of({})\n }\n\n getRatingLookup(req: NsAppRating.ILookupRequest): Observable<any> {\n return this.http.post<any>(\n API_END_POINTS.GET_RATING_LOOKUP, req\n )\n }\n\n getRatingReply(req: any): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.post<any>(\n API_END_POINTS.POST_AUTHOR_REPLY, req\n )\n }\n return of({})\n }\n\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\n if (avg) {\n const avgRating = avg\n const ratingFloor = Math.floor(avgRating)\n // const difference = avgRating - ratingIndex\n if (ratingIndex <= ratingFloor) {\n return 'star'\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\n return 'star_half'\n }\n }\n return 'star'\n }\n\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\n if (avg) {\n const avgRating = avg\n const ratingFloor = Math.floor(avgRating)\n if (ratingIndex <= ratingFloor) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 > 0.71) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 < 0.29) {\n return false\n }\n }\n return false\n }\n\n getAuthorReply(contentId: string, userID: string): Observable<any> {\n return this.http.get<any>(\n API_END_POINTS.GET_AUTHOR_REPLY(contentId, userID)\n )\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nconst API_END_POINTS = {\n TOP_REVIEWS: `/apis/proxies/v8/ratings/v1/topReviews`\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class UserContentRatingLibService {\n\n constructor(private http: HttpClient) { }\n fetchTopReviews(doId: any): Observable<any> {\n return this.http.get<any>(`${API_END_POINTS.TOP_REVIEWS}/${doId}`)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { RatingService } from '../../_services/rating.service';\nimport { ScrollableItemDirective } from './../../_directives/scrollable-item/scrollable-item.directive';\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\n\n@Component({\n selector: 'sb-uic-user-content-rating',\n templateUrl: './user-content-rating-lib.component.html',\n styleUrls: ['./user-content-rating-lib.component.scss']\n})\nexport class UserContentRatingLibComponent implements OnInit {\n currentIndex: any =0\n @Input() providerId : any = ''\n @Input() formData : any = ''\n @Output() emptyResponse = new EventEmitter<any>()\n styleData: any = {} \n contentdata: any = []\n\n\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor(public ratingService: RatingService,\n public userRatingSvc: UserContentRatingLibService\n ) { }\n\n ngOnInit() {\n this.styleData = this.formData && this.formData.sliderData && this.formData.sliderData.styleData\n this.getTopReviews();\n }\n\n getTopReviews() {\n this.contentdata = []\n this.userRatingSvc.fetchTopReviews(this.providerId).subscribe((response: any) => {\n if(response && response.result && response.result.content.length) {\n response.result.content.forEach((contentEle: any) => {\n let localData = {}\n localData['content'] = contentEle.contentInfo\n localData['rating'] = contentEle.rating\n localData['review'] = contentEle.review\n localData['userDetails'] = contentEle.userDetails\n localData['cardSubType'] = \"card-wide-lib\"\n localData['cardCustomeClass'] = \"\"\n this.contentdata.push(localData)\n });\n } else {\n this.emptyResponse.emit(true)\n }\n },(_error: any)=> {\n this.emptyResponse.emit(true)\n })\n }\n\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\n return this.ratingService.getRatingIcon(ratingIndex, avg)\n }\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\n return this.ratingService.getRatingIconClass(ratingIndex, avg)\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n this.handleScrollClick(indexValue)\n }\n\n handleScrollClick(dataValue: string) {\n const item = this.scrollableItems.find(x => x.key === dataValue)\n item.scrollIntoView(\"nearest\");\n }\n\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule } from '@angular/material';\nimport { UserContentRatingLibComponent } from './user-content-rating-lib.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { SlidersLibModule } from '../sliders/sliders.module';\nimport { RatingService } from '../../_services/rating.service';\nimport { CardsModule } from '../cards/cards.module';\nimport { AvatarPhotoLibModule } from '../avatar-photo-lib/avatar-photo-lib.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\n\n\n\n@NgModule({\n declarations: [UserContentRatingLibComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n SlidersLibModule,\n CardsModule,\n AvatarPhotoLibModule,\n SlidersNgContentLibModule,\n ScrollableItemModule\n ],\n exports: [UserContentRatingLibComponent],\n providers: [RatingService, UserContentRatingLibService],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class UserContentRatingLibModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-mdo-channel-v1',\n templateUrl: './mdo-channel-v1.component.html',\n styleUrls: ['./mdo-channel-v1.component.scss']\n})\nexport class MdoChannelV1Component implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, HostListener, Input, OnInit } from '@angular/core'\nimport { MatTabChangeEvent } from '@angular/material'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2'\n/* tslint:disable */\nimport * as _ from 'lodash'\nimport { TranslateService } from '@ngx-translate/core'\nimport { MultilingualTranslationsService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-mdo-channel-v2',\n templateUrl: './mdo-channel-v2.component.html',\n styleUrls: ['./mdo-channel-v2.component.scss']\n})\nexport class MdoChannelV2Component implements OnInit {\n @Input() sectionList:any = []\n channnelName = ''\n orgId = ''\n selectedIndex = 0\n hideCompetencyBlock: boolean = false\n contentTabEmptyResponseCount: number = 0\n titles = [\n { title: 'Learn', url: '/page/learn', icon: 'school', disableTranslate: false },\n {\n title: `MDO Channels`,\n url: `/app/learn/mdo-channels/all-channels`,\n icon: '', disableTranslate: true,\n },\n ]\n showModal: boolean = false\n descriptionMaxLength = 500\n isTelemetryRaised: boolean = false\n stripWidth: any\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n private eventSvc: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n ) { \n if (this.route.snapshot.data && this.route.snapshot.data.formData\n && this.route.snapshot.data.formData.data\n && this.route.snapshot.data.formData.data.result\n && this.route.snapshot.data.formData.data.result.form\n && this.route.snapshot.data.formData.data.result.form.data\n && this.route.snapshot.data.formData.data.result.form.data.sectionList\n ) {\n this.sectionList = this.route.snapshot.data.formData.data.result.form.data.sectionList\n }\n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n @HostListener('window:resize')\n onResize() {\n this.setWidth()\n }\n\n setWidth() {\n this.stripWidth = `${(window.innerWidth - 1200 + 135)/2}px`\n\n }\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n this.channnelName = params['channel']\n this.orgId = params['orgId']\n this.titles.push({\n title: this.channnelName, icon: '', url: 'none', disableTranslate: true,\n })\n })\n this.setWidth()\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent) {\n this.raiseTelemetry(`${tabEvent.tab.textLabel} tab`)\n }\n hideContentStrip(event: any, colData: any) {\n if (event) {\n colData.contentStripData['hideSection'] = true\n this.contentTabEmptyResponseCount = this.contentTabEmptyResponseCount + 1\n // if(this.contentTabEmptyResponseCount === 4 ) {\n // this.selectedIndex = 1\n // }\n }\n }\n\n triggerOpenDialog(event: boolean) {\n if(event) {\n this.showModal = true\n document.body.style.overflow = 'hidden'\n }\n this.raiseTelemetry('btn open key annoucements')\n }\n\n onClose() {\n this.showModal = false\n document.body.style.overflow = 'auto'\n this.raiseTelemetry('btn close key annoucements')\n }\n\n raiseTelemetryInteratEvent(event: any) {\n if (event && event.viewMoreUrl) {\n this.raiseTelemetry(`${event.stripTitle} ${event.viewMoreUrl.viewMoreText}`)\n }\n if (!this.isTelemetryRaised && event && !event.viewMoreUrl) {\n this.eventSvc.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'mdo-channel',\n id: `${_.kebabCase(event.typeOfTelemetry.toLocaleLowerCase())}-card`,\n },\n {\n id: event.identifier,\n type: event.primaryCategory,\n },\n {\n pageIdExt: `${_.kebabCase(event.primaryCategory.toLocaleLowerCase())}-card`,\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n this.isTelemetryRaised = true\n }\n }\n\n raiseCompetencyTelemetry(name: string) {\n this.raiseTelemetry(`${name} core expertise`)\n }\n\n raiseTelemetry(name: string) {\n this.eventSvc.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'mdo-channel',\n id: `${_.kebabCase(name).toLocaleLowerCase()}`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n }\n\n hideCompetency(event: any) {\n if (event) {\n this.hideCompetencyBlock = true\n }\n }\n\n showAllContent(_stripData: any, columnData: any) {\n if (columnData && columnData.contentStrip && columnData.contentStrip.strips && columnData.contentStrip.strips.length) {\n const stripData: any = _stripData\n let tabSelected = stripData.viewMoreUrl && stripData.viewMoreUrl.queryParams && stripData.viewMoreUrl.queryParams.tabSelected && stripData.viewMoreUrl.queryParams.tabSelected || ''\n this.router.navigate(\n [`/app/learn/mdo-channels/${this.channnelName}/${this.orgId}/all-content`],\n { queryParams: { tabSelected, key: columnData.sectionKey } })\n }\n }\n\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\nimport { MdoChannelV1Component } from './mdo-channel-v1/mdo-channel-v1.component';\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\n\nimport {\n AnnouncementsModule,\n CardsModule,\n CommonMethodsService,\n CommonStripModule,\n CompetencyPassbookModule,\n CompetencyPassbookMdoModule,\n ContentStripWithTabsLibModule,\n DataPointsModule,\n SlidersLibModule,\n HttpLoaderFactory,\n TopLearnersModule,\n CbpPlanModule,\n} from './../../../../public-api'\nimport { MdoChannelV2Component } from './mdo-channel-v2/mdo-channel-v2.component';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\n\n\n@NgModule({\n declarations: [MdoChannelV1Component, MdoChannelV2Component],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n AnnouncementsModule,\n TopLearnersModule,\n CbpPlanModule,\n CardsModule,\n CommonStripModule,\n CompetencyPassbookModule,\n CompetencyPassbookMdoModule,\n ContentStripWithTabsLibModule,\n DataPointsModule,\n SlidersLibModule,\n MatTabsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports: [MdoChannelV1Component, MdoChannelV2Component],\n providers:[\n CommonMethodsService],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class MDOChannelModule { }\n","import { DatePipe } from '@angular/common'\nimport { Component, Input, OnInit } from '@angular/core'\nimport { ActivatedRoute, Router } from '@angular/router'\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2'\nimport * as _ from 'lodash'\n\n@Component({\n selector: 'sb-uic-providers-v2',\n templateUrl: './providers-v2.component.html',\n styleUrls: ['./providers-v2.component.scss']\n})\nexport class ProvidersV2Component implements OnInit {\n\n @Input() sectionList:any = []\n providerName = ''\n providerId = ''\n navList: any\n hideCompetencyBlock = false\n // sectionList: any = []\n currentMonthAndYear: any\n titles = [\n { title: 'Learn', url: '/page/learn', icon: 'school', disableTranslate: false },\n { title: `All Providers`,\n url: `/app/learn/browse-by/provider/all-providers`,\n icon: '', disableTranslate: true,\n },\n ]\n\n descriptionMaxLength = 500\n isTelemetryRaised = false\n\n constructor(private route: ActivatedRoute,\n public router: Router, private datePipe: DatePipe, private events: EventService) {\n\n }\n\n ngOnInit() {\n if (this.route.snapshot.data && this.route.snapshot.data.formData\n && this.route.snapshot.data.formData.data\n && this.route.snapshot.data.formData.data.result\n && this.route.snapshot.data.formData.data.result.form\n && this.route.snapshot.data.formData.data.result.form.data\n && this.route.snapshot.data.formData.data.result.form.data.sectionList\n ) {\n this.sectionList = this.route.snapshot.data.formData.data.result.form.data.sectionList\n }\n this.route.params.subscribe(params => {\n this.providerName = params['provider']\n this.providerId = params['orgId']\n this.titles.push({\n title: this.providerName, icon: '', url: 'none', disableTranslate: true,\n })\n })\n this.getNavitems()\n this.currentMonthAndYear = this.datePipe.transform(new Date(), 'MMMM y')\n }\n\n getNavitems() {\n this.navList = this.sectionList.filter(\n (obj: any) => obj.enabled && obj.navigation && obj.navOrder).sort(\n (a: any, b: any) => a.navOrder - b.navOrder)\n }\n\n scrollToSection(name: string) {\n let section: HTMLElement | any\n section = document.getElementById(name)\n if (section) {\n // section.scrollIntoView({ behavior: 'smooth', block: 'start',inline: 'nearest', offsetTop: yOffset })\n window.scrollTo({\n top: section.offsetTop - 121,\n behavior: 'smooth',\n })\n }\n }\n hideCompetency(event: any, columnData: any) {\n if (event) {\n this.hideCompetencyBlock = true\n columnData['navigation'] = false\n columnData['enabled'] = false\n this.navList.forEach((navItem: any) => {\n navItem.column.forEach((colEle: any) => {\n if (colEle.key === columnData.key) {\n navItem['navigation'] = false\n }\n })\n })\n }\n }\n hideContentStrip(event: any, contentStripData: any) {\n if (event) {\n contentStripData.contentStrip['hideSection'] = true\n }\n }\n hideLearnerReview(event: any, learnerReview: any) {\n if (event) {\n learnerReview['hideSection'] = true\n }\n }\n\n showAllContent(_stripData: any, columnData: any) {\n if (columnData && columnData.contentStrip && columnData.contentStrip.strips && columnData.contentStrip.strips.length) {\n const stripData: any = _stripData\n let tabSelected = stripData.viewMoreUrl && stripData.viewMoreUrl.queryParams && stripData.viewMoreUrl.queryParams.tabSelected && stripData.viewMoreUrl.queryParams.tabSelected || ''\n this.router.navigate(\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-content`],\n { queryParams: { pageDetails: true, tabSelected, key: columnData.sectionKey } })\n\n } else {\n this.router.navigate(\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-CBP`],\n { queryParams: { pageDetails: true } })\n }\n }\n\n raiseTelemetryInteratEvent(event: any) {\n if (event && event.viewMoreUrl) {\n this.raiseTelemetry(`${event.stripTitle} ${event.viewMoreUrl.viewMoreText}`)\n }\n if (!this.isTelemetryRaised && event && !event.viewMoreUrl) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'ATI/CTI',\n id: `${_.kebabCase(event.typeOfTelemetry.toLocaleLowerCase())}-card`,\n },\n {\n id: event.identifier,\n type: event.primaryCategory,\n },\n {\n pageIdExt: `${_.kebabCase(event.primaryCategory.toLocaleLowerCase())}-card`,\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n this.isTelemetryRaised = true\n }\n }\n\n raiseCompetencyTelemetry(name: string) {\n this.raiseTelemetry(`${name} core expertise`)\n }\n\n raiseTelemetry(name: string) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'ATI/CTI',\n id: `${_.kebabCase(name).toLocaleLowerCase()}`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n }\n\n raiseNavTelemetry(name: string) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'ATI/CTI',\n id: `${_.kebabCase(name).toLocaleLowerCase()}-navigation`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.LEARN,\n }\n )\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\nimport {\n CalenderModule,\n CardsModule, \n CommonMethodsService, \n CommonStripModule, \n CompetencyPassbookModule, \n ContentStripWithTabsLibModule,\n DataPointsModule, \n HttpLoaderFactory, \n SlidersLibModule, \n UserContentRatingLibModule \n} from './../../../../public-api'\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ProvidersV2Component } from './providers-v2/providers-v2.component';\nimport { RouterModule } from '@angular/router';\n\n\n@NgModule({\n declarations: [ProvidersV2Component],\n imports: [\n CommonModule,\n MatIconModule,\n RouterModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n CalenderModule,\n CardsModule,\n CommonStripModule,\n CompetencyPassbookModule,\n UserContentRatingLibModule,\n ContentStripWithTabsLibModule,\n DataPointsModule,\n SlidersLibModule,\n MatTabsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports: [ProvidersV2Component],\n providers:[\n CommonMethodsService],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class ProvidersModule { }\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2';\nimport * as _ from 'lodash'\n\n@Component({\n selector: 'sb-uic-national-learning',\n templateUrl: './national-learning.component.html',\n styleUrls: ['./national-learning.component.scss']\n})\nexport class NationalLearningComponent implements OnInit {\n @Input() sectionList:any = []\n @Input() configDetails: any\n @Input() nwlConfiguration: any\n providerId: string = '123456789'\n providerName: ''\n descriptionMaxLength = 500\n constructor(public router: Router, private events: EventService) {\n }\n\n ngOnInit(): void {\n }\n\n\n hideKeyHightlight(event: any, learnerReview: any) {\n if (event) {\n learnerReview['hideSection'] = true\n }\n }\n\n showAllContent(_stripData: any, columnData: any) {\n if (columnData && columnData.contentStrip && columnData.contentStrip.strips && columnData.contentStrip.strips.length) {\n const stripData: any = _stripData\n let tabSelected = stripData.viewMoreUrl && stripData.viewMoreUrl.queryParams && stripData.viewMoreUrl.queryParams.tabSelected && stripData.viewMoreUrl.queryParams.tabSelected || ''\n this.router.navigate(\n [`app/learn/national-learning-week/see-all`],\n { queryParams: { pageDetails: true, tabSelected, key: columnData.sectionKey } })\n\n } else {\n this.router.navigate(\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-CBP`],\n { queryParams: { pageDetails: true } })\n }\n }\n\n hideContentStrip(event: any, contentStripData: any) {\n if (event) {\n contentStripData.contentStrip['hideSection'] = true\n }\n }\n\n raiseTabClick(event) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'mdo-leaderboard',\n id: `${event}-tab`,\n },\n {\n },\n {\n module: 'National Learning Week',\n }\n )\n }\n\n raiseTelemetryInteratEvent(event: any) {\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'mandatory-courses',\n id: `mandatory-courses-card`,\n },\n {\n id: event.identifier,\n type: event.primaryCategory,\n },\n {\n pageIdExt: `mandatory-courses-card`,\n module: 'National Learning Week',\n }\n )\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\n\n@Component({\n selector: 'sb-uic-key-highlights',\n templateUrl: './key-highlights.component.html',\n styleUrls: ['./key-highlights.component.scss']\n})\nexport class KeyHighlightsComponent implements OnInit {\n currentIndex: any = 0\n @Input() providerId : any = ''\n @Input() formData : any = ''\n @Input() mode: any\n @Output() emptyResponse = new EventEmitter<any>()\n titleMaxLength = 100\n\n styleData: any = {} \n contentdata: any = []\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor() { }\n\n ngOnInit() {\n this.styleData = this.formData && this.formData.sliderData && this.formData.sliderData.styleData\n this.contentdata = this.formData && this.formData.content ? this.formData.content : []\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KeyHighlightsComponent } from './key-highlights.component';\nimport { MatIconModule } from '@angular/material';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\n\n\n\n@NgModule({\n declarations: [KeyHighlightsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n SlidersNgContentLibModule,\n ScrollableItemModule\n ],\n exports: [\n KeyHighlightsComponent\n ],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class KeyHighlightsModule { }\n","import { Component, Input, OnInit } from '@angular/core'\nimport { InsiteDataService } from '../../_services/insite-data.service'\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\n@Component({\n selector: 'sb-uic-events',\n templateUrl: './events.component.html',\n styleUrls: ['./events.component.scss']\n})\nexport class EventsComponent implements OnInit {\n\n @Input() object: any\n @Input() nwlEventsConfig: any\n daysBetween: any = []\n events: any = []\n requestBody: any\n currentDay: any\n loader: boolean = false\n constructor(public insightSvc: InsiteDataService) { }\n\n ngOnInit() {\n this.requestBody = {\n locale: [\n 'en',\n ],\n query: '',\n request: {\n query: '',\n filters: {\n status: ['Live'],\n contentType: 'Event',\n category: 'Event',\n startDate\t: {\n \">=\": '',\n \"<\": ''\n }\n },\n sort_by: {\n startDate: 'desc',\n },\n },\n }\n this.getEventsList()\n }\n getDaysBetweenDates() {\n let currentDate = moment(this.nwlEventsConfig.startDate, 'DD-MM-YYYY')\n const endDate = moment(this.nwlEventsConfig.endDate, 'DD-MM-YYYY')\n while (currentDate.isSameOrBefore(endDate)) {\n let localObj = {}\n localObj['startDate'] = currentDate.format('YYYY-MM-DD')\n localObj['diplayFormat'] = currentDate.format('MMM DD, YYYY')\n if(currentDate.isSame(moment(), 'day')){\n this.currentDay = currentDate.format('YYYY-MM-DD')\n }\n currentDate.add(1, 'days').format('YYYY-MM-DD')\n this.daysBetween.push(localObj)\n }\n console.log(\"currentDay \", this.currentDay)\n }\n\n getEvents(slectedDate: any) {\n this.currentDay = slectedDate.target.value\n let nextDay = moment(slectedDate.target.value, 'YYYY-MM-DD')\n nextDay.add(1, 'days')\n this.requestBody.request.filters.startDate[\">=\"] = this.currentDay\n this.requestBody.request.filters.startDate[\"<\"] = nextDay.format('YYYY-MM-DD')\n this.loader = true\n this.insightSvc.fetchTrainingDetails(this.requestBody).subscribe((res: any)=> {\n this.events = []\n if (res && res.result && res.result.count > 0) {\n this.events = res.result.Event\n this.loader = false\n } else {\n this.loader = false\n }\n }, error => {\n this.loader = false\n })\n }\n\n getEventsList() {\n this.getDaysBetweenDates()\n let nextDay = moment(this.currentDay, 'YYYY-MM-DD')\n nextDay.add(1, 'days')\n this.requestBody.request.filters.startDate[\">=\"] = this.currentDay\n this.requestBody.request.filters.startDate[\"<\"] = nextDay.format('YYYY-MM-DD')\n this.loader = true\n this.insightSvc.fetchTrainingDetails(this.requestBody).subscribe((res: any)=> {\n this.events = []\n if (res && res.result && res.result.count > 0) {\n this.events = res.result.Event\n this.loader = false\n } else {\n this.loader = false\n }\n }, error => {\n this.loader = false\n })\n }\n\n}\n","import { Component, Inject, Input } from '@angular/core'\nimport { Router } from '@angular/router'\nimport * as moment_ from 'moment'\nconst moment = moment_\n\n@Component({\n selector: 'sb-uic-event-card',\n templateUrl: './event-card.component.html',\n styleUrls: ['./event-card.component.scss']\n})\nexport class EventCardComponent {\n\n @Input() objectData: any\n @Input() eventDetails: any\n environment!: any\n @Input() loader: any\n descriptionMaxLength: number = 50\n constructor(@Inject('environment') environment: any, private router: Router) {\n this.environment = environment\n }\n\n getEventDate(event: any) {\n let timeString = event.startTime.split(\":\")\n let dataString = `${moment(event.startDate).format('MMM DD, YYYY')} ${timeString[0]}:${timeString[1]}`\n return dataString\n }\n\n getPublicUrl(url: string): string {\n const mainUrl = url.split('/content').pop() || ''\n return `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n }\n\n redirectTo(event: any) {\n this.router.navigate([\"/app/event-hub/home/\", event.identifier]);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EventsComponent } from './events.component';\nimport { EventCardComponent } from './event-card/event-card.component';\nimport { RouterModule } from '@angular/router';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { MatIconModule } from '@angular/material';\n\n\n\n@NgModule({\n declarations: [EventsComponent, EventCardComponent],\n imports: [\n CommonModule,\n RouterModule,\n SkeletonLoaderLibModule,\n MatIconModule\n ],\n exports: [EventsComponent, EventCardComponent]\n})\nexport class EventsModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-mdo-leaderboard',\n templateUrl: './mdo-leaderboard.component.html',\n styleUrls: ['./mdo-leaderboard.component.scss']\n})\nexport class MdoLeaderboardComponent implements OnInit {\n\n currentTab: any = 'XL'\n result: any = []\n filteredData: any\n searchTerm: string = ''\n expand: boolean = true\n\n @Input() object: any\n @Output() tabClicked = new EventEmitter<any>()\n constructor(private insiteDataService: InsiteDataService) { }\n\n ngOnInit() {\n this.getData()\n }\n\n getData() {\n this.insiteDataService.fetchLeaderboard().subscribe((res: any) => {\n if (res && res.result) {\n this.result = res.result\n this.filteredData = this.result.mdoLeaderBoard\n .filter(user => user.size === this.currentTab) \n .map(user => ({ ...user, children: [], selected: false })).slice(0, 5)\n }\n \n }, error => {\n console.log(error)\n })\n }\n\n getTabData(name: any) {\n this.currentTab = name\n this.searchTerm = ''\n this.filteredData = this.result.mdoLeaderBoard\n .filter(user => user.size === this.currentTab) \n .map(user => ({ ...user, children: [], selected: false })).slice(0, 5)\n let nameStr: any = ''\n switch (name) {\n case 'XL':\n nameStr = 'greater-than-50K'\n break\n case 'L':\n nameStr = '10K-50K'\n break\n case 'M':\n nameStr = '1K-10K'\n break\n case 'S':\n nameStr = '500-1K'\n break\n default:\n nameStr = 'less-than-500'\n break\n }\n this.tabClicked.emit(nameStr)\n }\n\n getRank(rank: number) {\n return [1,2,3].includes(rank) ? `rank${rank}` : 'rank0'\n }\n\n getMedal(rank: number) {\n if (rank === 1) {\n return 'assets/images/national-learning/Medal1.svg'\n } else if(rank === 2) {\n return 'assets/images/national-learning/Medal2.svg'\n } else {\n return 'assets/images/national-learning/Medal3.svg'\n }\n }\n\n handleSearchQuery(e: any) {\n if (e.target.value && e.target.value.length > 0) {\n this.searchTerm = e.target.value\n this.filteredData = this.result.mdoLeaderBoard\n .filter(user => user.size === this.currentTab && user.org_name.toLowerCase().includes(e.target.value))\n .map(user => ({ ...user, children: []})).slice(0, 5)\n } else {\n this.filteredData = this.result.mdoLeaderBoard\n .filter(user => user.size === this.currentTab)\n .map(user => ({ ...user, children: []})).slice(0, 5)\n }\n }\n\n toggleWeekHightlits() {\n this.expand = !this.expand\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MdoLeaderboardComponent } from './mdo-leaderboard.component';\nimport { MatIconModule, MatTooltipModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { FormsModule } from '@angular/forms';\n\n\n\n@NgModule({\n declarations: [MdoLeaderboardComponent],\n imports: [\n CommonModule,\n MatIconModule,\n SkeletonLoaderLibModule,\n FormsModule,\n MatTooltipModule\n ],\n exports: [\n MdoLeaderboardComponent\n ],\n providers: [InsiteDataService]\n})\nexport class MdoLeaderboardModule { }\n","import { Component, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\n\n@Component({\n selector: 'sb-uic-highlights-of-week',\n templateUrl: './highlights-of-week.component.html',\n styleUrls: ['./highlights-of-week.component.scss']\n})\nexport class HighlightsOfWeekComponent implements OnInit {\n\n @Input() objectData: any\n currentIndex = 0\n contentdata: any = []\n styleData: any = {}\n expand: boolean = true\n \n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor() { }\n\n ngOnInit() {\n this.styleData = this.objectData && this.objectData.sliderData && this.objectData.sliderData.styleData\n if (this.objectData && this.objectData.list) {\n this.objectData.list.forEach((contentEle: any) => {\n let localData = {}\n localData['title'] = contentEle.title\n localData['videoUrl'] = contentEle.videoUrl\n localData['cardSubType'] = \"card-wide-lib\"\n localData['description'] = contentEle.description\n this.contentdata.push(localData)\n })\n }\n }\n\n toggleWeekHightlits() {\n this.expand = !this.expand\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule, MatTooltipModule } from '@angular/material';\nimport { HighlightsOfWeekComponent } from './highlights-of-week.component';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\n\n\n\n@NgModule({\n declarations: [HighlightsOfWeekComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatTooltipModule,\n ScrollableItemModule,\n SlidersNgContentLibModule\n ],\n exports: [\n HighlightsOfWeekComponent\n ]\n})\nexport class HighlightsOfWeekModule { }\n","import { Component, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\n\n@Component({\n selector: 'sb-uic-speakers',\n templateUrl: './speakers.component.html',\n styleUrls: ['./speakers.component.scss']\n})\nexport class SpeakersComponent implements OnInit {\n @Input() objectData: any\n currentIndex = 0\n contentdata: any = []\n styleData: any = {}\n expand: boolean = true\n \n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n\n constructor() { }\n\n ngOnInit() {\n this.styleData = this.objectData && this.objectData.sliderData && this.objectData.sliderData.styleData\n if (this.objectData && this.objectData.list) {\n this.objectData.list.forEach((contentEle: any) => {\n let localData = {}\n localData['name'] = contentEle.title\n localData['cardSubType'] = \"card-wide-lib\"\n localData['description'] = contentEle.description\n localData['initial'] = this.createInititals(contentEle.title)\n localData['profileImage'] = contentEle.profileImage ? contentEle.profileImage : ''\n this.contentdata.push(localData)\n })\n }\n }\n\n createInititals(name: string) {\n let initials = ''\n const array = name.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < name.length; i += 1) {\n if (name.charAt(i) === ' ') {\n continue\n }\n if (name.charAt(i) === name.charAt(i)) {\n initials += name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n return initials.toUpperCase()\n }\n \n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n\n toggleWeekHightlits() {\n this.expand = !this.expand\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpeakersComponent } from './speakers.component';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { MatIconModule, MatTooltipModule } from '@angular/material';\n\n\n\n@NgModule({\n declarations: [SpeakersComponent],\n imports: [\n CommonModule,\n ScrollableItemModule,\n SlidersNgContentLibModule,\n MatTooltipModule,\n MatIconModule,\n ],\n exports: [\n SpeakersComponent\n ]\n})\nexport class SpeakersModule { }\n","import { Component, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\nimport { ConfigurationsService } from '@sunbird-cb/utils-v2';\n\n@Component({\n selector: 'sb-uic-user-progress',\n templateUrl: './user-progress.component.html',\n styleUrls: ['./user-progress.component.scss']\n})\nexport class UserProgressComponent implements OnInit {\n\n @Input() objectData: any\n @Input() rootOrgId: any\n insitesData = []\n currentIndex = 0\n styleData: any = {}\n userProgress: any = {}\n expand: boolean = true\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor(public insightSvc: InsiteDataService, private configSvc: ConfigurationsService,\n ) { }\n\n ngOnInit() {\n this.styleData = this.objectData.insights.data.sliderData.styleData\n this.getUserProgress()\n this.getInsightsData()\n }\n\n getUserProgress() {\n this.insightSvc.fetchUserProgress().subscribe((res: any) => {\n if(res && res.result && res.result.userLeaderBoard) {\n this.userProgress = res.result.userLeaderBoard\n if (!this.userProgress.fullname && this.configSvc && this.configSvc.userProfile && this.configSvc.userProfile.firstName) {\n this.userProgress['fullname'] = this.configSvc.userProfile.firstName\n this.userProgress['profile_image'] = this.configSvc.userProfile.profileImageUrl\n }\n }\n }, error => {\n this.userProgress['fullname'] = this.configSvc.userProfile.firstName\n this.userProgress['profile_image'] = this.configSvc.userProfile.profileImageUrl\n })\n }\n getInsightsData() {\n const request = {\n request: {\n filters: {\n primaryCategory: 'programs',\n organisations: [\n 'across',\n this.rootOrgId,\n //\"01390354700029132834\"\n ],\n },\n },\n }\n this.insightSvc.fetchInsightsData(request).subscribe((res: any) => {\n if (res && res.result && res.result.response && res.result.response.nudges) {\n this.insitesData = res.result.response.nudges\n this.insitesData = this.insitesData.map((obj: any) => {\n return {...obj, cardSubType: 'card-wide-lib'}\n })\n }\n })\n }\n\n roundTo(number: any) {\n return Math.round(number * 100 /100)\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n }\n\n createInititals(name: string) {\n let initials = ''\n const array = name.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < name.length; i += 1) {\n if (name.charAt(i) === ' ') {\n continue\n }\n if (name.charAt(i) === name.charAt(i)) {\n initials += name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n return initials.toUpperCase()\n }\n\n toggleWeekHightlits() {\n this.expand = !this.expand\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UserProgressComponent } from './user-progress.component';\nimport { MatIconModule, MatTooltipModule } from '@angular/material';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\n\n\n\n@NgModule({\n declarations: [UserProgressComponent],\n imports: [\n CommonModule,\n MatTooltipModule,\n MatIconModule,\n ScrollableItemModule,\n SlidersNgContentLibModule,\n ],\n exports: [\n UserProgressComponent\n ]\n})\nexport class UserProgressModule { }\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { NationalLearningComponent } from './national-learning/national-learning.component';\nimport { CommonMethodsService } from '../../../_services/common-methods.service';\nimport { SlidersLibModule } from '../../sliders/sliders.module';\nimport { KeyHighlightsModule } from '../../key-highlights/key-highlights.module';\nimport { ContentStripWithTabsLibModule } from '../../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { EventsModule } from '../../events/events.module';\nimport { MdoLeaderboardModule } from '../../mdo-leaderboard/mdo-leaderboard.module';\nimport { DataPointsModule } from '../../data-points/data-points.module';\nimport { HighlightsOfWeekModule } from '../../highlights-of-week/highlights-of-week.module';\nimport { SpeakersModule } from '../../speakers/speakers.module';\nimport { UserProgressModule } from '../../user-progress/user-progress.module';\nimport { ContentStripFacetFilterModule } from '../../strips/content-strip-facet-filter/content-strip-facet-filter.module';\n\n\n\n@NgModule({\n declarations: [NationalLearningComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n SlidersLibModule,\n MatTabsModule,\n KeyHighlightsModule,\n ContentStripWithTabsLibModule,\n DataPointsModule,\n EventsModule,\n MdoLeaderboardModule,\n HighlightsOfWeekModule,\n SpeakersModule,\n UserProgressModule,\n ContentStripFacetFilterModule\n ],\n exports: [\n NationalLearningComponent,\n ],\n providers:[\n CommonMethodsService\n ],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class NationalLearningModule { }\n"]}