@sunbird-cb/consumption 0.0.102 → 0.0.103

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.
@@ -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/_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","enrollmentDataIds","handleError","errorMessage","ErrorEvent","message","throwError","fetchUserGroupDetails","catchError","fetchUserBatchList","path","headers","HttpHeaders","Cache-Control","Pragma","Expires","map","data","coursesData","courses","forEach","content","contentStatus","contentId","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","ɵ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","enrolledDoId","getResourseLink","externalId","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","contentShuffel","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","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","telemtryLearningContentResponse","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","domSanitizer","getLookerProUrl","hideKeyHightlight","raiseTabClick","_subType","_id","lookerProUrl","bypassSecurityTrustResourceUrl","lookerProMobileUrl","lookerProDesktopUrl","DomSanitizer","KeyHighlightsComponent","titleMaxLength","KeyHighlightsModule","EventsComponent","daysBetween","<","getEventsList","getDaysBetweenDates","nwlEventsConfig","localObj","isSame","currentDay","add","getEvents","slectedDate","nextDay","eveEle","customDateFormat","sortItemByTime","eventsdata","eventDate","stime","EventCardComponent","getEventDate","getPublicUrl","EventsModule","MdoLeaderboardComponent","insiteDataService","searchTerm","disableLeft","disableRight","mdoLeaderBoard","user","getTabData","nameStr","getMedal","handleSearchQuery","org_name","toggleWeekHightlits","scrollToRight","scrollableContent","scrollBy","scrollToLeft","MdoLeaderboardModule","HighlightsOfWeekComponent","videoUrl","HighlightsOfWeekModule","SpeakersComponent","profileImage","goToEvent","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 enrollmentDataIds: 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 this.enrollmentDataIds.push(content.contentId)\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=true'`\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 enrolledDoId: any = this.userSvc.enrollmentDataIds.includes(doId)\n let userId = this.configSvc.userProfile.userId\n if(enrolledDoId) {\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 return []\n }\n\n async getResourseLink(content: any) {\n if(content.externalId) {\n const urlData: any = {\n url: `app/toc/ext/${content.contentId}`,\n queryParams: { batchId: content.batchId },\n };\n return urlData\n } else {\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 }\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 } else {\n this.processStrip(\n strip,\n [],\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 \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 if(currentTab && currentTab.contentShuffel){\n content = content.sort( () => Math.random() - 0.5);\n }\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() telemtryLearningContentResponse = 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.telemtryLearningContentResponse.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.telemtryLearningContentResponse.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: 'explore-learning-content',\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 && response.results.result.content && response.results.result.content.length > 0) {\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 } 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 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 } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n '',\n tabResults\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, Inject, Input, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { EventService, UtilityService } 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 environment: any\n isMobile: boolean = false\n lookerProUrl: any\n constructor(@Inject('environment') environment: any,\n public router: Router, private events: EventService,\n private domSanitizer: DomSanitizer,\npublic utilitySvc: UtilityService) {\n this.environment = environment\n this.isMobile = this.utilitySvc.isMobile\n }\n\n ngOnInit(): void {\n this.getLookerProUrl();\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/karmayogi-saptah/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\n raiseTelemetryInteratEvent(event: any) {\n let _subType = 'mandatory-courses'\n let _id = 'mandatory-courses-card'\n if (event.typeOfTelemetry === 'learningContent') {\n _subType = 'explore-learning-content'\n _id = 'explore-learning-content-card'\n } \n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: _subType,\n id: _id,\n },\n {\n id: event.identifier,\n type: event.primaryCategory,\n },\n {\n pageIdExt: _id,\n module: 'National Learning Week',\n }\n )\n }\n getLookerProUrl() {\n this.sectionList.forEach((ele: any) => {\n if(ele.key === 'sectionlooker') {\n ele.column.forEach((colEle: any) => {\n if(colEle.key === 'lookerSection') {\n this.lookerProUrl = this.domSanitizer\n .bypassSecurityTrustResourceUrl(this.isMobile ? colEle.data.lookerProMobileUrl : colEle.data.lookerProDesktopUrl)\n }\n });\n }\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\n res.result.Event.forEach((eveEle) => {\n eveEle['eventDate'] = this.customDateFormat(eveEle.startDate, eveEle.startTime)\n eveEle['eventendDate'] = this.customDateFormat(eveEle.endDate, eveEle.endTime)\n });\n this.events = this.sortItemByTime(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 res.result.Event.forEach((eveEle) => {\n eveEle['eventDate'] = this.customDateFormat(eveEle.startDate, eveEle.startTime)\n eveEle['eventendDate'] = this.customDateFormat(eveEle.endDate, eveEle.endTime)\n });\n \n this.events = this.sortItemByTime(res.result.Event)\n this.loader = false\n } else {\n this.loader = false\n }\n }, error => {\n this.loader = false\n })\n }\n\n sortItemByTime(eventsdata: any) {\n return eventsdata.sort((a: any, b: any) => {\n const firstDate: any = new Date(a.eventDate)\n const secondDate: any = new Date(b.eventDate)\n return secondDate < firstDate ? 1 : -1\n })\n }\n customDateFormat(date: any, time: any) {\n const stime = time.split('+')[0]\n const hour = stime.substr(0, 2)\n const min = stime.substr(2, 3)\n return `${date} ${hour}${min}`\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, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } 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 disableLeft: boolean = true\n disableRight: boolean = false\n\n @Input() object: any\n @Output() tabClicked = new EventEmitter<any>()\n @ViewChild('scrollableContent', { static: false }) scrollableContent: ElementRef;\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 scrollToRight() {\n this.scrollableContent.nativeElement.scrollBy({\n left: 200,\n behavior: 'smooth'\n })\n this.disableLeft = false\n this.disableRight = true\n }\n\n\n scrollToLeft() {\n this.scrollableContent.nativeElement.scrollBy({\n left: -200,\n behavior: 'smooth'\n })\n this.disableLeft = true\n this.disableRight = false\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';\nimport { Router } from '@angular/router';\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(private route: Router) { }\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 localData['identifier'] = contentEle.identifier ? contentEle.identifier : ''\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 goToEvent(eventData:any) {\n if(eventData && eventData.identifier){\n this.route.navigateByUrl(`/app/event-hub/home/${eventData.identifier}`)\n }\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';\nimport { PipeSafeSanitizerModule } from '@sunbird-cb/utils-v2';\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 PipeSafeSanitizerModule\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","enrollmentDataIds","handleError","errorMessage","ErrorEvent","message","throwError","fetchUserGroupDetails","catchError","fetchUserBatchList","path","headers","HttpHeaders","Cache-Control","Pragma","Expires","map","data","coursesData","courses","forEach","content","contentStatus","contentId","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","ɵ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","enrolledDoId","getResourseLink","externalId","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","contentShuffel","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","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","telemtryLearningContentResponse","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","vKey","getAllCompetencies","getAllCompetenciesV2","showMore","viewMore","getCompetencyArea","addfilter","createdFor","vCompetencyArea","callCompetencySearch","fact","values","area","addFilter","getcompetencyThemeCount","getThemeDataByArea","competencyChange","isDetail","competency","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","domSanitizer","getLookerProUrl","hideKeyHightlight","raiseTabClick","_subType","_id","lookerProUrl","bypassSecurityTrustResourceUrl","lookerProMobileUrl","lookerProDesktopUrl","DomSanitizer","KeyHighlightsComponent","titleMaxLength","KeyHighlightsModule","EventsComponent","daysBetween","<","getEventsList","getDaysBetweenDates","nwlEventsConfig","localObj","isSame","currentDay","add","getEvents","slectedDate","nextDay","eveEle","customDateFormat","sortItemByTime","eventsdata","eventDate","stime","EventCardComponent","getEventDate","getPublicUrl","EventsModule","MdoLeaderboardComponent","insiteDataService","searchTerm","disableLeft","disableRight","mdoLeaderBoard","user","getTabData","nameStr","getMedal","handleSearchQuery","org_name","toggleWeekHightlits","scrollToRight","scrollableContent","scrollBy","scrollToLeft","MdoLeaderboardModule","HighlightsOfWeekComponent","videoUrl","HighlightsOfWeekModule","SpeakersComponent","profileImage","goToEvent","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 enrollmentDataIds: 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 this.enrollmentDataIds.push(content.contentId)\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=true'`\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 enrolledDoId: any = this.userSvc.enrollmentDataIds.includes(doId)\n let userId = this.configSvc.userProfile.userId\n if(enrolledDoId) {\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 return []\n }\n\n async getResourseLink(content: any) {\n if(content.externalId) {\n const urlData: any = {\n url: `app/toc/ext/${content.contentId}`,\n queryParams: { batchId: content.batchId },\n };\n return urlData\n } else {\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 }\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 } else {\n this.processStrip(\n strip,\n [],\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 \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 if(currentTab && currentTab.contentShuffel){\n content = content.sort( () => Math.random() - 0.5);\n }\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() telemtryLearningContentResponse = 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.telemtryLearningContentResponse.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.telemtryLearningContentResponse.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: 'explore-learning-content',\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 && response.results.result.content && response.results.result.content.length > 0) {\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 } 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 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 } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n '',\n tabResults\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 if(this.comeptencyKeys.vKey === 'competencies_v5') {\n this.getAllCompetencies()\n }\n else {\n this.getAllCompetenciesV2()\n }\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\n getAllCompetencies(){\n this.loadCometency = true\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\n this.competencySvc.getCompetencyList(request).subscribe((response: any) => {\n this.allcompetencyTheme = {}\n if(response && response.result && response.result.competency) {\n this.originalCompetencyArray = response.result.competency\n this.getCompetencyArea()\n response.result.competency.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 getAllCompetenciesV2(){\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'].toLowerCase() === (obj2['name'].toLowerCase()))\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 if(this.comeptencyKeys.vKey === 'competencies_v5') {\n this.getAllCompetencies()\n }\n else {\n this.getAllCompetenciesV2()\n }\n }\n\n\n getAllCompetencies(){\n this.loadCometency = true\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\n this.competencySvc.getCompetencyList(request).subscribe((response: any) => {\n this.allcompetencyTheme = {}\n if(response && response.result && response.result.competency) {\n this.originalCompetencyArray = response.result.competency\n this.getMdoCompetencies()\n // this.getCompetencyArea()\n response.result.competency.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 getAllCompetenciesV2(){\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.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 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, Inject, Input, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\nimport { EventService, UtilityService } 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 environment: any\n isMobile: boolean = false\n lookerProUrl: any\n constructor(@Inject('environment') environment: any,\n public router: Router, private events: EventService,\n private domSanitizer: DomSanitizer,\npublic utilitySvc: UtilityService) {\n this.environment = environment\n this.isMobile = this.utilitySvc.isMobile\n }\n\n ngOnInit(): void {\n this.getLookerProUrl();\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/karmayogi-saptah/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\n raiseTelemetryInteratEvent(event: any) {\n let _subType = 'mandatory-courses'\n let _id = 'mandatory-courses-card'\n if (event.typeOfTelemetry === 'learningContent') {\n _subType = 'explore-learning-content'\n _id = 'explore-learning-content-card'\n } \n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: _subType,\n id: _id,\n },\n {\n id: event.identifier,\n type: event.primaryCategory,\n },\n {\n pageIdExt: _id,\n module: 'National Learning Week',\n }\n )\n }\n getLookerProUrl() {\n this.sectionList.forEach((ele: any) => {\n if(ele.key === 'sectionlooker') {\n ele.column.forEach((colEle: any) => {\n if(colEle.key === 'lookerSection') {\n this.lookerProUrl = this.domSanitizer\n .bypassSecurityTrustResourceUrl(this.isMobile ? colEle.data.lookerProMobileUrl : colEle.data.lookerProDesktopUrl)\n }\n });\n }\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\n res.result.Event.forEach((eveEle) => {\n eveEle['eventDate'] = this.customDateFormat(eveEle.startDate, eveEle.startTime)\n eveEle['eventendDate'] = this.customDateFormat(eveEle.endDate, eveEle.endTime)\n });\n this.events = this.sortItemByTime(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 res.result.Event.forEach((eveEle) => {\n eveEle['eventDate'] = this.customDateFormat(eveEle.startDate, eveEle.startTime)\n eveEle['eventendDate'] = this.customDateFormat(eveEle.endDate, eveEle.endTime)\n });\n \n this.events = this.sortItemByTime(res.result.Event)\n this.loader = false\n } else {\n this.loader = false\n }\n }, error => {\n this.loader = false\n })\n }\n\n sortItemByTime(eventsdata: any) {\n return eventsdata.sort((a: any, b: any) => {\n const firstDate: any = new Date(a.eventDate)\n const secondDate: any = new Date(b.eventDate)\n return secondDate < firstDate ? 1 : -1\n })\n }\n customDateFormat(date: any, time: any) {\n const stime = time.split('+')[0]\n const hour = stime.substr(0, 2)\n const min = stime.substr(2, 3)\n return `${date} ${hour}${min}`\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, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } 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 disableLeft: boolean = true\n disableRight: boolean = false\n\n @Input() object: any\n @Output() tabClicked = new EventEmitter<any>()\n @ViewChild('scrollableContent', { static: false }) scrollableContent: ElementRef;\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 scrollToRight() {\n this.scrollableContent.nativeElement.scrollBy({\n left: 200,\n behavior: 'smooth'\n })\n this.disableLeft = false\n this.disableRight = true\n }\n\n\n scrollToLeft() {\n this.scrollableContent.nativeElement.scrollBy({\n left: -200,\n behavior: 'smooth'\n })\n this.disableLeft = true\n this.disableRight = false\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';\nimport { Router } from '@angular/router';\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(private route: Router) { }\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 localData['identifier'] = contentEle.identifier ? contentEle.identifier : ''\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 goToEvent(eventData:any) {\n if(eventData && eventData.identifier){\n this.route.navigateByUrl(`/app/event-hub/home/${eventData.identifier}`)\n }\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';\nimport { PipeSafeSanitizerModule } from '@sunbird-cb/utils-v2';\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 PipeSafeSanitizerModule\n ],\n exports: [\n NationalLearningComponent,\n ],\n providers:[\n CommonMethodsService\n ],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class NationalLearningModule { }\n"]}