@sunbird-cb/consumption 0.0.67 → 0.0.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sunbird-cb-consumption.umd.js +23 -19
- package/bundles/sunbird-cb-consumption.umd.js.map +1 -1
- package/bundles/sunbird-cb-consumption.umd.min.js +1 -1
- package/bundles/sunbird-cb-consumption.umd.min.js.map +1 -1
- package/esm2015/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.js +1 -1
- package/esm2015/lib/_common/data-points/data-points.component.js +18 -16
- package/esm2015/lib/_common/top-learners/top-learners.component.js +2 -2
- package/esm2015/lib/_services/insite-data.service.js +4 -3
- package/esm5/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.js +1 -1
- package/esm5/lib/_common/data-points/data-points.component.js +18 -16
- package/esm5/lib/_common/top-learners/top-learners.component.js +2 -2
- package/esm5/lib/_services/insite-data.service.js +5 -3
- package/fesm2015/sunbird-cb-consumption.js +22 -19
- package/fesm2015/sunbird-cb-consumption.js.map +1 -1
- package/fesm5/sunbird-cb-consumption.js +23 -19
- package/fesm5/sunbird-cb-consumption.js.map +1 -1
- package/lib/_services/insite-data.service.d.ts +1 -1
- package/package.json +1 -1
- package/sunbird-cb-consumption.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@sunbird-cb/consumption/lib/consumption.service.ts","ng://@sunbird-cb/consumption/lib/consumption.component.ts","ng://@sunbird-cb/consumption/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.module.ts","ng://@sunbird-cb/consumption/lib/_models/widget-content.model.ts","ng://@sunbird-cb/consumption/lib/_services/viewer-route-util.ts","ng://@sunbird-cb/consumption/lib/_services/widget-content.service.ts","ng://@sunbird-cb/consumption/lib/_services/configurations.service.ts","ng://@sunbird-cb/consumption/lib/_services/multilingual-translations.service.ts","ng://@sunbird-cb/consumption/lib/_models/card-content-v2.model.ts","ng://@sunbird-cb/consumption/lib/_services/widget-user.service.ts","ng://@sunbird-cb/consumption/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/sliders/sliders.component.ts","ng://@sunbird-cb/consumption/lib/_directives/image-responsive/image-responsive.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/image-responsive/image-responsive.module.ts","ng://@sunbird-cb/consumption/lib/_directives/navigation/navigation.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/navigation/navigation.module.ts","ng://@sunbird-cb/consumption/lib/_common/sliders/sliders.module.ts","ng://@sunbird-cb/consumption/lib/_services/insite-data.service.ts","ng://@sunbird-cb/consumption/lib/_common/data-points/data-points.component.ts","ng://@sunbird-cb/consumption/lib/_common/skeleton-loader-lib/skeleton-loader-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/skeleton-loader-lib/skeleton-loader-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/data-points/data-points.module.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender.component.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender-day/calender-day.component.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender.module.ts","ng://@sunbird-cb/consumption/lib/_services/common-methods.service.ts","ng://@sunbird-cb/consumption/lib/_common/common-strip/common-strip.component.ts","ng://@sunbird-cb/consumption/lib/_common/common-strip/common-strip.module.ts","ng://@sunbird-cb/consumption/lib/_common/announcements/announcements.component.ts","ng://@sunbird-cb/consumption/lib/_common/announcements/announcements.module.ts","ng://@sunbird-cb/consumption/lib/_common/top-learners/top-learners.component.ts","ng://@sunbird-cb/consumption/lib/_common/top-learners/top-learners.module.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.directive.ts","ng://@sunbird-cb/consumption/lib/_common/cbp-plan/cbp-plan.component.ts","ng://@sunbird-cb/consumption/lib/_common/sliders-ng-content/sliders-ng-content.component.ts","ng://@sunbird-cb/consumption/lib/_common/sliders-ng-content/sliders-ng-content.module.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.module.ts","ng://@sunbird-cb/consumption/lib/_common/cbp-plan/cbp-plan.module.ts","ng://@sunbird-cb/consumption/lib/consumption.module.ts","ng://@sunbird-cb/consumption/lib/consumption.config.ts","ng://@sunbird-cb/consumption/lib/_models/card-content.model.ts","ng://@sunbird-cb/consumption/lib/_common/cards/cards.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-resource/card-resource.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-portrait/card-portrait.component.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-public-URL/pipe-public-URL.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-public-URL/pipe-public-URL.module.ts","ng://@sunbird-cb/consumption/lib/_pipes/object-to-array/object-to-array.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/object-to-array/object-to-array.pipe.module.ts","ng://@sunbird-cb/consumption/lib/_common/display-content-type-lib/display-content-type-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/display-content-type-lib/display-content-type-lib.module.ts","ng://@sunbird-cb/consumption/lib/_directives/default-thumbnail/default-thumbnail.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/default-thumbnail/default-thumbnail.module.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-duration-transform/pipe-duration-transform.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-user/card-user.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-landscape/card-landscape.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-wide/card-wide.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-wide-v2/card-wide-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-karma-programs/card-karma-programs.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-karma-programs-v2/card-karma-programs-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/provider-card/provider-card.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.ts","ng://@sunbird-cb/consumption/lib/_services/certificate.service.ts","ng://@sunbird-cb/consumption/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-progress/content-progress.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-progress/content-progress.module.ts","ng://@sunbird-cb/consumption/lib/_common/dialog-components/dialog-components.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.ts","ng://@sunbird-cb/consumption/lib/_common/avatar-photo-lib/avatar-photo-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/avatar-photo-lib/avatar-photo-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/cards.module.ts","ng://@sunbird-cb/consumption/lib/registration-lib.config.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-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/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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__createBinding","o","m","k","k2","undefined","__exportStar","exports","__values","__read","ar","error","__spread","concat","__spreadArrays","il","a","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","ConsumptionService","Injectable","args","providedIn","ConsumptionComponent","ngOnInit","Component","selector","template","HorizontalScrollerV2Component","valueSvc","loadStatus","id","onHover","sliderConfig","showNavs","showDots","cerificateCardMargin","loadNext","EventEmitter","horizontalScrollElem","enablePrev","enableNext","activeNav","cardSubType","bottomDotsArray","scrollObserver","isMobile","defaultMenuSubscribe","isLtMedium$","_this","stripConfig","horizontalScrollElem_1","fromEvent","nativeElement","pipe","debounceTime","throttleTime","subscribe","updateNavigationBtnStatus","setTimeout","getBottomDotsArray","isLtMedium","ngOnChanges","timer","ngOnDestroy","unsubscribe","showPrev","clientWidth","scrollTo","left","scrollLeft","behavior","elem","scrollWidth","arrowsAlwaysOn","showNext","widthDiff","Math","abs","round","emit","ceil","slideTo","ele","diff","arrLength_1","cardWidth","document","getElementsByClassName","getElementById","scrollerWidth","widgetsLength","defaultMaxWidgets","ValueService","Input","Output","ViewChild","static","HorizontalScrollerV2Module","NgModule","declarations","imports","CommonModule","MatButtonModule","MatIconModule","MatProgressSpinnerModule","NsContent","IContinueLearningData","IContinueLearningDataReq","IContent","IContentResponse","IBatch","IBatchListResponse","ICourse","IContentMinimal","ICollectionHierarchyResponse","IRelatedContentMeta","ICreator","IContentTopic","IContact","IViewerContinueLearningRequest","EPrimaryCategory","EMiscPlayerSupportedCollectionTypes","EMimeTypes","EContentTypes","ECourseCategory","WFBlendedProgramStatus","WFBlendedProgramApprovalTypes","WFSTATUS_MSG_MAPPING","INITIATE","SEND_FOR_MDO_APPROVAL","SEND_FOR_PC_APPROVAL","APPROVED","REJECTED","WITHDRAWN","REMOVED","EXPIRED","EResourcePrimaryCategories","PLAYER_SUPPORTED_COLLECTION_TYPES","COURSE","MODULE","PROGRAM","CURATED_PROGRAM","BLENDED_PROGRAM","STANDALONE_ASSESSMENT","PLAYLIST","KB_SUPPORTED_CONTENT_TYPES","RESOURCE","PLAYLIST_SUPPORTED_CONTENT_TYPES","EDisplayContentTypes","EFilterCategory","ETagType","UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS","PUBLIC_SUPPORTED_CONTENT_TYPES","APPLICATION_JSON","FINAL_ASSESSMENT","HTML","HTML_TEXT","ZIP","ZIP2","M4A","MP3","MP4","PDF","YOUTUBE","TEXT_WEB","SURVEY","VIEWER_ROUTE_FROM_MIME","mimeType","COLLECTION","CHANNEL","CERTIFICATION","window","location","href","includes","IAP","ILP_FP","M3U8","WEB_MODULE","WEB_MODULE_EXERCISE","CLASS_DIAGRAM","HANDS_ON","RDBMS_HANDS_ON","HTML_PICKER","QUIZ","PRACTICE_RESOURCE","COLLECTION_RESOURCE","OFFLINE_SESSION","viewerRouteGenerator","collectionId","collectionType","forPreview","primaryCategory","batchId","courseName","collId","collType","url","forcreator","queryParams","preview","editMode","moment","moment_","PROTECTED_SLAG_V8","type","ɵ1","contentId","ɵ2","certId","ɵ3","API_END_POINTS","CONTENT","AUTHORING_CONTENT","CONTENT_LIKES","SET_S3_COOKIE","SET_S3_IMAGE_COOKIE","FETCH_MANIFEST","FETCH_WEB_MODULE_FILES","MULTIPLE_CONTENT","CONTENT_SEARCH_V5","CONTENT_SEARCH_V6","TRENDING_CONTENT_SEARCH","CONTENT_SEARCH_RELATED_CBP_V6","CONTENT_SEARCH_REGION_RECOMMENDATION","CONTENT_HISTORY","CONTENT_HISTORYV2","COURSE_BATCH_LIST","COURSE_BATCH","AUTO_ASSIGN_BATCH","AUTO_ASSIGN_CURATED_BATCH","AUTO_ASSIGN_OPEN_PROGRAM","USER_CONTINUE_LEARNING","CONTENT_RATING","COLLECTION_HIERARCHY","REGISTRATION_STATUS","MARK_AS_COMPLETE_META","ENROLL_BATCH","ENROLL_BATCH_WF","WITHDRAW_BATCH_WF","BLENDED_USER_WF","BLENDED_USER_COUNT","CERT_ADD_TEMPLATE","CERT_ISSUE","CERT_DOWNLOAD","READ_KARMAPOINTS","CONTENT_READ","READ_COURSE_KARMAPOINTS","CLAIM_KARMAPOINTS","USER_KARMA_POINTS","AGGREGATION_SEARCH","FEATURE_SEARCH","WidgetContentService","http","configSvc","tocConfigData","BehaviorSubject","tocConfigData$","asObservable","telemetryData","Subject","telemetryData$","programChildCourseResumeData","programChildCourseResumeData$","changeTelemetryData","message","isResource","LEARNING_RESOURCE","COMP_ASSESSMENT","fetchMarkAsCompleteMeta","identifier","of","toPromise","updateTocConfig","data","fetchContent","hierarchyType","_additionalFields","shareReplay","fetchAuthoringContent","fetchMultipleContent","ids","join","fetchCollectionHierarchy","pageNumber","pageSize","fetchBlendedCourse","fetchCourseBatches","req","post","retry","map","response","fetchCourseBatch","autoAssignBatchApi","autoAssignCuratedBatchApi","request","programType","MODERATED_PROGRAM","enrollUserToBatch","enrollAndUnenrollUserToBatchWF","fetchBlendedUserWF","fetchBlendedUserCOUNT","fetchContentLikes","contentIds","fetchContentRatings","fetchContentHistory","fetchContentHistoryV2","fields","courseId","subscribeData","resumeData","contentList","continueLearning","toLowerCase","reqBody","contextPathId","resourceId","JSON","stringify","timestamp","Date","now","contextFullPath","dateAccessed","contextType","saveContinueLearning","catch","finally","_a","content","setS3Cookie","_contentId","EMPTY","setS3ImageCookie","catchError","_err","fetchManifest","fetchWebModuleContent","encodeURIComponent","search","query","searchRegionRecommendation","preLabelValue","userProfile","country","filters","labels","searchV6","apiPath","_.get","searchRelatedCBPV6","fetchContentRating","deleteContentRating","delete","addContentRating","getFirstChildInHierarchy","children","artifactUrl","MANDATORY_COURSE_GOAL","child","KNOWLEDGE_ARTIFACT","firstChild","getRegistrationStatus","source","fetchConfig","addCertTemplate","patch","issueCert","downloadCert","trendingContentSearch","getKarmaPoitns","limit","offset","fetchProgramContent","getCourseKarmaPoints","claimKarmapoints","userKarmaPoints","getEnrolledData","doId","parse","localStorage","getItem","getResourseLink","enrolledCourseData","courseCategory","INVITE_ONLY_PROGRAM","isBatchInProgress","batch","checkForDataToFormUrl","gotoTocPage","enrollData","completionPercentage","lrcProgressDetails","modifyEnrollData","name","lastReadContentId","getResourseDataWithData","firstChildId","res","contentData","urlData","resourseId","endDate","planType","batchData","format","startDate","isSameOrBefore","isSameOrAfter","postApiMethod","apiUrl","getApiMethod","HttpClient","ConfigurationsService","appSetup","userUrl","baseUrl","sitePath","hostPath","replace","userRoles","userGroups","restrictedFeatures","restrictedWidgets","instanceConfig","appsConfig","rootOrg","org","activeOrg","isProduction","hasAcceptedTnc","profileDetailsStatus","isActive","userPreference","userProfileV2","nodebbUserProfile","isAuthenticated","isNewUser","pinnedApps","Set","prefChangeNotifier","ReplaySubject","tourGuideNotifier","authChangeNotifier","updateProfile","updateProfileObservable","updateTourGuide","updateTourGuideObservable","updatePlatformRating","bottom","updatePlatformRatingObservable$","languageTranslationFlag","activeThemeObject","activeFontObject","isDarkMode","isIntranetAllowed","isRTL","activeLocale","activeLocaleGroup","completedActivity","completedTour","profileSettings","primaryNavBar","color","pageNavBar","primaryNavBarConfig","welcomeTabs","cstoken","changeNavBarFullView","openExploreMenuForMWeb","updateGlobalProfile","state","updateTourGuideMethod","updatePlatformRatingMethod","MultilingualTranslationsService","translate","selectedLang","languageSelected","languageSelectedObservable","editProfileDetails","getLanguage","unMappedUser","profileDetails","additionalProperties","webPortalLang","lang","use","setItem","setDefaultLang","translateLabelWithoutspace","subtype","nlabel","translationKey","instant","translationKeyn","translateLabel","sl_1","split","forEach","w","index","toUpperCase","slice","translateActualLabel","sl","editProfileDetailsAPI","updatelanguageSelected","userid","reqUpdates","userId","TranslateService","NsCardContent","ICard","IContentTags","ICompetency","EContentStatus","ACBPConst","IGOTConst","dayjs","dayjs_","ɵ1$1","COMPETENCIES","ɵ2$1","ɵ3$1","orgdetails","licenseDetails","batchDetails","FETCH_USER_GROUPS","FETCH_CPB_PLANS","FETCH_USER_ENROLLMENT_LIST","FETCH_USER_ENROLLMENT_LIST_PROFILE","FETCH_USER_ENROLLMENT_LIST_V2","WidgetUserService","environment","handleError","errorMessage","ErrorEvent","throwError","fetchUserGroupDetails","fetchUserBatchList","path","headers","HttpHeaders","Cache-Control","Pragma","Expires","checkStorageData","coursesData","courses","contentStatus","storeUserEnrollmentInfo","userCourseEnrolmentInfo","removeItem","setTime","mapEnrollmentData","getData","fetchProfileUserBatchList","dataKey","checkTime","parsedData","apiCache","Observable","getSavedData","getTime","resetTime","fetchCbpPlanList","mapData","contentNew","todayDate","enrollList","count","childData","childEnrollData","daysCount","OVERDUE","SUCCESS","UPCOMING","status","RETIRED","competencyArea","competencyTheme","competencyThemeType","competencySubTheme","competencyAreaId","competencyThemeId","competencySubThemeId","competencies_v5","element","sortedData","sort","firstDate","uniqueUsersByID","lodash.uniqBy","sortedByEndDate","lodash.orderBy","sortedByStatus","courseData","enrollmentData","enrolledCourseCount","userData","Inject","IStripUnitContentData","ContentStripWithTabsLibComponent","_super","contentSvc","loggerSvc","eventSvc","utilitySvc","router","userSvc","langtranslations","emptyResponse","viewAllResponse","telemtryResponse","providerId","emitViewAll","channnelName","random","stripsResultDataMap","stripsKeyOrder","showAccordionData","showParentLoader","showParentError","showParentNoData","errorDataCount","noDataCount","successDataCount","contentAvailable","veifiedKarmayogi","changeEventSubscription","todaysEvents","tslib_1.__extends","initData","showAccordion","mode","setHiddenForStrip","showStrip","sessionStorage","getIfStripHidden","storageItem","Boolean","widgetData","strips","strip","loader","_b","tslib_1.__values","_c","checkForEmptyWidget","fetchStripFromRequestData","processStrip","keyAndEvent","refreshEvent","eventType","from","toString","filter","eventTypeSet","events$","event","fetchStripFromKey","calculateParentStatus","stripData","find","isStripShowing","programStripKey","tabs","stripTitle","programStripName","widgets","programStripPrimaryCategory","getdata","stripInfo","widget","checkCondition","wData","hideShowAll","viewMoreUrl","checkVisible","visibilityMode","getContineuLearningLenth","getLength","tabWithMaxWidgets","reduce","prev","current","getFiltersFromArray","v6filters","keys","transformSearchV6FiltersV2","checkForDateFilters","eval","organisation","rootOrgId","designation","professionalDetails","loaderWidgets","transformSkeletonToWidgets","fetchFromEnrollmentList","fetchFromSearchV6","fetchFromTrendingContent","fetchAllCbpPlans","fetchAllTopContent","fetchAllFeaturedContent","fetchAllBookMarkData","fetchAllPlaylistSearch","fetchPlaylistReadData","fetchCiosContentData","enrollmentList","content_1","contentNew_1","tabResults_1","postCardForSearch","contentTemp","progress","completionStatus","enrolledDate","lastContentAccessTime","lastReadContentStatus","issuedCertificates","dateA","splitEnrollmentTabsData","transformContentsToWidgets","tabResults","splitData","getInprogressAndCompleted","fetchTabStatus","itmInner","array","customFilter","inprogress","completed","idx","arr","statusRetired","statusA","statusB","originalFilters","console","log","requestRequired","allTabs","currentTabFromMap","getTabDataByNewReqSearchV6","searchV6Request","response_1","results","enrollInterval","setInterval","checkInvitOnlyAssessments","Event","transformEventsToWidgets","enrollmentMapData","filteredArray_1","now_1","clearInterval","tab","trendingSearch","getTabDataByNewReqTrending","trendingSearchRequest","responseKey","userRootOrgId","proccesedResult","certifications","toggleInfo","warn","contents","widgetType","widgetSubType","widgetHostClass","cardCustomeClass","customeClass","context","pageSection","position","intranetMode","deletedMode","contentTags","setEventListData","_content","loaderConfig","fetchStatus","_viewMoreUrl","tabsResults","canHideStrip","noDataWidget","errorWidget","info","title","stripTitleLink","disableTranslate","tabsType","stripName","stripBackground","secondaryHeading","preWidgets","postWidgets","showOnNoData","showOnLoader","showOnError","checkParentStatus","stripWidgetsCount","settledCount","totalCount","api","cbpList","topContent","featureContent","bookmarkRead","playlistSearch","playlistRead","ciosContent","tabClicked","tabEvent","stripMap","stripKey","tabLoading","textLabel","raiseInteractTelemetry","WsEvents","EnumInteractTypes","CLICK","subType","EnumInteractSubTypes","HOME_PAGE_STRIP_TABS","_.camelCase","module","EnumTelemetrymodules","HOME","currentStrip","tabSelected","computeDataOnClick","getTabDataByNewReqTopContent","getTabDataByNewReqPlaylistReadContent","getTabDataByCiosSearch","getTabDataByfilter","tabIndex","currentTab","splitCbpTabsData","getTabsList","all","upcoming","overdue","planDuration","allCompleted","allData","allInCompleted","allCompletedOverDue","allCompletedAll","getSelectedIndex","returnValue","translateLabels","identify","item","tracker","postMethodFilters","postRequestMethod","raiseTelemetry","getRequestMethod","showViewMore","orgList","featuredProvider","featuredProviders","getFullUrl","formedUrl","mdoChannelsBookmarkId","providerDataKey","redirectViewAll","queryParamsData","navigate","bookmarkId","transformAllContentsToWidgets","transformAllTabContentsToWidgets","finalPlaylistData_1","prgData","error_11","firstTab","extContentData","_currentTab","error_13","LoggerService","EventService","UtilityService","Router","HostBinding","WidgetBaseComponent","HttpLoaderFactory","TranslateHttpLoader","ContentStripWithTabsLibModule","SbUiResolverModule","RouterModule","MatToolbarModule","MatTooltipModule","MatListModule","MatSidenavModule","MatCardModule","MatExpansionModule","MatRadioModule","MatChipsModule","MatInputModule","MatFormFieldModule","MatDialogModule","MatSnackBarModule","MatSelectModule","MatDatepickerModule","MatNativeDateModule","MatTableModule","MatCheckboxModule","MatButtonToggleModule","MatTabsModule","MatAutocompleteModule","TranslateModule","forRoot","provide","TranslateLoader","useFactory","deps","entryComponents","SlidersLibComponent","events","currentIndex","slideInterval","reInitiateSlideInterval","interval","currentData","redirectUrl","openInNewTab","open","bannerUrl","pathname","pageUrl","bannerRedirectUrl","pageIdExt","IImageResponsiveUnit","customBreakPoints","xs","l","xl","xxl","ImageResponsiveDirective","breakpointObserver","src","srcBindUrl","currentSize","breakpointSubscription","observe","distinctUntilChanged","breakpoints","setSrc","Directive","BreakpointObserver","ImageResponsiveModule","NavigationDirective","wsUtilsNavigation","routeUrl","onMouseEnter","$event","preventDefault","stopPropagation","HostListener","NavigationModule","MyHammerConfig","buildHammer","Hammer","touchAction","HammerGestureConfig","SlidersLibModule","providers","HAMMER_GESTURE_CONFIG","useClass","PROVIDER_INSIGHTS","TRAINING_DETAILS","ANNOUNCEMENTS_DETAILS","LEARNERS","InsiteDataService","fetchSearchData","fetchAnnouncementsData","fetchTrainingDetails","fetchLearner","DataPointsComponent","insightSvc","layoutType","fetchDataFromApi","pageLayout","customArray","isDataLoading","objectData","createCustomArray","metrics","getInsiteData","nByn","dataColSpan","organisations","requestType","nudges","nudgeData","orgId","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","channelId","requestedFields","orderBy","orderDirection","facets","description","list","viewMoreOrLess","openAnnouncements","showMoreOrLess","AnnouncementsModule","TopLearnersComponent","loading","colors","toLocaleString","Number","_error","getRank","rank","getColor","randomIndex","floor","createInititals","initials","TopLearnersModule","ScrollableItemDirective","el","scrollIntoView","blockValue","block","ElementRef","CbpPlanComponent","styleData","contentdata","sliderData","contentEle","localData","downloaUrl","getCurrentIndex","indexValue","getFileName","downloadUrl","at","downloadCBPPlan","xhr","XMLHttpRequest","responseType","onload","blob","Blob","URL","createObjectURL","createElement","download","appendChild","click","removeChild","revokeObjectURL","statusText","onerror","send","ViewChildren","SlidersNgContentLibComponent","loadNgContentData","autoScroll","currentIndexValue","SlidersNgContentLibModule","ScrollableItemModule","CbpPlanModule","ConsumptionModule","ROOT_WIDGET_CONFIG","card","_type","cardResource","CardsComponent","contSvc","triggerTelemetry","isIntranetAllowedSettings","cbPlanInterval","getCbPlanData","getEnrollmentData","isInIntranet","getRedirectUrlData","externalId","cbpListArr","cbPlanMapData","raiseCardClick","CardResourceComponent","CardPortraitComponent","snackBar","isCardLoading","isCardFlipped","acbpConstants","showFlip","defaultThumbnail","logos","defaultContent","sourceLogos","sources","defaultSLogo","defaultSourceLogo","showSnackbar","showIntranetContent","duration","isLiveOrMarkForDeletion","MatSnackBar","PipePublicURL","mainUrl","finalURL","contentHost","contentBucket","Pipe","PipePublicURLModule","ObjectToArrayPipe","_i","ObjectToArrayPipeModule","DisplayContentTypeLibComponent","useTranslation","displayContentType","DEFAULT","displayContentTypeEnum","DisplayContentTypeLibModule","DefaultThumbnailDirective","wsUtilsDefaultThumbnail","isSrcUpdateAttemptedForDefault","srcUrl","updateSrc","DefaultThumbnailModule","PipeDurationTransformPipe","h","defaultDuration","hmsCalculation","duration2","moment.duration","moment.utc","asMilliseconds","duration2H","padStart","dur","space","PipeDurationTransformModule","CardUserComponent","rollup","CardLandscapeComponent","CardWideComponent","ver","version","CardMDOChannelComponent","channelData","emitTelemetry","channelClick","channeldata","redirectTo","orgName","CardWideV2Component","CardKarmaProgramsComponent","randomColorApply","randomColors","setRandomColor","randomIndex1","playListKey","CardKarmaProgramsV2Component","raiseTemeletry","ProviderCardComponent","CardPortraitExtComponent","CardAssessmentComponent","activeResource","daysRemaining","daysPending","daysFinish","startCountdown","updateCountdown","distance","ɵ0$3","ɵ1$2","urls","DOWNLOAD_CERTIFICATE","DOWNLOAD_CERTIFICATE_v2","CertificateService","downloadCertificate","downloadCertificate_v2","CertificateDialogComponent","dialogRef","navUrl","cet","raiseIntreactTelemetry","style","remove","downloadCertPng","uriData","img","Image","canvas","ctx","getContext","drawImage","toDataURL","append","downloadCertPdf","dataImg","pdf","jsPDF","addImage","save","shareCert","raiseShareIntreactTelemetry","action","CERTIFICATE","host","class","MatDialogRef","MAT_DIALOG_DATA","CardProgressPortraitLibComponent","certificateService","dialog","downloadCertificateLoading","certificateData","certData_1","printUri","MatDialog","ContentProgressComponent","progressType","className","customClassName","rendom","role","aria-valuemin","aria-valuemax","[attr.aria-valuenow]","ContentProgressModule","MatProgressBarModule","ɵ0$4","DialogComponentsModule","MatMenuModule","PipeSafeSanitizerModule","CardMdoChannelV1Component","AvatarPhotoLibComponent","size","defaulfColor","randomColor","showBadge","showInitials","randomcolors","photoUrl","datalen","circleColor","change","currentValue","previousValue","firstChange","AvatarPhotoLibModule","MatRippleModule","ɵ0$5","CardsModule","WIDGET_REGISTERED_LIB_MODULES","WIDGET_REGISTRATION_LIB_CONFIG","component","IStripUnitContentData$1","ContentStripWithTabsPillsComponent","tabWithMaxWidgets_1","pillsData","fetchForYouData","pillData","allPills","currenPillsFromMap","pillSelected","pillIndex","resetSelectedPill","selected","currentPillFromMap","pillClicked","getSelectedPillIndex","tabdata","findIndex","pill","countOfWidget_1","HttpLoaderFactory1","ContentStripWithTabsPillsModule","API_POINTS","COMPETENCY_LIST","CERTIFICATE_URL","CompetencyPassbookService","getCompetencyList","payload","fetchCertificate","CompetencyPassbookComponent","competencySvc","cardDisplayCount","dynamicAlignPills","temeletryResponse","loadCometency","loadCompetencyArea","competencyVersion","allcompetencyTheme","competencyStrength","competencyThemeLength","showAllTheme","showAll","getAllCompetencies","showMore","viewMore","getCompetencyArea","addfilter","createdFor","callCompetencySearch","values","partialSum","selectedValue","addFilter","getcompetencyTheme","competencyChange","isDetail","competency","originalCompetencyArray","childEle","competencies_v5.competencyArea","competencyThemeData_1","ele1","ele2","resetViewMore","comp","viewMoreChildren","displayAllTheme","navigateToCompetency","compData","navigateByUrl","PillsComponent","pillClick","dynamicClass","dynamicColor","requiredTitlecase","selectedPill","PillsModule","CompetencyPassbookModule","competency_URL","CompetencyPassbookMdoService","mdoCompetency","CompetencyPassbookMdoComponent","getMdoCompetencies","getMdoCompetency","facet","competencyThemeData","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","params","hideContentStrip","contentStripData","triggerOpenDialog","overflow","onClose","raiseTelemetryInteratEvent","viewMoreText","_.kebabCase","typeOfTelemetry","toLocaleLowerCase","LEARN","raiseCompetencyTelemetry","hideCompetency","showAllContent","_stripData","contentStrip","ActivatedRoute","ɵ0$7","MDOChannelModule","ProvidersV2Component","providerName","getNavitems","navList","enabled","navigation","navOrder","scrollToSection","section","top","offsetTop","columnData","navItem","column","colEle","hideLearnerReview","learnerReview","pageDetails","raiseNavTelemetry","ɵ0$8","ProvidersModule"],"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';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConsumptionService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sb-uic-consumption',\r\n template: `\r\n <p>\r\n consumption works!\r\n </p>\r\n `,\r\n styles: []\r\n})\r\nexport class ConsumptionComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core';\r\nimport {\r\n fromEvent,\r\n Subscription,\r\n timer,\r\n} from 'rxjs';\r\nimport { debounceTime, throttleTime } from 'rxjs/operators';\r\nimport { TFetchStatus } from '../../_constants/misc.constants';\r\nimport { ValueService } from '@sunbird-cb/utils-v2';\r\nimport { NsCommonStrip } from '../common-strip/common-strip.model';\r\nimport { NsContentStripMultiple } from '../../_models/content-strip-multiple.model';\r\n\r\n@Component({\r\n selector: 'sb-uic-horizontal-scroller-v2',\r\n templateUrl: './horizontal-scroller-v2.component.html',\r\n styleUrls: ['./horizontal-scroller-v2.component.scss'],\r\n})\r\n\r\nexport class HorizontalScrollerV2Component implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() loadStatus: TFetchStatus = 'fetching';\r\n @Input() id: string = '';\r\n @Input() onHover = false;\r\n @Input() sliderConfig: any = {\r\n showNavs: true,\r\n showDots: true,\r\n cerificateCardMargin: false,\r\n };\r\n @Output() loadNext = new EventEmitter();\r\n @Input() widgetsLength: any;\r\n @Input() defaultMaxWidgets: any;\r\n @Input() stripConfig: any;\r\n @ViewChild('horizontalScrollElem', { static: true })\r\n horizontalScrollElem: ElementRef | null = null;\r\n\r\n enablePrev = false;\r\n enableNext = false;\r\n activeNav = 0;\r\n cardSubType = 'standard';\r\n bottomDotsArray: any = [];\r\n private scrollObserver: Subscription | null = null;\r\n isMobile = false\r\n private defaultMenuSubscribe: Subscription | null = null\r\n isLtMedium$ = this.valueSvc.isLtMedium$\r\n\r\n constructor(private valueSvc: ValueService) { }\r\n\r\n ngOnInit() {\r\n this.cardSubType = this.stripConfig && this.stripConfig.cardSubType ? this.stripConfig.cardSubType : 'standard';\r\n if (this.horizontalScrollElem) {\r\n const horizontalScrollElem = this.horizontalScrollElem;\r\n this.scrollObserver = fromEvent(\r\n horizontalScrollElem.nativeElement,\r\n 'scroll',\r\n )\r\n .pipe(debounceTime(100), throttleTime(100))\r\n .subscribe(_ => {\r\n this.updateNavigationBtnStatus(horizontalScrollElem\r\n .nativeElement as HTMLElement);\r\n });\r\n setTimeout(() => {\r\n this.getBottomDotsArray();\r\n }, 700);\r\n }\r\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\r\n this.isMobile = isLtMedium\r\n })\r\n }\r\n\r\n ngOnChanges() {\r\n timer(100).subscribe(() => {\r\n if (this.horizontalScrollElem) {\r\n this.updateNavigationBtnStatus(this.horizontalScrollElem\r\n .nativeElement as HTMLElement);\r\n }\r\n });\r\n setTimeout(() => {\r\n this.getBottomDotsArray();\r\n }, 700);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.scrollObserver) {\r\n this.scrollObserver.unsubscribe();\r\n }\r\n if (this.defaultMenuSubscribe) {\r\n this.defaultMenuSubscribe.unsubscribe()\r\n }\r\n }\r\n\r\n showPrev() {\r\n // const elem = this.horizontalScrollElem.nativeElement\r\n // elem.scrollLeft -= 0.20 * elem.clientWidth\r\n if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\r\n behavior: 'smooth',\r\n });\r\n \r\n const elem = this.horizontalScrollElem.nativeElement\r\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\r\n this.activeNav -= 1;\r\n } else {\r\n if(this.sliderConfig.arrowsAlwaysOn) {\r\n if(this.horizontalScrollElem.nativeElement.scrollLeft === 0){\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: elem.scrollWidth,\r\n behavior: 'smooth',\r\n });\r\n this.activeNav = this.bottomDotsArray.length - 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n showNext() {\r\n // const elem = this.horizontalScrollElem.nativeElement\r\n // elem.scrollLeft += 0.20 * elem.clientWidth\r\n if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\r\n behavior: 'smooth',\r\n });\r\n const elem = this.horizontalScrollElem.nativeElement\r\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\r\n this.activeNav += 1;\r\n } else {\r\n if(this.sliderConfig.arrowsAlwaysOn) {\r\n if(this.horizontalScrollElem.nativeElement.scrollLeft !== 0 && elem.clientWidth + elem.scrollLeft >= elem.scrollWidth ){\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n this.activeNav = 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private updateNavigationBtnStatus(elem: HTMLElement) {\r\n this.enablePrev = true;\r\n this.enableNext = true;\r\n if (elem.scrollLeft === 0) {\r\n if(!this.sliderConfig.arrowsAlwaysOn) {\r\n this.enablePrev = false;\r\n }\r\n this.activeNav = 0;\r\n }\r\n // if (elem.scrollWidth === Math.round(elem.clientWidth + elem.scrollLeft)) {\r\n // if (this.loadStatus === 'hasMore') {\r\n // this.loadNext.emit();\r\n // } else {\r\n // if(!this.sliderConfig.arrowsAlwaysOn) {\r\n // this.enableNext = false;\r\n // }\r\n // if (this.bottomDotsArray.length) {\r\n // this.activeNav = this.bottomDotsArray.length - 1;\r\n // }\r\n // }\r\n // }\r\n // if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\r\n // this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth);\r\n // }\r\n\r\n\r\n const widthDiff = Math.abs(elem.scrollWidth - Math.round(elem.clientWidth + elem.scrollLeft))\r\n if (widthDiff === 0 || widthDiff === 1) {\r\n if (this.loadStatus === 'hasMore') {\r\n this.loadNext.emit()\r\n } else {\r\n this.enableNext = false\r\n if (this.bottomDotsArray.length) {\r\n this.activeNav = this.bottomDotsArray.length - 1\r\n }\r\n }\r\n }\r\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\r\n this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth)\r\n }\r\n }\r\n\r\n slideTo(ele: any) {\r\n const diff = ele - this.activeNav;\r\n // if (ele > this.activeNav && ele !== this.activeNav) {\r\n // if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\r\n // this.horizontalScrollElem.nativeElement.scrollTo({\r\n // left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth*diff),\r\n // behavior: 'smooth',\r\n // })\r\n // }\r\n // this.activeNav = ele\r\n // } else {\r\n // if (this.horizontalScrollElem && ele >= 0 && ele !== this.activeNav) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\r\n // this.horizontalScrollElem.nativeElement.scrollTo({\r\n // left: this.horizontalScrollElem.nativeElement.scrollLeft - (clientWidth*diff),\r\n // behavior: 'smooth',\r\n // })\r\n // }\r\n // this.activeNav = ele\r\n // }\r\n if (this.horizontalScrollElem) {\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth * diff),\r\n behavior: 'smooth',\r\n });\r\n }\r\n this.activeNav = ele;\r\n }\r\n\r\n getBottomDotsArray() {\r\n if (this.horizontalScrollElem) {\r\n this.bottomDotsArray = [];\r\n let cardWidth;\r\n let arrLength;\r\n if (this.cardSubType !== 'card-wide-v2') {\r\n cardWidth = this.cardSubType === 'standard' ? 245 :\r\n ((document.getElementsByClassName(this.cardSubType) &&\r\n document.getElementsByClassName(this.cardSubType)[0] !== undefined)\r\n ? document.getElementsByClassName(this.cardSubType)[0].clientWidth : 245);\r\n if (document.getElementById(`${this.id}`)) {\r\n const scrollerWidth = document.getElementById(`${this.id}`).clientWidth;\r\n const totalCardsLength = cardWidth * this.widgetsLength;\r\n if (totalCardsLength > scrollerWidth) {\r\n arrLength = Math.round(scrollerWidth / cardWidth);\r\n this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?\r\n this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets;\r\n arrLength = this.defaultMaxWidgets / arrLength;\r\n for (let i = 0; i < arrLength; i += 1) {\r\n this.bottomDotsArray.push(i);\r\n }\r\n }\r\n }\r\n } else {\r\n setTimeout(() => {\r\n this.bottomDotsArray = []\r\n arrLength = document.getElementsByClassName(this.cardSubType).length;\r\n for (let i = 0; i < arrLength; i += 1) {\r\n this.bottomDotsArray.push(i);\r\n }\r\n }, 1000);\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HorizontalScrollerV2Component } from './horizontal-scroller-v2.component';\r\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material';\r\n\r\n@NgModule({\r\n declarations: [HorizontalScrollerV2Component],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n exports: [HorizontalScrollerV2Component],\r\n})\r\nexport class HorizontalScrollerV2Module { }\r\n","export namespace NsContent {\r\n export interface IContinueLearningData extends IContent {\r\n continueData: any;\r\n }\r\n\r\n export interface IContinueLearningDataReq {\r\n request: {\r\n userId: string | undefined,\r\n courseId: string,\r\n contentIds: string[],\r\n batchId: string | undefined | null\r\n fields?: string[]\r\n };\r\n }\r\n\r\n export interface IContent {\r\n platform?: any;\r\n addedOn: string;\r\n appIcon: string;\r\n artifactUrl: string;\r\n averageRating?: any;\r\n // this will be used to content form enrollment user list\r\n batches?: any;\r\n batch?: any;\r\n body?: string;\r\n certificationList?: IRelatedContentMeta[];\r\n certificationStatus?: TCertificationStatus;\r\n certificationSubmissionDate?: string;\r\n certificationUrl: string;\r\n childNodes?: string[];\r\n children: IContent[];\r\n childrenClassifiers?: string[];\r\n clients?: IClient[];\r\n collections?: IContent[];\r\n completionPercentage?: number | null;\r\n completionStatus?: number;\r\n difficultyLevel: string;\r\n contentId: string;\r\n contentType: EContentTypes;\r\n contentUrlAtSource: string;\r\n creatorContacts: ICreator[];\r\n\r\n creatorDetails: ICreator[];\r\n creatorLogo: string;\r\n creatorPosterImage: string;\r\n creatorThumbnail: string;\r\n\r\n curatedTags: string[];\r\n description: string;\r\n displayContentType: EDisplayContentTypes; // For UI\r\n downloadUrl?: string;\r\n duration: number;\r\n enrolledDate?: string;\r\n exclusiveContent?: boolean;\r\n expiryDate?: string;\r\n equivalentCertifications?: IRelatedContentMeta[];\r\n hasAccess: boolean;\r\n hasAssessment?: string;\r\n idealScreenSize?: string;\r\n identifier: string;\r\n introductoryVideo?: string;\r\n introductoryVideoIcon?: string;\r\n learningTrack?: string;\r\n isExternal: boolean;\r\n isIframeSupported: 'Yes' | 'No' | 'Maybe';\r\n isInIntranet?: boolean;\r\n keywords?: string[];\r\n kArtifacts?: IRelatedContentMeta[];\r\n lastContentAccessTime?: string;\r\n lastUpdatedOn: string;\r\n learningMode?: TLearningMode;\r\n learningObjective: string;\r\n labels?: string[];\r\n locale?: string;\r\n hasTranslations?: { identifier: string; locale: string }[];\r\n isTranslationOf?: { identifier: string; locale: string }[];\r\n me_totalSessionsCount: number;\r\n mediaType: string;\r\n mimeType: EMimeTypes;\r\n msArtifactDetails?: IMSArtifactDetails;\r\n mode?: ETagType;\r\n name: string;\r\n nextCertificationAttemptDate?: string;\r\n playgroundInstructions?: string;\r\n playgroundResources?: IResourcePlayground[];\r\n postContents?: IPrePostContent[];\r\n posterImage?: string;\r\n preContents?: IPrePostContent[];\r\n preRequisites: string;\r\n price?: {\r\n currency: string\r\n value: number\r\n };\r\n primaryCategory: EPrimaryCategory;\r\n proctorUrl?: string;\r\n progress?: IMarkAsCompleteProgress;\r\n publishedOn: string;\r\n recentCertificationAttemptScore?: number;\r\n recommendationReasons?: string[];\r\n region?: string[];\r\n registrationUrl?: string;\r\n registrationInstructions?: string;\r\n resourceCategory?: string[];\r\n resourceType: string;\r\n size?: number;\r\n skills: ISkill[];\r\n softwareRequirements?: IResourceDetail[];\r\n sourceName: string;\r\n sourceShortName: string;\r\n sourceIconUrl?: string;\r\n sourceUrl?: string;\r\n ssoEnabled?: boolean;\r\n lastReadContentId?: string;\r\n status:\r\n | 'Draft'\r\n | 'InReview'\r\n | 'QualityReview'\r\n | 'Reviewed'\r\n | 'Processing'\r\n | 'Live'\r\n | 'Deleted'\r\n | 'MarkedForDeletion'\r\n | 'Expired';\r\n subTitle?: string;\r\n subTitles?: ISubtitle[];\r\n studyMaterials?: IRelatedContentMeta[];\r\n systemRequirements?: string[];\r\n tags: ITag[];\r\n topics: IContentTopic[];\r\n totalLikes?: { [key: string]: number };\r\n totalRating?: number;\r\n track: ITrack[];\r\n uniqueLearners?: number;\r\n viewCount?: { [key: string]: number };\r\n reason?: string; // required for Knowledge board\r\n trainingLHubCount?: number; // for LHub trainings\r\n verifiers?: {\r\n // required for External Certifications\r\n name: string\r\n email: string\r\n id: string\r\n }[];\r\n references?: { url: string; title: string }[];\r\n resumePage?: number; // For player WebModule in UI\r\n [key: string]: any;\r\n optionalReading: boolean;\r\n additionalTags?: string[];\r\n }\r\n\r\n export interface IContentResponse {\r\n id: string;\r\n params: any;\r\n responseCode: string;\r\n result: {\r\n content: IContent\r\n };\r\n ts: string;\r\n ver: string;\r\n }\r\n\r\n export interface IBatch {\r\n batchId: string;\r\n createdBy: string;\r\n endDate: string | null;\r\n enrollmentType: string;\r\n identifier: string;\r\n name: string;\r\n startDate: string;\r\n status: number;\r\n cert_templates?: null;\r\n collectionId: string;\r\n courseId: string;\r\n createdDate: string;\r\n createdFor: string[];\r\n description?: null;\r\n enrollmentEndDate: string | null;\r\n id: string;\r\n mentors?: string[] | null;\r\n tandc?: null;\r\n updatedDate?: string | null;\r\n }\r\n\r\n export interface IBatchListResponse {\r\n content?: IBatch[];\r\n count?: number;\r\n enrolled?: boolean;\r\n workFlow?: {\r\n wfInitiated?: boolean\r\n batch?: any\r\n wfItem?: any\r\n };\r\n }\r\n\r\n export interface ICourse {\r\n active: true;\r\n addedBy: string;\r\n batch: IBatch;\r\n batchId: string;\r\n certificates: [];\r\n collectionId: string;\r\n completedOn: string | null;\r\n completionPercentage: number | null;\r\n completionStatus?: number;\r\n content: IContent;\r\n contentId: string;\r\n contentStatus: any;\r\n courseId: string;\r\n courseLogoUrl: string;\r\n courseName: string;\r\n dateTime: number;\r\n description: string;\r\n enrolledDate: string;\r\n issuedCertificates: [];\r\n lastContentAccessTime?: string;\r\n lastReadContentId?: string;\r\n lastReadContentStatus: string | null;\r\n leafNodesCount: number;\r\n progress: number;\r\n status: number;\r\n userId: string;\r\n }\r\n\r\n export interface IContentMinimal {\r\n appIcon: string;\r\n artifactUrl: string;\r\n difficultyLevel: string;\r\n contentType: EContentTypes;\r\n description: string;\r\n displayContentType?: EDisplayContentTypes;\r\n duration: number;\r\n identifier: string;\r\n hasAccess?: boolean;\r\n isInIntranet?: boolean;\r\n learningMode?: TLearningMode;\r\n mimeType: EMimeTypes;\r\n name: string;\r\n creatorDetails: ICreator[];\r\n creatorContacts: ICreator[];\r\n posterImage: string;\r\n primaryCategory: EPrimaryCategory;\r\n resourceType?: string;\r\n totalRating?: number;\r\n }\r\n\r\n export interface ICollectionHierarchyResponse {\r\n data: IContent;\r\n hasMore: boolean;\r\n totalContents: number;\r\n }\r\n\r\n export interface IRelatedContentMeta {\r\n identifier: string;\r\n name: string;\r\n }\r\n\r\n type TCertificationStatus = 'ongoing' | 'passed' | 'canAttempt' | 'cannotAttempt';\r\n export type TLearningMode = 'Self-Paced' | 'Instructor-Led' | 'Open' | 'Closed';\r\n\r\n interface IMarkAsCompleteProgress {\r\n progressStatus: 'open' | 'started' | 'completed';\r\n showMarkAsComplete: boolean;\r\n markAsCompleteReason: string;\r\n progressSupported: boolean;\r\n progress: number | null;\r\n }\r\n\r\n interface ITag {\r\n id: string;\r\n type: string;\r\n value: string;\r\n }\r\n interface IMSArtifactDetails {\r\n channelId: string;\r\n videoId: string;\r\n }\r\n interface IClient {\r\n displayName: string;\r\n id: string;\r\n name: string;\r\n }\r\n interface ISubtitle {\r\n srclang: string;\r\n label: string;\r\n url: string;\r\n }\r\n interface IPrePostContent {\r\n identifier: string;\r\n name: string;\r\n }\r\n interface IResourceDetail {\r\n title?: string;\r\n url?: string;\r\n }\r\n interface IResourcePlayground {\r\n appIcon: string;\r\n artifactUrl: string;\r\n identifier: string;\r\n name: string;\r\n }\r\n interface ITrack {\r\n id: string;\r\n name: string;\r\n status: string;\r\n visibility: string;\r\n }\r\n interface ISkill {\r\n id: string;\r\n category: string;\r\n skill: string;\r\n name: string;\r\n }\r\n export interface ICreator {\r\n id: string;\r\n name: string;\r\n email: string;\r\n }\r\n export interface IContentTopic {\r\n identifier: string;\r\n name: string;\r\n }\r\n // API Based\r\n\r\n export interface IContact {\r\n id: string;\r\n name: string;\r\n email: string;\r\n }\r\n\r\n export interface IViewerContinueLearningRequest {\r\n resourceId: string;\r\n contextPathId: string;\r\n data: string;\r\n dateAccessed: number;\r\n contextType?: string;\r\n }\r\n /**\r\n * @deprecated Enum EContentTypes should not be used in future\r\n */\r\n export enum EContentTypes {\r\n PROGRAMV2 = 'Program',\r\n PROGRAM = 'Learning Path',\r\n CHANNEL = 'Channel',\r\n COURSE = 'Course',\r\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n MODULE = 'CourseUnit',\r\n RESOURCE = 'Resource',\r\n }\r\n export enum EPrimaryCategory {\r\n PROGRAM = 'Program',\r\n COURSE = 'Course',\r\n MODULE = 'Course Unit',\r\n RESOURCE = 'Learning Resource',\r\n GOALS = 'GOALS',\r\n PLAYLIST = 'PLAYLIST',\r\n PRACTICE_RESOURCE = 'Practice Question Set',\r\n FINAL_ASSESSMENT = 'Course Assessment',\r\n COMP_ASSESSMENT = 'Competency Assessment',\r\n FTB_QUESTION = 'FTB Question',\r\n MTF_QUESTION = 'MTF Question',\r\n MULTIPLE_CHOICE_QUESTION = 'Multiple Choice Question',\r\n SINGLE_CHOICE_QUESTION = 'Single Choice Question',\r\n MANDATORY_COURSE_GOAL = 'Mandatory Course Goal',\r\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\r\n BLENDED_PROGRAM = 'Blended Program',\r\n OFFLINE_SESSION = 'Offline Session',\r\n CURATED_PROGRAM = 'Curated Program',\r\n // following will not be available soon\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n CHANNEL = 'Channel',\r\n }\r\n\r\n export enum ECourseCategory {\r\n INVITE_ONLY_PROGRAM = 'Invite-Only Program',\r\n MODERATED_PROGRAM = 'Moderated Program',\r\n BLENDED_PROGRAM = 'Blended Program',\r\n CURATED_PROGRAM = 'Curated Program',\r\n COURSE = 'Course',\r\n MODERATED_COURSE = 'Moderated Course',\r\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\r\n MODERATED_ASSESSEMENT = 'Moderated Assessment',\r\n }\r\n\r\n export enum WFBlendedProgramStatus {\r\n INITIATE = 'INITIATE',\r\n SEND_FOR_MDO_APPROVAL = 'SEND_FOR_MDO_APPROVAL',\r\n SEND_FOR_PC_APPROVAL = 'SEND_FOR_PC_APPROVAL',\r\n APPROVED = 'APPROVED',\r\n REJECTED = 'REJECTED',\r\n WITHDRAWN = 'WITHDRAWN',\r\n REMOVED = 'REMOVED',\r\n WITHDRAW = 'WITHDRAW',\r\n }\r\n export enum WFBlendedProgramApprovalTypes {\r\n ONE_STEP_PC = 'oneStepPCApproval',\r\n ONE_STEP_MDO = 'oneStepMDOApproval',\r\n TWO_STEP_MDO_PC = 'twoStepMDOAndPCApproval',\r\n TWO_STEP_PC_MDO = 'twoStepPCAndMDOApproval',\r\n }\r\n\r\n export const WFSTATUS_MSG_MAPPING: any = {\r\n INITIATE: '',\r\n SEND_FOR_MDO_APPROVAL: 'BatchEnrollL1Msg',\r\n SEND_FOR_PC_APPROVAL: 'BatchEnrollL2Msg',\r\n APPROVED: 'BatchEnrollApprovedMsg',\r\n REJECTED: 'BatchEnrollRejectedMsg',\r\n WITHDRAWN: 'BatchEnrollWithdrawMsg',\r\n REMOVED: 'BatchEnrollRemoveMsg',\r\n EXPIRED: 'BatchListExpiredMsg',\r\n };\r\n\r\n export enum EResourcePrimaryCategories {\r\n LEARNING_RESOURCE = 'Learning Resource',\r\n PRACTICE_RESOURCE = 'Practice Question Set',\r\n FINAL_ASSESSMENT = 'Course Assessment',\r\n COMP_ASSESSMENT = 'Competency Assessment',\r\n OFFLINE_SESSION = 'Offline Session',\r\n }\r\n\r\n export enum EMiscPlayerSupportedCollectionTypes {\r\n PLAYLIST = 'Playlist',\r\n }\r\n export const PLAYER_SUPPORTED_COLLECTION_TYPES: string[] = [\r\n EPrimaryCategory.COURSE,\r\n EPrimaryCategory.MODULE,\r\n EPrimaryCategory.PROGRAM,\r\n EPrimaryCategory.CURATED_PROGRAM,\r\n EPrimaryCategory.BLENDED_PROGRAM,\r\n EPrimaryCategory.STANDALONE_ASSESSMENT,\r\n EMiscPlayerSupportedCollectionTypes.PLAYLIST,\r\n ];\r\n export const KB_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\r\n EPrimaryCategory.COURSE,\r\n EPrimaryCategory.MODULE,\r\n EPrimaryCategory.PROGRAM,\r\n EPrimaryCategory.RESOURCE,\r\n ];\r\n export const PLAYLIST_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\r\n EPrimaryCategory.COURSE,\r\n EPrimaryCategory.MODULE,\r\n EPrimaryCategory.PROGRAM,\r\n EPrimaryCategory.RESOURCE,\r\n ];\r\n export enum EMimeTypes {\r\n COLLECTION = 'application/vnd.ekstep.content-collection',\r\n ZIP = 'application/vnd.ekstep.html-archive',\r\n ZIP2 = 'application/vnd.ekstep.ecml-archive',\r\n HTML = 'application/html',\r\n HTML_TEXT = 'text/html',\r\n ILP_FP = 'application/ilpfp',\r\n IAP = 'application/iap-assessment',\r\n M4A = 'audio/m4a',\r\n MP3 = 'audio/mpeg',\r\n MP4 = 'video/mp4',\r\n M3U8 = 'application/x-mpegURL',\r\n INTERACTION = 'video/interactive',\r\n PDF = 'application/pdf',\r\n QUIZ = 'application/quiz',\r\n DRAG_DROP = 'application/drag-drop',\r\n HTML_PICKER = 'application/htmlpicker',\r\n WEB_MODULE = 'application/web-module',\r\n WEB_MODULE_EXERCISE = 'application/web-module-exercise',\r\n YOUTUBE = 'video/x-youtube',\r\n HANDS_ON = 'application/integrated-hands-on',\r\n RDBMS_HANDS_ON = 'application/rdbms',\r\n CLASS_DIAGRAM = 'application/class-diagram',\r\n CHANNEL = 'application/channel',\r\n COLLECTION_RESOURCE = 'resource/collection',\r\n APPLICATION_JSON = 'application/json',\r\n PRACTICE_RESOURCE = 'application/vnd.sunbird.questionset',\r\n FINAL_ASSESSMENT = 'application/vnd.sunbird.questionset',\r\n OFFLINE_SESSION = 'application/offline',\r\n // Added on UI Only\r\n CERTIFICATION = 'application/certification',\r\n PLAYLIST = 'application/playlist',\r\n TEXT_WEB = 'text/x-url',\r\n SURVEY = 'application/survey',\r\n QUESTION_SET = 'application/vnd.sunbird.questionset',\r\n QUESTION = 'application/vnd.sunbird.question',\r\n UNKNOWN = 'application/unknown',\r\n }\r\n export enum EDisplayContentTypes {\r\n ASSESSMENT = 'ASSESSMENT',\r\n STANDALONE_ASSESSMENT = 'STANDALONE ASSESSMENT',\r\n PRACTICE_RESOURCE = 'Practice Question Set',\r\n FINAL_ASSESSMENT = 'Course Assessment',\r\n AUDIO = 'AUDIO',\r\n CERTIFICATION = 'CERTIFICATION',\r\n CHANNEL = 'Channel',\r\n CLASS_DIAGRAM = 'CLASS_DIAGRAM',\r\n COURSE = 'COURSE',\r\n DEFAULT = 'DEFAULT',\r\n DRAG_DROP = 'DRAG_DROP',\r\n EXTERNAL_CERTIFICATION = 'EXTERNAL_CERTIFICATION',\r\n EXTERNAL_COURSE = 'EXTERNAL_COURSE',\r\n GOALS = 'GOALS',\r\n HANDS_ON = 'HANDS_ON',\r\n IAP = 'IAP',\r\n INSTRUCTOR_LED = 'INSTRUCTOR_LED',\r\n INTERACTIVE_VIDEO = 'INTERACTIVE_VIDEO',\r\n KNOWLEDGE_ARTIFACT = 'KNOWLEDGE_ARTIFACT',\r\n MODULE = 'MODULE',\r\n PDF = 'PDF',\r\n SURVEY = 'SURVEY',\r\n PLAYLIST = 'PLAYLIST',\r\n PROGRAM = 'PROGRAM',\r\n QUIZ = 'QUIZ',\r\n RESOURCE = 'RESOURCE',\r\n RDBMS_HANDS_ON = 'RDBMS_HANDS_ON',\r\n VIDEO = 'VIDEO',\r\n WEB_MODULE = 'WEB_MODULE',\r\n WEB_PAGE = 'WEB_PAGE',\r\n YOUTUBE = 'YOUTUBE',\r\n LINK = 'LINK',\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n BLENDED_PROGRAM = 'BLENDED PROGRAM',\r\n CURATED_PROGRAM = 'CURATED PROGRAM',\r\n }\r\n // for UI\r\n export enum EFilterCategory {\r\n ALL = 'ALL',\r\n LEARN = 'LEARN',\r\n PRACTICE = 'PRACTICE',\r\n ASSESS = 'ASSESS',\r\n }\r\n\r\n // for UI\r\n export enum ETagType {\r\n NEWLY_ADDED = 'NEWLY ADDED',\r\n }\r\n\r\n export const UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS: string[] = [\r\n // this is comment now for enabling links in the toc page for enrolled users\r\n // EMimeTypes.QUIZ,\r\n // EMimeTypes.APPLICATION_JSON,\r\n // EMimeTypes.WEB_MODULE_EXERCISE,\r\n\r\n ];\r\n export const PUBLIC_SUPPORTED_CONTENT_TYPES: EMimeTypes[] = [\r\n EMimeTypes.APPLICATION_JSON,\r\n EMimeTypes.FINAL_ASSESSMENT,\r\n EMimeTypes.HTML,\r\n EMimeTypes.HTML_TEXT,\r\n EMimeTypes.ZIP,\r\n EMimeTypes.ZIP2,\r\n EMimeTypes.M4A,\r\n EMimeTypes.MP3,\r\n EMimeTypes.MP4,\r\n EMimeTypes.PDF,\r\n EMimeTypes.YOUTUBE,\r\n EMimeTypes.TEXT_WEB,\r\n EMimeTypes.SURVEY,\r\n ];\r\n}\r\n","import { NsContent } from '../_models/widget-content.model';\r\n\r\nexport const VIEWER_ROUTE_FROM_MIME = (mimeType: NsContent.EMimeTypes) => {\r\n switch (mimeType) {\r\n case NsContent.EMimeTypes.MP3:\r\n return 'audio';\r\n case NsContent.EMimeTypes.M4A:\r\n return 'audio-native';\r\n case NsContent.EMimeTypes.COLLECTION:\r\n return 'html';\r\n case NsContent.EMimeTypes.CHANNEL:\r\n // case 'application/json' as any:\r\n // return 'channel'\r\n case NsContent.EMimeTypes.CERTIFICATION:\r\n return 'certification';\r\n case NsContent.EMimeTypes.HTML_TEXT:\r\n case NsContent.EMimeTypes.HTML:\r\n case NsContent.EMimeTypes.ZIP:\r\n if (window.location.href.includes('mobile/html')) {\r\n return 'mobile/html';\r\n }\r\n return 'html';\r\n case NsContent.EMimeTypes.TEXT_WEB:\r\n return 'youtube';\r\n case NsContent.EMimeTypes.SURVEY:\r\n return 'survey';\r\n case NsContent.EMimeTypes.IAP:\r\n return 'iap';\r\n case NsContent.EMimeTypes.ILP_FP:\r\n return 'ilp-fp';\r\n case NsContent.EMimeTypes.PDF:\r\n return 'pdf';\r\n case NsContent.EMimeTypes.MP4:\r\n case NsContent.EMimeTypes.M3U8:\r\n return 'video';\r\n case NsContent.EMimeTypes.YOUTUBE:\r\n return 'youtube';\r\n // return 'html'\r\n case NsContent.EMimeTypes.WEB_MODULE:\r\n return 'web-module';\r\n case NsContent.EMimeTypes.WEB_MODULE_EXERCISE:\r\n return 'web-module';\r\n case NsContent.EMimeTypes.CLASS_DIAGRAM:\r\n return 'class-diagram';\r\n case NsContent.EMimeTypes.HANDS_ON:\r\n return 'hands-on';\r\n case NsContent.EMimeTypes.RDBMS_HANDS_ON:\r\n return 'rdbms-hands-on';\r\n case NsContent.EMimeTypes.HTML_PICKER:\r\n return 'html-picker';\r\n case NsContent.EMimeTypes.QUIZ:\r\n case NsContent.EMimeTypes.APPLICATION_JSON:\r\n return 'quiz';\r\n case NsContent.EMimeTypes.PRACTICE_RESOURCE:\r\n return 'practice';\r\n case NsContent.EMimeTypes.COLLECTION_RESOURCE:\r\n return 'resource-collection';\r\n case NsContent.EMimeTypes.OFFLINE_SESSION:\r\n return 'offline-session';\r\n default:\r\n return 'html';\r\n }\r\n};\r\n\r\nexport function viewerRouteGenerator(\r\n id: string,\r\n mimeType: NsContent.EMimeTypes,\r\n collectionId?: string,\r\n collectionType?: string,\r\n forPreview = false,\r\n primaryCategory?: string,\r\n batchId?: string,\r\n courseName?: string,\r\n): { url: string; queryParams: { [key: string]: any } } {\r\n let collId = collectionId;\r\n let collType = collectionType;\r\n if (collType && !NsContent.PLAYER_SUPPORTED_COLLECTION_TYPES.includes(collType)) {\r\n collId = undefined;\r\n collType = undefined;\r\n }\r\n const url = `/viewer/${VIEWER_ROUTE_FROM_MIME(mimeType)}/${id}`;\r\n // tslint:disable-next-line\r\n // console.log(url,'========>Route from MIME TYPE<==========')\r\n const forcreator = window.location.href.includes('editMode=true');\r\n let queryParams = {};\r\n if (primaryCategory) {\r\n queryParams = {\r\n primaryCategory,\r\n };\r\n }\r\n if (collectionId && collectionType) {\r\n queryParams = { ...queryParams, collectionId: collId, collectionType: collType };\r\n }\r\n if (batchId) {\r\n queryParams = { ...queryParams, batchId };\r\n }\r\n if (courseName) {\r\n queryParams = { ...queryParams, courseName };\r\n }\r\n if (forPreview) {\r\n queryParams = { ...queryParams, preview: true };\r\n }\r\n if (forcreator) {\r\n queryParams = { ...queryParams, editMode: true };\r\n }\r\n return {\r\n queryParams,\r\n url,\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ConfigurationsService } from '@sunbird-cb/utils-v2';\r\nimport { Observable, of, EMPTY, BehaviorSubject, Subject } from 'rxjs';\r\nimport { catchError, retry, map, shareReplay } from 'rxjs/operators';\r\nimport { NsContentStripMultiple } from '../_models/content-strip-multiple.model';\r\nimport { NsContent } from '../_models/widget-content.model';\r\nimport { NSSearch } from '../_models/widget-search.model';\r\n// tslint:disable\r\nimport * as _ from 'lodash'\r\nimport { viewerRouteGenerator } from './viewer-route-util'\r\nimport * as moment_ from 'moment';\r\nconst moment = moment_;\r\n// tslint:enable\r\n\r\n// TODO: move this in some common place\r\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\r\n\r\nconst API_END_POINTS = {\r\n CONTENT: `${PROTECTED_SLAG_V8}/content`,\r\n AUTHORING_CONTENT: `/api/course/v1/hierarchy`,\r\n CONTENT_LIKES: `${PROTECTED_SLAG_V8}/content/likeCount`,\r\n SET_S3_COOKIE: `${PROTECTED_SLAG_V8}/content/setCookie`,\r\n SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8}/content/setImageCookie`,\r\n FETCH_MANIFEST: `${PROTECTED_SLAG_V8}/content/getWebModuleManifest`,\r\n FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8}/content/getWebModuleFiles`,\r\n MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8}/content/multiple`,\r\n CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8}/content/searchV5`,\r\n CONTENT_SEARCH_V6: `/apis/proxies/v8/sunbirdigot/search`,\r\n TRENDING_CONTENT_SEARCH: `apis/proxies/v8/trending/content/search`,\r\n CONTENT_SEARCH_RELATED_CBP_V6: `/apis/proxies/v8/sunbirdigot/search`,\r\n CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8}/content/searchRegionRecommendation`,\r\n CONTENT_HISTORY: `${PROTECTED_SLAG_V8}/user/history`,\r\n CONTENT_HISTORYV2: `/apis/proxies/v8/read/content-progres`,\r\n COURSE_BATCH_LIST: `/apis/proxies/v8/learner/course/v1/batch/list`,\r\n COURSE_BATCH: `/apis/proxies/v8/course/v1/batch/read`,\r\n AUTO_ASSIGN_BATCH: `/apis/protected/v8/cohorts/user/autoenrollment/`,\r\n AUTO_ASSIGN_CURATED_BATCH: `/apis/proxies/v8/curatedprogram/v1/enrol`,\r\n AUTO_ASSIGN_OPEN_PROGRAM: `/apis/proxies/v8/openprogram/v1/enrol`,\r\n USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8}/user/history/continue`,\r\n CONTENT_RATING: `${PROTECTED_SLAG_V8}/user/rating`,\r\n COLLECTION_HIERARCHY: (type: string, id: string) =>\r\n `${PROTECTED_SLAG_V8}/content/collection/${type}/${id}`,\r\n REGISTRATION_STATUS: `${PROTECTED_SLAG_V8}/admin/userRegistration/checkUserRegistrationContent`,\r\n MARK_AS_COMPLETE_META: (contentId: string) => `${PROTECTED_SLAG_V8}/user/progress/${contentId}`,\r\n ENROLL_BATCH: `/apis/proxies/v8/learner/course/v1/enrol`,\r\n ENROLL_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/enrol`,\r\n WITHDRAW_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/unenrol`,\r\n BLENDED_USER_WF: `/apis/proxies/v8/workflow/blendedprogram/user/search`,\r\n BLENDED_USER_COUNT: `apis/proxies/v8/workflow/blendedprogram/enrol/status/count`,\r\n CERT_ADD_TEMPLATE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/template/add`,\r\n CERT_ISSUE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/issue`,\r\n CERT_DOWNLOAD: (certId: any) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,\r\n READ_KARMAPOINTS: `/apis/proxies/v8/karmapoints/read`,\r\n CONTENT_READ: (contentId: any) => `/apis/proxies/v8/action/content/v3/read/${contentId}`,\r\n READ_COURSE_KARMAPOINTS: '/apis/proxies/v8/karmapoints/user/course/read',\r\n CLAIM_KARMAPOINTS: '/apis/proxies/v8/claimkarmapoints',\r\n USER_KARMA_POINTS: '/apis/proxies/v8/user/totalkarmapoints',\r\n AGGREGATION_SEARCH: '/apis/proxies/v8/content/aggregation/search',\r\n FEATURE_SEARCH: '/apis/proxies/v8/featured/content/search',\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WidgetContentService {\r\n constructor(\r\n private http: HttpClient,\r\n private configSvc: ConfigurationsService,\r\n ) {\r\n }\r\n\r\n tocConfigData: any = new BehaviorSubject<any>({});\r\n tocConfigData$ = this.tocConfigData.asObservable();\r\n\r\n private telemetryData: any = new Subject<any>()\r\n public telemetryData$ = this.telemetryData.asObservable()\r\n currentMetaData!: NsContent.IContent;\r\n currentContentReadMetaData!: NsContent.IContent;\r\n currentBatchEnrollmentList!: NsContent.ICourse[];\r\n programChildCourseResumeData = new BehaviorSubject<any>({});\r\n programChildCourseResumeData$ = this.programChildCourseResumeData.asObservable();\r\n\r\n changeTelemetryData(message: string) {\r\n this.telemetryData.next(message);\r\n }\r\n isResource(primaryCategory: string) {\r\n if (primaryCategory) {\r\n const isResource = (primaryCategory === NsContent.EResourcePrimaryCategories.LEARNING_RESOURCE) ||\r\n (primaryCategory === NsContent.EResourcePrimaryCategories.PRACTICE_RESOURCE) ||\r\n (primaryCategory === NsContent.EResourcePrimaryCategories.FINAL_ASSESSMENT) ||\r\n (primaryCategory === NsContent.EResourcePrimaryCategories.COMP_ASSESSMENT) ||\r\n (primaryCategory === NsContent.EResourcePrimaryCategories.OFFLINE_SESSION);\r\n return isResource;\r\n }\r\n return false;\r\n }\r\n\r\n fetchMarkAsCompleteMeta(identifier: string): Promise<any> {\r\n // tslint:disable-next-line\r\n const url = API_END_POINTS.MARK_AS_COMPLETE_META(identifier)\r\n // return this.http.get(url).toPromise()\r\n if (url) { }\r\n return of().toPromise();\r\n }\r\n\r\n updateTocConfig(data: any) {\r\n this.tocConfigData.next(data);\r\n }\r\n\r\n fetchContent(\r\n contentId: string,\r\n hierarchyType: 'all' | 'minimal' | 'detail' = 'detail',\r\n _additionalFields: string[] = [],\r\n primaryCategory?: string | null,\r\n ): Observable<NsContent.IContent> {\r\n // const url = `${API_END_POINTS.CONTENT}/${contentId}?hierarchyType=${hierarchyType}`\r\n let url = '';\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\r\n if (primaryCategory && this.isResource(primaryCategory)) {\r\n if (!forPreview) {\r\n url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;\r\n } else {\r\n url = `/api/content/v1/read/${contentId}`;\r\n }\r\n } else {\r\n if (!forPreview) {\r\n url = `/apis/proxies/v8/action/content/v3/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\r\n } else {\r\n const forcreator = window.location.href.includes('editMode=true');\r\n if (forcreator) {\r\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\r\n } else {\r\n url = `/api/course/v1/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\r\n }\r\n }\r\n }\r\n // return this.http\r\n // .post<NsContent.IContent>(url, { additionalFields })\r\n // .pipe(retry(1))\r\n return this.http\r\n .get<NsContent.IContent>(url)\r\n .pipe(shareReplay(1));\r\n // if (apiData && apiData.result) {\r\n // return apiData.result.content\r\n // }\r\n }\r\n fetchAuthoringContent(contentId: string): Observable<NsContent.IContent> {\r\n const forcreator = window.location.href.includes('editMode=true');\r\n let url = '';\r\n if (forcreator) {\r\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\r\n } else {\r\n url = `${API_END_POINTS.AUTHORING_CONTENT}/${contentId}?hierarchyType=detail`;\r\n }\r\n return this.http.get<NsContent.IContent>(url).pipe(shareReplay(1), r => r);\r\n }\r\n fetchMultipleContent(ids: string[]): Observable<NsContent.IContent[]> {\r\n return this.http.get<NsContent.IContent[]>(\r\n `${API_END_POINTS.MULTIPLE_CONTENT}/${ids.join(',')}`,\r\n );\r\n }\r\n fetchCollectionHierarchy(type: string, id: string, pageNumber: number = 0, pageSize: number = 1) {\r\n return this.http.get<NsContent.ICollectionHierarchyResponse>(\r\n `${API_END_POINTS.COLLECTION_HIERARCHY(\r\n type,\r\n id,\r\n )}?pageNumber=${pageNumber}&pageSize=${pageSize}`,\r\n );\r\n }\r\n\r\n fetchBlendedCourse() {\r\n\r\n }\r\n\r\n fetchCourseBatches(req: any): Observable<NsContent.IBatchListResponse> {\r\n return this.http\r\n .post<NsContent.IBatchListResponse>(API_END_POINTS.COURSE_BATCH_LIST, req)\r\n .pipe(\r\n retry(1),\r\n map(\r\n (data: any) => data.result.response\r\n )\r\n );\r\n }\r\n\r\n // fetch individual batch\r\n fetchCourseBatch(batchId: string): Observable<NsContent.IContinueLearningData> {\r\n return this.http.get<NsContent.IContinueLearningData>(\r\n `${API_END_POINTS.COURSE_BATCH}/${batchId}`,\r\n );\r\n }\r\n\r\n autoAssignBatchApi(identifier: any): Observable<NsContent.IBatchListResponse> {\r\n return this.http.get<NsContent.IBatchListResponse>(`${API_END_POINTS.AUTO_ASSIGN_BATCH}${identifier}`)\r\n .pipe(\r\n retry(1),\r\n map(\r\n (data: any) => data.result.response\r\n )\r\n );\r\n }\r\n\r\n autoAssignCuratedBatchApi(request: any, programType: any): Observable<NsContent.IBatchListResponse> {\r\n const url = programType === NsContent.ECourseCategory.MODERATED_PROGRAM ?\r\n API_END_POINTS.AUTO_ASSIGN_OPEN_PROGRAM : API_END_POINTS.AUTO_ASSIGN_CURATED_BATCH;\r\n return this.http.post<NsContent.IBatchListResponse>(`${url}`, request)\r\n .pipe(\r\n retry(1),\r\n map(\r\n (data: any) => data.result.response\r\n )\r\n );\r\n }\r\n\r\n enrollUserToBatch(req: any) {\r\n return this.http\r\n .post(API_END_POINTS.ENROLL_BATCH, req)\r\n .toPromise();\r\n }\r\n\r\n enrollAndUnenrollUserToBatchWF(req: any, type: any) {\r\n const url: any = type === 'WITHDRAW' ? API_END_POINTS.WITHDRAW_BATCH_WF : API_END_POINTS.ENROLL_BATCH_WF;\r\n return this.http\r\n .post(url, req)\r\n .toPromise();\r\n }\r\n\r\n fetchBlendedUserWF(req: any) {\r\n return this.http\r\n .post(API_END_POINTS.BLENDED_USER_WF, req)\r\n .toPromise();\r\n }\r\n\r\n fetchBlendedUserCOUNT(req: any) {\r\n return this.http\r\n .post(API_END_POINTS.BLENDED_USER_COUNT, req)\r\n .toPromise();\r\n }\r\n\r\n fetchContentLikes(contentIds: { content_id: string[] }) {\r\n return this.http\r\n .post<{ [identifier: string]: number }>(API_END_POINTS.CONTENT_LIKES, contentIds)\r\n .toPromise();\r\n }\r\n fetchContentRatings(contentIds: { contentIds: string[] }) {\r\n if (contentIds) { }\r\n // return this.http\r\n // .post(`${API_END_POINTS.CONTENT_RATING}/rating`, contentIds)\r\n // .toPromise()\r\n return of().toPromise();\r\n }\r\n\r\n fetchContentHistory(contentId: string): Observable<NsContent.IContinueLearningData> {\r\n return this.http.get<NsContent.IContinueLearningData>(\r\n `${API_END_POINTS.CONTENT_HISTORY}/${contentId}`,\r\n );\r\n }\r\n\r\n fetchContentHistoryV2(req: NsContent.IContinueLearningDataReq): Observable<NsContent.IContinueLearningData> {\r\n req.request.fields = ['progressdetails'];\r\n const data = this.http.post<NsContent.IContinueLearningData>(\r\n `${API_END_POINTS.CONTENT_HISTORYV2}/${req.request.courseId}`, req\r\n );\r\n data.subscribe((subscribeData: any) => {\r\n this.programChildCourseResumeData.next({ resumeData: subscribeData.result.contentList, courseId: req.request.courseId });\r\n });\r\n return data;\r\n }\r\n\r\n async continueLearning(id: string, collectionId?: string, collectionType?: string): Promise<any> {\r\n return new Promise(async resolve => {\r\n if (collectionType &&\r\n collectionType.toLowerCase() === 'playlist') {\r\n const reqBody = {\r\n contextPathId: collectionId ? collectionId : id,\r\n resourceId: id,\r\n data: JSON.stringify({\r\n timestamp: Date.now(),\r\n contextFullPath: [collectionId, id],\r\n }),\r\n dateAccessed: Date.now(),\r\n contextType: 'playlist',\r\n };\r\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\r\n resolve(true);\r\n }\r\n );\r\n } else {\r\n const reqBody = {\r\n contextPathId: collectionId ? collectionId : id,\r\n resourceId: id,\r\n data: JSON.stringify({ timestamp: Date.now() }),\r\n dateAccessed: Date.now(),\r\n };\r\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\r\n resolve(true);\r\n });\r\n }\r\n });\r\n }\r\n saveContinueLearning(content: NsContent.IViewerContinueLearningRequest): Observable<any> {\r\n // const url = API_END_POINTS.USER_CONTINUE_LEARNING\r\n // return this.http.post<any>(url, content)\r\n if (content) {\r\n\r\n }\r\n return of() as any;\r\n }\r\n\r\n setS3Cookie(\r\n _contentId: string,\r\n // _path: string,\r\n ): Observable<any> {\r\n // return this.http\r\n // .post(API_END_POINTS.SET_S3_COOKIE, { contentId })\r\n // .pipe(catchError(_err => of(true)))\r\n\r\n return EMPTY;\r\n }\r\n\r\n setS3ImageCookie(): Observable<any> {\r\n return this.http.post(API_END_POINTS.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)));\r\n }\r\n\r\n fetchManifest(url: string): Observable<any> {\r\n return this.http.post(API_END_POINTS.FETCH_MANIFEST, { url });\r\n }\r\n fetchWebModuleContent(url: string): Observable<any> {\r\n return this.http.get(`${API_END_POINTS.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`);\r\n }\r\n search(req: NSSearch.ISearchRequest): Observable<NSSearch.ISearchApiResult> {\r\n req.query = req.query || '';\r\n return this.http.post<NSSearch.ISearchApiResult>(API_END_POINTS.CONTENT_SEARCH_V5, {\r\n request: req,\r\n });\r\n }\r\n searchRegionRecommendation(\r\n req: NSSearch.ISearchOrgRegionRecommendationRequest,\r\n ): Observable<NsContentStripMultiple.IContentStripResponseApi> {\r\n req.query = req.query || '';\r\n req.preLabelValue =\r\n (req.preLabelValue || '') +\r\n ((this.configSvc.userProfile && this.configSvc.userProfile.country) || '');\r\n req.filters = {\r\n ...req.filters,\r\n labels: [req.preLabelValue || ''],\r\n };\r\n return this.http.post<NsContentStripMultiple.IContentStripResponseApi>(\r\n API_END_POINTS.CONTENT_SEARCH_REGION_RECOMMENDATION,\r\n { request: req },\r\n );\r\n }\r\n searchV6(req: NSSearch.ISearchV6Request): Observable<NSSearch.ISearchV6ApiResultV2> {\r\n const apiPath = _.get(req, 'api.path');\r\n req.query = req.query || '';\r\n if (apiPath) {\r\n return this.http.get<NSSearch.ISearchV6ApiResultV2>(apiPath);\r\n }\r\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_V6, req);\r\n }\r\n\r\n searchRelatedCBPV6(req: NSSearch.ISearchV6RequestV2): Observable<NSSearch.ISearchV6ApiResultV2> {\r\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_RELATED_CBP_V6, req);\r\n }\r\n\r\n fetchContentRating(contentId: string): Observable<{ rating: number }> {\r\n return this.http.get<{ rating: number }>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\r\n }\r\n deleteContentRating(contentId: string): Observable<any> {\r\n return this.http.delete(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\r\n }\r\n addContentRating(contentId: string, data: { rating: number }): Observable<any> {\r\n return this.http.post<any>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`, data);\r\n }\r\n\r\n getFirstChildInHierarchy(content: NsContent.IContent): NsContent.IContent {\r\n if (!(content.children || []).length) {\r\n return content;\r\n }\r\n if (\r\n (content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM &&\r\n !(content.artifactUrl && content.artifactUrl.length)) ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.MANDATORY_COURSE_GOAL ||\r\n (content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM &&\r\n !(content.artifactUrl && content.artifactUrl.length)) ||\r\n (content.primaryCategory === NsContent.EPrimaryCategory.MODULE &&\r\n !(content.artifactUrl && content.artifactUrl.length))\r\n ) {\r\n const child = content.children[0];\r\n return this.getFirstChildInHierarchy(child);\r\n }\r\n if (\r\n content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION\r\n ) {\r\n return content;\r\n }\r\n const firstChild = content.children[0];\r\n const resultContent = this.getFirstChildInHierarchy(firstChild);\r\n return resultContent;\r\n }\r\n\r\n getRegistrationStatus(source: string): Promise<{ hasAccess: boolean; registrationUrl?: string }> {\r\n return this.http.get<any>(`${API_END_POINTS.REGISTRATION_STATUS}/${source}`).toPromise();\r\n }\r\n\r\n fetchConfig(url: string) {\r\n return this.http.get<any>(url);\r\n }\r\n\r\n addCertTemplate(body: any) {\r\n return this.http.patch<any>(`${API_END_POINTS.CERT_ADD_TEMPLATE}`, body);\r\n }\r\n\r\n issueCert(body: any) {\r\n return this.http.post<any>(`${API_END_POINTS.CERT_ISSUE}`, body);\r\n }\r\n downloadCert(certId: any) {\r\n return this.http.get<any>(`${API_END_POINTS.CERT_DOWNLOAD(certId)}`);\r\n }\r\n\r\n trendingContentSearch(req: any): Observable<any> {\r\n req.query = req.query || '';\r\n return this.http.post<any>(API_END_POINTS.TRENDING_CONTENT_SEARCH, req);\r\n }\r\n\r\n getKarmaPoitns(limit: number, offset: any) {\r\n return this.http.post(API_END_POINTS.READ_KARMAPOINTS, { limit, offset }).pipe(catchError(_err => of(true)));\r\n }\r\n fetchProgramContent(contentId: string[]): Observable<NsContent.IContent[]> {\r\n let url = '';\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\r\n if (!forPreview) {\r\n return this.http.get<NsContent.IContent[]>(\r\n API_END_POINTS.CONTENT_READ(contentId),\r\n );\r\n }\r\n url = `/api/content/v1/read/${contentId}`;\r\n return this.http.get<NsContent.IContent[]>(url);\r\n // return this.http.get<NsContent.IContent[]>(API_END_POINTS.CONTENT_READ(contentId))\r\n }\r\n\r\n getCourseKarmaPoints(request: any) {\r\n return this.http.post<any>(API_END_POINTS.READ_COURSE_KARMAPOINTS, request);\r\n }\r\n\r\n claimKarmapoints(request: any) {\r\n return this.http.post<any>(API_END_POINTS.CLAIM_KARMAPOINTS, request);\r\n }\r\n\r\n userKarmaPoints() {\r\n return this.http.post<any>(API_END_POINTS.USER_KARMA_POINTS, {});\r\n }\r\n\r\n getEnrolledData(doId: string) {\r\n const enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}');\r\n const enrolledCourseData = enrollmentMapData[doId];\r\n return enrolledCourseData;\r\n }\r\n\r\n async getResourseLink(content: any) {\r\n const enrolledCourseData: any = this.getEnrolledData(content.identifier);\r\n if (enrolledCourseData) {\r\n if (enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.BLENDED_PROGRAM ||\r\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.INVITE_ONLY_PROGRAM ||\r\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.MODERATED_PROGRAM ||\r\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\r\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM) {\r\n if (!this.isBatchInProgress(enrolledCourseData.batch)) {\r\n return this.gotoTocPage(content);\r\n }\r\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\r\n return data;\r\n } {\r\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\r\n return data;\r\n }\r\n\r\n }\r\n return this.gotoTocPage(content);\r\n\r\n }\r\n async checkForDataToFormUrl(content: any, enrollData: any) {\r\n let urlData: any;\r\n if (enrollData.completionPercentage === 100) {\r\n return this.gotoTocPage(enrollData);\r\n }\r\n if (enrollData.lrcProgressDetails && enrollData.lrcProgressDetails.mimeType) {\r\n const modifyEnrollData = {\r\n ...enrollData,\r\n identifier: enrollData.collectionId,\r\n primaryCategory: enrollData.content.primaryCategory,\r\n name: enrollData.content.name,\r\n };\r\n if (modifyEnrollData.lastReadContentId) {\r\n return this.getResourseDataWithData(modifyEnrollData,\r\n enrollData.lastReadContentId, enrollData.lrcProgressDetails.mimeType);\r\n }\r\n if (modifyEnrollData.firstChildId) {\r\n return this.getResourseDataWithData(modifyEnrollData,\r\n enrollData.firstChildId,\r\n enrollData.lrcProgressDetails.mimeType);\r\n }\r\n }\r\n if (enrollData.firstChildId || enrollData.lastReadContentId) {\r\n const doId = enrollData.firstChildId || enrollData.lastReadContentId;\r\n const responseData = await this.fetchProgramContent(doId).toPromise().then(async (res: any) => {\r\n if (res && res.result && res.result.content) {\r\n const contentData: any = res.result.content;\r\n const modifyEnrollData = {\r\n ...enrollData,\r\n identifier: enrollData.collectionId,\r\n primaryCategory: enrollData.content.primaryCategory,\r\n name: enrollData.content.name,\r\n };\r\n urlData = this.getResourseDataWithData(modifyEnrollData, contentData.identifier, contentData.mimeType);\r\n if (urlData) {\r\n return urlData;\r\n }\r\n }\r\n });\r\n return responseData ? responseData : this.gotoTocPage(content);\r\n }\r\n return this.gotoTocPage(content);\r\n\r\n }\r\n\r\n getResourseDataWithData(content: any, resourseId: any, mimeType: any) {\r\n if (content) {\r\n const url = viewerRouteGenerator(\r\n resourseId,\r\n mimeType,\r\n content.identifier,\r\n 'Course',\r\n false,\r\n 'Learning Resource',\r\n content.batchId,\r\n content.name,\r\n );\r\n return url;\r\n }\r\n return this.gotoTocPage(content);\r\n }\r\n gotoTocPage(content: any) {\r\n const urlData: any = {\r\n url: `/app/toc/${content.identifier ? content.identifier : content.collectionId}/overview`,\r\n queryParams: { batchId: content.batchId },\r\n };\r\n if (content.endDate) {\r\n urlData.queryParams = { ...urlData.queryParams, planType: 'cbPlan', endDate: content.endDate };\r\n }\r\n return urlData;\r\n }\r\n isBatchInProgress(batchData: any) {\r\n // if (this.content && this.content['batches']) {\r\n // const batches = this.content['batches'] as NsContent.IBatch\r\n if (batchData && batchData.endDate) {\r\n const now = moment().format('YYYY-MM-DD');\r\n const startDate = moment(batchData.startDate).format('YYYY-MM-DD');\r\n const endDate = batchData.endDate ? moment(batchData.endDate).format('YYYY-MM-DD') : now;\r\n return (\r\n // batch.status &&\r\n moment(startDate).isSameOrBefore(now)\r\n && moment(endDate).isSameOrAfter(now)\r\n );\r\n } return true;\r\n }\r\n postApiMethod(apiUrl: any, req: any): Observable<NsContent.IContent> {\r\n return this.http.post<NsContent.IContent>(apiUrl, req);\r\n }\r\n getApiMethod(apiUrl: any): Observable<NsContent.IContent> {\r\n // req.query = req.query || '';\r\n return this.http.get<NsContent.IContent>(apiUrl);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\r\nimport { IPortalUrls, IUserPreference, NsAppsConfig, NsInstanceConfig, NsPage, NsUser } from '@sunbird-cb/utils-v2';\r\nimport { NSProfileDataV3 } from '../_models/profile-v3.models';\r\n// const instanceConfigPath: string | null = window.location.host\r\n// const locationHost: string | null = window.location.host\r\n\r\n// if (!environment.production && Boolean(environment.sitePath)) {\r\n// locationHost = environment.sitePath\r\n// instanceConfigPath = environment.sitePath\r\n// }\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfigurationsService {\r\n // update as the single source of truth\r\n constructor() {\r\n // @Inject('env') env: any\r\n // if (!env.production && Boolean(env.sitePath)) {\r\n // locationHost = env.sitePath\r\n // instanceConfigPath = env.sitePath\r\n // }\r\n }\r\n appSetup = true;\r\n // The url the user tried to access while landing in the app before accepting tnc\r\n userUrl = '';\r\n baseUrl = `assets/configurations`;\r\n sitePath = `assets/configurations`;\r\n hostPath = (window.location.host).replace(':', '_');\r\n\r\n userRoles: Set<string> | null = null;\r\n userGroups: Set<string> | null = null;\r\n restrictedFeatures: Set<string> | null = null;\r\n restrictedWidgets: Set<string> | null = null;\r\n instanceConfig: NsInstanceConfig.IConfig | null = null;\r\n appsConfig: NsAppsConfig.IAppsConfig | null = null;\r\n rootOrg: string | null = null;\r\n courseContentPath?: string;\r\n org: string[] | null = null;\r\n activeOrg: string | null = '';\r\n isProduction = false;\r\n hasAcceptedTnc = false;\r\n profileDetailsStatus = false;\r\n isActive = true;\r\n userPreference: IUserPreference | null = null;\r\n userProfile: NsUser.IUserProfile | null = null;\r\n userProfileV2: NsUser.IUserProfile | null = null;\r\n nodebbUserProfile: NsUser.INodebbUserProfile | null = null;\r\n // created to store complete user details sent by pid\r\n unMappedUser: any;\r\n isAuthenticated = false;\r\n isNewUser = false;\r\n portalUrls: IPortalUrls | undefined;\r\n positions: any;\r\n overrideThemeChanges: any;\r\n profileTimelyNudges: any;\r\n\r\n // pinnedApps\r\n pinnedApps = new BehaviorSubject<Set<string>>(new Set());\r\n\r\n // Notifier\r\n prefChangeNotifier = new ReplaySubject<Partial<IUserPreference>>(1);\r\n tourGuideNotifier = new ReplaySubject<boolean>();\r\n authChangeNotifier = new ReplaySubject<boolean>(1);\r\n\r\n private updateProfile = new BehaviorSubject(false);\r\n updateProfileObservable = this.updateProfile.asObservable();\r\n\r\n updateTourGuide = new BehaviorSubject(true);\r\n updateTourGuideObservable = this.updateTourGuide.asObservable();\r\n\r\n // platform rating\r\n updatePlatformRating = new BehaviorSubject({ bottom: '120px' });\r\n updatePlatformRatingObservable$ = this.updatePlatformRating.asObservable();\r\n\r\n languageTranslationFlag = new Subject();\r\n\r\n // Preference Related Values\r\n activeThemeObject: NsInstanceConfig.ITheme | null = null;\r\n activeFontObject: NsInstanceConfig.IFontSize | null = null;\r\n isDarkMode = false;\r\n isIntranetAllowed = false;\r\n isRTL = false;\r\n activeLocale: NsInstanceConfig.ILocalsConfig | null = null;\r\n activeLocaleGroup = '';\r\n completedActivity: string[] | null = null;\r\n completedTour = false;\r\n profileSettings = ['profilePicture', 'learningTime', 'learningPoints'];\r\n\r\n primaryNavBar: Partial<NsPage.INavBackground> = {\r\n color: 'primary',\r\n };\r\n pageNavBar: Partial<NsPage.INavBackground> = {\r\n color: 'primary',\r\n };\r\n primaryNavBarConfig: NsInstanceConfig.IPrimaryNavbarConfig | null = null;\r\n /* for temp Fix */\r\n // setBaseUrl = (sitePath: string) => `assets/configurations/${(sitePath).replace(':', '_')}`\r\n // setSitePath = (sitePath: string) => `assets/configurations/${(sitePath).replace(\r\n // ':',\r\n // '_',\r\n // )}`\r\n // setHostPath = (sitePath: string) => (sitePath).replace(':', '_')\r\n welcomeTabs: NSProfileDataV3.IProfileTab | null = null;\r\n\r\n // variable setting for csJwtToken\r\n cstoken = '';\r\n\r\n changeNavBarFullView = new Subject();\r\n openExploreMenuForMWeb = new Subject();\r\n updateGlobalProfile(state: boolean) {\r\n this.updateProfile.next(state);\r\n }\r\n updateTourGuideMethod(state: boolean) {\r\n this.updateTourGuide.next(state);\r\n }\r\n\r\n updatePlatformRatingMethod(state: any) {\r\n this.updatePlatformRating.next(state);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ConfigurationsService } from './configurations.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MultilingualTranslationsService {\r\n selectedLang = '';\r\n // website lang change\r\n languageSelected = new BehaviorSubject(true);\r\n languageSelectedObservable = this.languageSelected.asObservable();\r\n editProfileDetails = '/apis/proxies/v8/user/v1/extPatch';\r\n\r\n constructor(private translate: TranslateService, private http: HttpClient, private configSvc: ConfigurationsService) {\r\n // this.getLanguage()\r\n }\r\n\r\n getLanguage() {\r\n if (this.configSvc.unMappedUser) {\r\n if (this.configSvc.unMappedUser.profileDetails &&\r\n this.configSvc.unMappedUser.profileDetails.additionalProperties &&\r\n this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang) {\r\n const lang = this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang;\r\n this.translate.use(lang);\r\n localStorage.setItem('websiteLanguage', lang);\r\n } else {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n // this.translate.setDefaultLang('en')\r\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\r\n lang = lang.replace(/\\\"/g, '');\r\n this.translate.use(lang);\r\n } else {\r\n this.translate.setDefaultLang('en');\r\n localStorage.setItem('websiteLanguage', 'en');\r\n }\r\n }\r\n } else {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n // this.translate.setDefaultLang('en')\r\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\r\n lang = lang.replace(/\\\"/g, '');\r\n this.translate.use(lang);\r\n }\r\n }\r\n }\r\n\r\n translateLabelWithoutspace(label: string, type: any, subtype: any) {\r\n let nlabel = label;\r\n nlabel = nlabel && nlabel.replace(/\\s/g, '');\r\n if (subtype) {\r\n // tslint:disable-next-line: prefer-template\r\n const translationKey = type + '.' + nlabel + subtype;\r\n return this.translate.instant(translationKey);\r\n }\r\n // tslint:disable-next-line: prefer-template\r\n const translationKeyn = type + '.' + nlabel;\r\n return this.translate.instant(translationKeyn);\r\n }\r\n\r\n translateLabel(label: string, type: any, subtype: any) {\r\n if(label) {\r\n let nlabel = label;\r\n \r\n \r\n nlabel = nlabel && nlabel.toLowerCase() ;\r\n const sl = nlabel.split(' ');\r\n sl.forEach((w: any, index: any) => {\r\n if (index !== 0) {\r\n sl[index] = w[0].toUpperCase() + w.slice(1);\r\n }\r\n });\r\n nlabel = sl.join('');\r\n nlabel = nlabel.replace(/\\s/g, '');\r\n if (subtype) {\r\n // tslint:disable-next-line: prefer-template\r\n const translationKey = type + '.' + nlabel + subtype;\r\n return this.translate.instant(translationKey);\r\n }\r\n // tslint:disable-next-line: prefer-template\r\n const translationKeyn = type + '.' + nlabel;\r\n return this.translate.instant(translationKeyn);\r\n } \r\n return label\r\n }\r\n\r\n translateActualLabel(label: string, type: any, subtype: any) {\r\n let nlabel = label;\r\n const sl = nlabel.split(' ');\r\n sl.forEach((w: any, index: any) => {\r\n if (index !== 0) {\r\n sl[index] = w[0].toUpperCase() + w.slice(1);\r\n }\r\n });\r\n nlabel = sl.join('');\r\n nlabel = nlabel.replace(/\\s/g, '');\r\n if (subtype) {\r\n // tslint:disable-next-line: prefer-template\r\n const translationKey = type + '.' + nlabel + subtype;\r\n return this.translate.instant(translationKey);\r\n }\r\n // tslint:disable-next-line: prefer-template\r\n const translationKeyn = type + '.' + nlabel;\r\n return this.translate.instant(translationKeyn);\r\n }\r\n\r\n editProfileDetailsAPI(data: any) {\r\n return this.http.post<any>(this.editProfileDetails, data);\r\n }\r\n\r\n updatelanguageSelected(state: any, lang: any, userid: any) {\r\n this.languageSelected.next(state);\r\n this.translate.use(lang);\r\n this.selectedLang = lang;\r\n\r\n if (userid) {\r\n const reqUpdates = {\r\n request: {\r\n userId: userid,\r\n profileDetails: {\r\n additionalProperties: {\r\n webPortalLang: this.selectedLang,\r\n },\r\n },\r\n },\r\n };\r\n this.editProfileDetailsAPI(reqUpdates).subscribe();\r\n }\r\n }\r\n}\r\n","import { NsContent } from './widget-content.model';\r\n\r\nexport namespace NsCardContent {\r\n export interface ICard {\r\n content: NsContent.IContent;\r\n cardSubType: TCardSubType;\r\n context: { pageSection: string; position?: number };\r\n intranetMode?: 'greyOut' | 'hide';\r\n deletedMode?: 'greyOut' | 'hide';\r\n likes?: number;\r\n contentTags?: IContentTags;\r\n stateData: any;\r\n }\r\n\r\n export interface IContentTags {\r\n daysSpan?: number;\r\n excludeContentType?: NsContent.EContentTypes[];\r\n excludeMimeType?: string[];\r\n tag: string;\r\n criteriaField?: string;\r\n }\r\n\r\n export interface ICompetency extends ICard {\r\n competencyArea: '';\r\n competencyObject: {};\r\n }\r\n\r\n export type TCardSubType =\r\n | 'standard'\r\n | 'minimal'\r\n | 'space-saving'\r\n | 'card-user-details'\r\n | 'basic-info'\r\n | 'basic-details'\r\n | 'card-description-back'\r\n | 'network-card';\r\n\r\n export enum EContentStatus {\r\n LIVE = 'Live',\r\n EXPIRED = 'Expired',\r\n DELETED = 'Deleted',\r\n MARK_FOR_DELETION = 'MarkedForDeletion',\r\n }\r\n\r\n export enum ACBPConst {\r\n UPCOMING = 'upcoming',\r\n ALL = 'All',\r\n OVERDUE = 'overdue',\r\n SUCCESS = 'success',\r\n }\r\n\r\n export enum IGOTConst {\r\n COMPETENCIES = 'competencies_v5',\r\n RETIRED = 'Retired',\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { IUserGroupDetails } from '../_models/widget-user.model';\r\nimport { NsContent } from '../_models/widget-content.model';\r\nimport 'rxjs/add/observable/of'\r\nimport * as dayjs_ from 'dayjs';\r\nconst dayjs = dayjs_\r\n// import { environment } from 'src/environments/environment'\r\nimport { NsCardContent } from '../_models/card-content-v2.model';\r\nimport * as lodash from 'lodash';\r\n\r\n\r\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\r\nconst API_END_POINTS = {\r\n FETCH_USER_GROUPS: (userId: string) =>\r\n `${PROTECTED_SLAG_V8}/user/group/fetchUserGroup?userId=${userId}`,\r\n FETCH_CPB_PLANS: `/apis/proxies/v8/user/v1/cbplan`,\r\n FETCH_USER_ENROLLMENT_LIST: (userId: string | undefined) =>\r\n // tslint:disable-next-line: max-line-length\r\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`,\r\n FETCH_USER_ENROLLMENT_LIST_PROFILE: (userId: string | undefined) =>\r\n // tslint:disable-next-line: max-line-length\r\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`,\r\n // tslint:disable-next-line: max-line-length\r\n FETCH_USER_ENROLLMENT_LIST_V2: (userId: string | undefined, orgdetails: string, licenseDetails: string, fields: string, batchDetails: string) =>\r\n // tslint:disable-next-line: max-line-length\r\n `apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=${orgdetails}&licenseDetails=${licenseDetails}&fields=${fields},courseCategory,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=${batchDetails}`,\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WidgetUserService {\r\n environment: any;\r\n constructor(\r\n @Inject('environment') environment: any,\r\n private http: HttpClient) {\r\n this.environment = environment;\r\n }\r\n\r\n handleError(error: ErrorEvent) {\r\n let errorMessage = ''\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = `Error: ${error.error.message}`\r\n }\r\n return throwError(errorMessage)\r\n }\r\n\r\n fetchUserGroupDetails(userId: string): Observable<IUserGroupDetails[]> {\r\n return this.http\r\n .get<IUserGroupDetails[]>(API_END_POINTS.FETCH_USER_GROUPS(userId))\r\n .pipe(catchError(this.handleError))\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n fetchUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\r\n let path = ''\r\n if (queryParams) {\r\n // tslint:disable-next-line: max-line-length\r\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails)\r\n } else {\r\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST(userId)\r\n }\r\n const headers = new HttpHeaders({\r\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\r\n Pragma: 'no-cache',\r\n Expires: '0',\r\n })\r\n if (this.checkStorageData('enrollmentService', 'enrollmentData')) {\r\n const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\r\n (data: any) => {\r\n\r\n const coursesData: any = []\r\n if (data && data.result && data.result.courses) {\r\n data.result.courses.forEach((content: any) => {\r\n if (content.contentStatus) {\r\n delete content.contentStatus\r\n }\r\n coursesData.push(content)\r\n })\r\n this.storeUserEnrollmentInfo(data.result.userCourseEnrolmentInfo,\r\n data.result.courses.length)\r\n data.result.courses = coursesData\r\n if (data.result.courses.length < 200) {\r\n localStorage.removeItem('enrollmentData')\r\n this.setTime('enrollmentService')\r\n localStorage.setItem('enrollmentData', JSON.stringify(data.result))\r\n this.mapEnrollmentData(data.result)\r\n return data.result\r\n }\r\n }\r\n this.mapEnrollmentData(data.result)\r\n return data.result\r\n }\r\n )\r\n )\r\n return result\r\n }\r\n return this.getData('enrollmentData')\r\n\r\n }\r\n\r\n // tslint:disable-next-line: max-line-length\r\n fetchProfileUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\r\n let path = ''\r\n if (queryParams) {\r\n // tslint:disable-next-line: max-line-length\r\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails)\r\n } else {\r\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_PROFILE(userId)\r\n }\r\n const headers = new HttpHeaders({\r\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\r\n Pragma: 'no-cache',\r\n Expires: '0',\r\n })\r\n return this.http\r\n .get(path, { headers })\r\n .pipe(\r\n catchError(this.handleError),\r\n map(\r\n (data: any) => data.result\r\n )\r\n )\r\n // if (this.checkStorageData('enrollmentService')) {\r\n // const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\r\n // (data: any) => {\r\n // localStorage.setItem('enrollmentData', JSON.stringify(data.result))\r\n // this.mapEnrollmentData(data.result)\r\n // return data.result\r\n // }\r\n // )\r\n // )\r\n // this.setTime('enrollmentService')\r\n // return result\r\n // }\r\n // return this.getData('enrollmentData')\r\n }\r\n\r\n checkStorageData(key: any, dataKey: any) {\r\n const checkTime = localStorage.getItem('timeCheck')\r\n if (checkTime) {\r\n const parsedData = JSON.parse(checkTime)\r\n if (parsedData[key]) {\r\n const date = dayjs()\r\n const diffMin = date.diff(parsedData[key], 'minute')\r\n const timeCheck = this.environment.apiCache || 0\r\n if (diffMin >= timeCheck) {\r\n return true\r\n }\r\n return localStorage.getItem(dataKey) ? false : true\r\n }\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n getData(key: any): Observable<any> {\r\n return Observable.of(JSON.parse(localStorage.getItem(key) || '{}'))\r\n }\r\n getSavedData(key: any): Observable<any> {\r\n return JSON.parse(localStorage.getItem(key) || '')\r\n }\r\n\r\n setTime(key: any) {\r\n const checkTime = localStorage.getItem('timeCheck')\r\n if (checkTime) {\r\n const parsedData = JSON.parse(checkTime)\r\n parsedData[key] = new Date().getTime()\r\n localStorage.setItem('timeCheck', JSON.stringify(parsedData))\r\n } else {\r\n const data: any = {}\r\n data[key] = new Date().getTime()\r\n localStorage.setItem('timeCheck', JSON.stringify(data))\r\n }\r\n }\r\n\r\n resetTime(key: any) {\r\n const checkTime = localStorage.getItem('timeCheck')\r\n if (checkTime) {\r\n const parsedData = JSON.parse(checkTime)\r\n if (parsedData[key]) {\r\n delete parsedData[key]\r\n localStorage.setItem('timeCheck', JSON.stringify(parsedData))\r\n }\r\n }\r\n }\r\n\r\n fetchCbpPlanList() {\r\n\r\n // let data = JSON.parse(localStorage.getItem('cbpData')|| '')\r\n // if(!data) {\r\n // this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\r\n // (data: any) => {\r\n // const courseData = this.mapData(data.result)\r\n // return courseData\r\n // }\r\n // )\r\n // )\r\n // } else {\r\n // return this.getData('cbpData')\r\n\r\n // }\r\n if (this.checkStorageData('cbpService', 'cbpData')) {\r\n const result: any = this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\r\n async (data: any) => {\r\n return await this.mapData(data.result)\r\n }\r\n )\r\n )\r\n this.setTime('cbpService')\r\n return result\r\n }\r\n return this.getData('cbpData')\r\n }\r\n\r\n async mapData(data: any) {\r\n const contentNew: any = []\r\n const todayDate = dayjs().format('YYYY-MM-DD')\r\n\r\n const enrollList: any = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\r\n\r\n if (data && data.count) {\r\n data.content.forEach((c: any) => {\r\n c.contentList.forEach((childData: any) => {\r\n const childEnrollData = enrollList[childData.identifier]\r\n const endDate = dayjs(c.endDate).format('YYYY-MM-DD')\r\n const daysCount = dayjs(endDate).diff(todayDate, 'day')\r\n childData['planDuration'] = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29\r\n ? NsCardContent.ACBPConst.SUCCESS : NsCardContent.ACBPConst.UPCOMING\r\n childData['endDate'] = c.endDate\r\n childData['parentId'] = c.id\r\n childData['planType'] = 'cbPlan'\r\n if (childData.status !== NsCardContent.IGOTConst.RETIRED) {\r\n contentNew.push(childData)\r\n } else {\r\n if (childEnrollData && childEnrollData.status === 2) {\r\n contentNew.push(childData)\r\n }\r\n }\r\n\r\n const competencyArea: any = []\r\n const competencyTheme: any = []\r\n const competencyThemeType: any = []\r\n const competencySubTheme: any = []\r\n const competencyAreaId: any = []\r\n const competencyThemeId: any = []\r\n const competencySubThemeId: any = []\r\n childData['contentStatus'] = 0\r\n if (childEnrollData) {\r\n childData['contentStatus'] = childEnrollData.status\r\n }\r\n if (childData.competencies_v5) {\r\n childData.competencies_v5.forEach((element: any) => {\r\n if (!competencyArea.includes(element.competencyArea)) {\r\n competencyArea.push(element.competencyArea)\r\n competencyAreaId.push(element.competencyAreaId)\r\n }\r\n if (!competencyTheme.includes(element.competencyTheme)) {\r\n competencyTheme.push(element.competencyTheme)\r\n competencyThemeId.push(element.competencyThemeId)\r\n }\r\n if (!competencyThemeType.includes(element.competencyThemeType)) {\r\n competencyThemeType.push(element.competencyThemeType)\r\n }\r\n if (!competencySubTheme.includes(element.competencySubTheme)) {\r\n competencySubTheme.push(element.competencySubTheme)\r\n competencySubThemeId.push(element.competencySubThemeId)\r\n }\r\n })\r\n }\r\n\r\n childData['competencyArea'] = competencyArea\r\n childData['competencyTheme'] = competencyTheme\r\n childData['competencyThemeType'] = competencyThemeType\r\n childData['competencySubTheme'] = competencySubTheme\r\n childData['competencyAreaId'] = competencyAreaId\r\n childData['competencyThemeId'] = competencyThemeId\r\n childData['competencySubThemeId'] = competencySubThemeId\r\n })\r\n })\r\n if (contentNew.length > 1) {\r\n const sortedData: any = contentNew.sort((a: any, b: any) => {\r\n const firstDate: any = new Date(a.endDate)\r\n const secondDate: any = new Date(b.endDate)\r\n\r\n return secondDate > firstDate ? 1 : -1\r\n })\r\n const uniqueUsersByID = lodash.uniqBy(sortedData, 'identifier')\r\n const sortedByEndDate = lodash.orderBy(uniqueUsersByID, ['endDate'], ['asc'])\r\n const sortedByStatus = lodash.orderBy(sortedByEndDate, ['contentStatus'], ['asc'])\r\n localStorage.setItem('cbpData', JSON.stringify(sortedByStatus))\r\n return sortedByStatus\r\n }\r\n localStorage.setItem('cbpData', JSON.stringify(contentNew))\r\n return contentNew\r\n }\r\n localStorage.setItem('cbpData', JSON.stringify([]))\r\n return []\r\n }\r\n\r\n mapEnrollmentData(courseData: any) {\r\n const enrollData: any = {}\r\n if (courseData && courseData.courses.length) {\r\n courseData.courses.forEach((data: any) => {\r\n enrollData[data.collectionId] = data\r\n })\r\n }\r\n localStorage.removeItem('enrollmentMapData')\r\n localStorage.setItem('enrollmentMapData', JSON.stringify(enrollData))\r\n }\r\n storeUserEnrollmentInfo(enrollmentData: any, enrolledCourseCount: number) {\r\n const userData = {\r\n enrolledCourseCount,\r\n userCourseEnrolmentInfo: enrollmentData,\r\n }\r\n localStorage.removeItem('userEnrollmentCount')\r\n localStorage.setItem('userEnrollmentCount', JSON.stringify(userData))\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\r\nimport { NsContentStripWithTabs } from './content-strip-with-tabs-lib.model';\r\n// import { HttpClient } from '@angular/common/http'\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { NsContent } from '../../_models/widget-content.model';\r\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\r\nimport {\r\n TFetchStatus,\r\n LoggerService,\r\n EventService,\r\n ConfigurationsService,\r\n UtilityService,\r\n WsEvents,\r\n} from '@sunbird-cb/utils-v2';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { WidgetUserService } from '../../_services/widget-user.service';\r\n// import { environment } from 'src/environments/environment'\r\n// tslint:disable-next-line\r\nimport * as _ from 'lodash'\r\nimport { MatTabChangeEvent } from '@angular/material';\r\nimport { NsCardContent } from '../../_models/card-content-v2.model';\r\nimport { ITodayEvents } from '../../_models/event';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Router } from '@angular/router';\r\n\r\ninterface IStripUnitContentData {\r\n key: string;\r\n canHideStrip: boolean;\r\n mode?: string;\r\n showStrip: boolean;\r\n disableTranslate: boolean;\r\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\r\n stripTitle: string;\r\n stripTitleLink?: {\r\n link: {\r\n queryParams: string\r\n },\r\n icon: string,\r\n queryParams: string\r\n };\r\n sliderConfig?: {\r\n showNavs: boolean,\r\n showDots: boolean,\r\n maxWidgets?: number\r\n cerificateCardMargin?: boolean\r\n };\r\n stripConfig: any;\r\n tabsType?: string;\r\n tabs?: NsContentStripWithTabs.IContentStripTab[] | undefined;\r\n stripName?: string;\r\n stripLogo?: string;\r\n description?: string;\r\n stripInfo?: NsContentStripWithTabs.IStripInfo;\r\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n showOnNoData: boolean;\r\n showOnLoader: boolean;\r\n showOnError: boolean;\r\n loaderWidgets?: any;\r\n stripBackground?: string;\r\n secondaryHeading?: any;\r\n viewMoreUrl: any;\r\n request?: any\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'sb-uic-content-strip-with-tabs',\r\n templateUrl: './content-strip-with-tabs-lib.component.html',\r\n styleUrls: ['./content-strip-with-tabs-lib.component.scss'],\r\n})\r\nexport class ContentStripWithTabsLibComponent extends WidgetBaseComponent\r\n implements\r\n OnInit,\r\n OnDestroy,\r\n NsWidgetResolver.IWidgetData<NsContentStripWithTabs.IContentStripMultiple> {\r\n @Input() widgetData!: NsContentStripWithTabs.IContentStripMultiple;\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n @Output() viewAllResponse = new EventEmitter<any>()\r\n @Output() telemtryResponse = new EventEmitter<any>()\r\n @Input() providerId: any = ''\r\n @Input() emitViewAll: boolean = false\r\n @Input() channnelName: any = ''\r\n @HostBinding('id')\r\n public id = `ws-strip-miltiple_${Math.random()}`;\r\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\r\n stripsKeyOrder: string[] = [];\r\n showAccordionData = true;\r\n showParentLoader = false;\r\n showParentError = false;\r\n showParentNoData = false;\r\n errorDataCount = 0;\r\n noDataCount = 0;\r\n successDataCount = 0;\r\n contentAvailable = true;\r\n baseUrl = this.configSvc.sitePath || '';\r\n veifiedKarmayogi = false;\r\n environment!: any;\r\n changeEventSubscription: Subscription | null = null;\r\n defaultMaxWidgets = 12;\r\n enrollInterval: any;\r\n todaysEvents: any = [];\r\n enrollmentMapData: any\r\n\r\n constructor(\r\n // private contentStripSvc: ContentStripNewMultipleService,\r\n @Inject('environment') environment: any,\r\n private contentSvc: WidgetContentService,\r\n private loggerSvc: LoggerService,\r\n private eventSvc: EventService,\r\n private configSvc: ConfigurationsService,\r\n public utilitySvc: UtilityService,\r\n // private http: HttpClient,\r\n // private searchServSvc: SearchServService,\r\n public router: Router,\r\n private userSvc: WidgetUserService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService\r\n ) {\r\n super();\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en');\r\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\r\n lang = lang.replace(/\\\"/g, '');\r\n this.translate.use(lang);\r\n }\r\n this.environment = environment\r\n }\r\n\r\n ngOnInit() {\r\n // const url = window.location.href\r\n this.initData();\r\n this.contentSvc.telemetryData$.subscribe((data: any) => {\r\n this.telemtryResponse.emit(data)\r\n })\r\n\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.changeEventSubscription) {\r\n this.changeEventSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n showAccordion(key: string) {\r\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\r\n return this.showAccordionData;\r\n }\r\n return true;\r\n }\r\n\r\n setHiddenForStrip(key: string) {\r\n this.stripsResultDataMap[key].showStrip = false;\r\n sessionStorage.setItem(`cstrip_${key}`, '1');\r\n }\r\n private getIfStripHidden(key: string): boolean {\r\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\r\n return Boolean(storageItem !== '1');\r\n }\r\n\r\n private initData() {\r\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\r\n if (this.widgetData.loader && this.widgetData.strips.length) {\r\n this.showParentLoader = true;\r\n }\r\n // Fetch the data\r\n for (const strip of this.widgetData.strips) {\r\n if (this.checkForEmptyWidget(strip)) {\r\n this.fetchStripFromRequestData(strip, false);\r\n } else {\r\n this.processStrip(strip, [], 'done', true, null);\r\n }\r\n }\r\n // Subscription for changes\r\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\r\n .map(strip => ({\r\n key: strip.key,\r\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\r\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\r\n }))\r\n .filter(({ key, type, from }) => key && type && from);\r\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\r\n this.changeEventSubscription = this.eventSvc.events$\r\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\r\n .subscribe(event => {\r\n keyAndEvent\r\n .filter(e => e.type === event.eventType && e.from === event.from)\r\n .map(e => e.key)\r\n .forEach(k => this.fetchStripFromKey(k, false));\r\n });\r\n }\r\n\r\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\r\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\r\n if (stripData) {\r\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\r\n }\r\n }\r\n\r\n isStripShowing(data: any) {\r\n let count = 0;\r\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\r\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\r\n data.widgets.forEach((key: any) => {\r\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\r\n count = count + 1;\r\n }\r\n });\r\n if (count > 0) {\r\n data.showStrip = true;\r\n } else {\r\n data.showStrip = false;\r\n }\r\n }\r\n // console.log('data.key', data, data.key, data.widgets);\r\n return data.showStrip;\r\n }\r\n\r\n get isMobile() {\r\n return this.utilitySvc.isMobile || false;\r\n }\r\n\r\n getdata(data: IStripUnitContentData) {\r\n if (data.stripInfo) {\r\n return data.stripInfo.widget;\r\n }\r\n return {};\r\n\r\n }\r\n checkCondition(wData: NsContentStripWithTabs.IContentStripMultiple, data: IStripUnitContentData) {\r\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\r\n return !wData.strips[0].stripConfig.hideShowAll;\r\n }\r\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\r\n }\r\n checkVisible(data: IStripUnitContentData) {\r\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\r\n }\r\n\r\n getContineuLearningLenth(data: IStripUnitContentData) {\r\n return data.widgets ? data.widgets.length : 0;\r\n }\r\n getLength(data: IStripUnitContentData) {\r\n if (!data.tabs || !data.tabs.length) {\r\n return data.widgets ? data.widgets.length : 0;\r\n } {\r\n // if tabs are there check if each tab has widgets and get the tab with max widgets\r\n const tabWithMaxWidgets = data.tabs.reduce(\r\n (prev, current) => {\r\n if (!prev.widgets && !current.widgets) {\r\n return current;\r\n }\r\n if (prev.widgets && current.widgets) {\r\n return (prev.widgets.length > current.widgets.length) ? prev : current;\r\n }\r\n if (current.widgets && !prev.widgets) {\r\n return current;\r\n }\r\n if (!current.widgets && prev.widgets) {\r\n return prev;\r\n }\r\n return current;\r\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\r\n // tslint:disable-next-line: align\r\n }, data.tabs[0]);\r\n // if tabs has atleast 1 widgets then strip will show or else not\r\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\r\n }\r\n }\r\n\r\n private getFiltersFromArray(v6filters: any) {\r\n const filters: any = {};\r\n if (v6filters.constructor === Array) {\r\n v6filters.forEach(((f: any) => {\r\n Object.keys(f).forEach(key => {\r\n filters[key] = f[key];\r\n });\r\n }));\r\n return filters;\r\n }\r\n return v6filters;\r\n }\r\n\r\n private transformSearchV6FiltersV2(v6filters: any) {\r\n const filters: any = {};\r\n if (v6filters.constructor === Array) {\r\n v6filters.forEach(((f: any) => {\r\n Object.keys(f).forEach(key => {\r\n filters[key] = f[key];\r\n });\r\n }));\r\n return filters;\r\n }\r\n return v6filters;\r\n }\r\n\r\n checkForDateFilters(filters: any) {\r\n let userData: any;\r\n if (this.configSvc.userProfile) {\r\n userData = this.configSvc.userProfile;\r\n }\r\n\r\n if (filters && filters.hasOwnProperty('batches.endDate')) {\r\n // tslint:disable-next-line\r\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\r\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\r\n // tslint:disable-next-line\r\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\r\n } else if (filters.organisation &&\r\n filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n if (this.providerId) {\r\n filters.organisation = this.providerId;\r\n } else {\r\n filters.organisation = userData && userData.rootOrgId;\r\n\r\n if (filters && filters.hasOwnProperty('designation')) {\r\n filters.designation = userData.professionalDetails.length > 0 ?\r\n userData.professionalDetails[0].designation : '';\r\n }\r\n }\r\n\r\n }\r\n return filters;\r\n }\r\n\r\n private fetchStripFromRequestData(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n calculateParentStatus = true,\r\n ) {\r\n // setting initial values\r\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\r\n this.processStrip(strip, [], 'fetching', false, null);\r\n this.fetchFromEnrollmentList(strip, calculateParentStatus);\r\n this.fetchFromSearchV6(strip, calculateParentStatus);\r\n this.fetchFromTrendingContent(strip, calculateParentStatus);\r\n this.fetchAllCbpPlans(strip, calculateParentStatus);\r\n this.fetchAllTopContent(strip, calculateParentStatus);\r\n this.fetchAllFeaturedContent(strip, calculateParentStatus);\r\n this.fetchAllBookMarkData(strip, calculateParentStatus);\r\n this.fetchAllPlaylistSearch(strip, calculateParentStatus);\r\n this.fetchPlaylistReadData(strip, calculateParentStatus);\r\n this.fetchCiosContentData(strip, calculateParentStatus);\r\n\r\n // this.enrollInterval = setInterval(() => {\r\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\r\n // }, 1000)\r\n }\r\n\r\n fetchFromEnrollmentList(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) {\r\n let userId = '';\r\n let content: NsContent.IContent[];\r\n let contentNew: NsContent.IContent[];\r\n let tabResults: any[] = [];\r\n const queryParams = _.get(strip.request.enrollmentList, 'queryParams');\r\n // if (queryParams && queryParams.batchDetails) {\r\n // if (!queryParams.batchDetails.includes('&retiredCoursesEnabled=true')) {\r\n // queryParams.batchDetails += '&retiredCoursesEnabled=true'\r\n // }\r\n // }\r\n if (this.configSvc.userProfile) {\r\n userId = this.configSvc.userProfile.userId;\r\n }\r\n // this.userSvc.resetTime('enrollmentService')\r\n // tslint:disable-next-line: deprecation\r\n this.userSvc.fetchUserBatchList(userId, queryParams).subscribe(\r\n (result: any) => {\r\n const courses = result && result.courses;\r\n const showViewMore = Boolean(\r\n courses.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: (strip.viewMoreUrl && strip.viewMoreUrl.path) || '',\r\n queryParams: {\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n strip.request && strip.request.searchV6 && strip.request.searchV6.filters\r\n ? JSON.stringify(\r\n // this.searchServSvc.transformSearchV6Filters(\r\n strip.request.searchV6.filters\r\n // ),\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n if (courses && courses.length) {\r\n content = courses.map((c: any) => {\r\n const contentTemp: NsContent.IContent = c.content;\r\n contentTemp.completionPercentage = c.completionPercentage || c.progress || 0;\r\n contentTemp.completionStatus = c.completionStatus || c.status || 0;\r\n contentTemp.enrolledDate = c.enrolledDate || '';\r\n contentTemp.lastContentAccessTime = c.lastContentAccessTime || '';\r\n contentTemp.lastReadContentStatus = c.lastReadContentStatus || '';\r\n contentTemp.lastReadContentId = c.lastReadContentId || '';\r\n contentTemp.lrcProgressDetails = c.lrcProgressDetails || '';\r\n contentTemp.issuedCertificates = c.issuedCertificates || [];\r\n contentTemp.batchId = c.batchId || '';\r\n return contentTemp;\r\n });\r\n }\r\n // To filter content with completionPercentage > 0,\r\n // so that only those content will show in home page\r\n // continue learing strip\r\n // if (content && content.length) {\r\n // contentNew = content.filter((c: any) => {\r\n // /** commented as both are 0 after enrolll */\r\n // if (c.completionPercentage && c.completionPercentage > 0) {\r\n // return c\r\n // }\r\n // })\r\n // }\r\n\r\n // To sort in descending order of the enrolled date\r\n contentNew = (content || []).sort((a: any, b: any) => {\r\n const dateA: any = new Date(a.lastContentAccessTime || 0);\r\n const dateB: any = new Date(b.lastContentAccessTime || 0);\r\n return dateB - dateA;\r\n });\r\n\r\n if (strip.tabs && strip.tabs.length) {\r\n tabResults = this.splitEnrollmentTabsData(contentNew, strip);\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(contentNew, strip),\r\n 'done',\r\n calculateParentStatus,\r\n viewMoreUrl,\r\n tabResults\r\n );\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(contentNew, strip),\r\n 'done',\r\n calculateParentStatus,\r\n viewMoreUrl,\r\n );\r\n }\r\n },\r\n () => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n );\r\n }\r\n }\r\n\r\n splitEnrollmentTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\r\n const tabResults: any[] = [];\r\n const splitData = this.getInprogressAndCompleted(\r\n contentNew,\r\n (e: any) => e.completionStatus === 1 || e.completionPercentage < 100,\r\n strip,\r\n );\r\n\r\n if (strip.tabs && strip.tabs.length) {\r\n for (let i = 0; i < strip.tabs.length; i += 1) {\r\n if (strip.tabs[i]) {\r\n tabResults.push(\r\n {\r\n ...strip.tabs[i],\r\n fetchTabStatus: 'done',\r\n ...(splitData.find(itmInner => {\r\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\r\n return itmInner;\r\n }\r\n return undefined;\r\n })),\r\n }\r\n );\r\n }\r\n }\r\n }\r\n return tabResults;\r\n }\r\n\r\n getInprogressAndCompleted(array: NsContent.IContent[],\r\n customFilter: any,\r\n strip: NsContentStripWithTabs.IContentStripUnit) {\r\n const inprogress: any[] = []\r\n const completed: any[] = []\r\n // array.forEach((e: any, idx: number, arr: any[]) => (customFilter(e, idx, arr) ? inprogress : completed).push(e))\r\n array.forEach((e, idx, arr) => {\r\n const status = e.status ? (e.status as string).toLowerCase() : ''\r\n const statusRetired = status === 'retired'\r\n if (customFilter(e, idx, arr)) {\r\n if (!statusRetired) {\r\n inprogress.push(e)\r\n }\r\n } else {\r\n completed.push(e)\r\n }\r\n })\r\n // Sort the completed array with 'Live' status first and 'Retired' status second\r\n completed.sort((a: any, b: any) => {\r\n const statusA = a.status ? a.status.toLowerCase() : ''\r\n const statusB = b.status ? b.status.toLowerCase() : ''\r\n if (statusA === 'live' && statusB !== 'live') {\r\n return -1\r\n }\r\n if (statusA !== 'live' && statusB === 'live') {\r\n return 1\r\n }\r\n if (statusA === 'retired' && statusB !== 'retired') {\r\n return 1\r\n }\r\n if (statusA !== 'retired' && statusB === 'retired') {\r\n return -1\r\n }\r\n return 0\r\n })\r\n return [\r\n { value: 'inprogress', widgets: this.transformContentsToWidgets(inprogress, strip) },\r\n { value: 'completed', widgets: this.transformContentsToWidgets(completed, strip) }];\r\n }\r\n\r\n async fetchFromSearchV6(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\r\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\r\n // if (this.configSvc.activeLocale) {\r\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\r\n // } else {\r\n // strip.request.searchV6.locale = ['en']\r\n // }\r\n // }\r\n let originalFilters: any = [];\r\n // tslint:disable:no-console\r\n console.log(originalFilters);\r\n if (strip.request &&\r\n strip.request.searchV6 &&\r\n strip.request.searchV6.request &&\r\n strip.request.searchV6.request.filters) {\r\n originalFilters = strip.request.searchV6.request.filters;\r\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\r\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\r\n strip.request.searchV6.request.filters,\r\n );\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n\r\n this.getTabDataByNewReqSearchV6(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.content) {\r\n if (strip.key === 'scheduledAssessment') {\r\n this.enrollInterval = setInterval(() => {\r\n this.checkInvitOnlyAssessments(response.results.result.content, strip, calculateParentStatus, response.viewMoreUrl)\r\n\r\n // tslint:disable-next-line\r\n }, 1000)\r\n\r\n\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(response.results.result.content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n }\r\n\r\n } else if (response.results.result.Event) {\r\n this.processStrip(\r\n strip,\r\n this.transformEventsToWidgets(response.results.result.Event, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n checkInvitOnlyAssessments(content: any, strip: any, calculateParentStatus: any, viewMoreUrl: any) {\r\n if (localStorage.getItem('enrollmentMapData')) {\r\n this.enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\r\n let filteredArray: any = []\r\n let now = new Date().getTime()\r\n content.forEach((data: any) => {\r\n if (this.enrollmentMapData[data.identifier]) {\r\n if(this.enrollmentMapData[data.identifier].status !== 2 && this.enrollmentMapData[data.identifier].batch) {\r\n const enrollData = this.enrollmentMapData[data.identifier].batch\r\n let endDate:any = new Date(enrollData.endDate).getTime()\r\n // let endDate:any = '2024-07-7T00:00:00.000Z'\r\n let timeDuration = endDate - now\r\n if(timeDuration > 0 ) {\r\n data['batch'] = this.enrollmentMapData[data.identifier].batch\r\n data['completionPercentage'] = this.enrollmentMapData[data.identifier].completionPercentage\r\n filteredArray.push(data)\r\n }\r\n }\r\n \r\n }\r\n })\r\n filteredArray = filteredArray.sort((a: any, b: any) => {\r\n const dateA: any = new Date(a.batch.startDate || 0)\r\n const dateB: any = new Date(b.batch.startDate || 0)\r\n return dateA - dateB\r\n })\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(filteredArray, strip),\r\n 'done',\r\n calculateParentStatus,\r\n viewMoreUrl,\r\n );\r\n clearInterval(this.enrollInterval)\r\n }\r\n }\r\n\r\n async searchV6Request(strip: NsContentStripWithTabs.IContentStripUnit,\r\n request: NsContentStripWithTabs.IContentStripUnit['request'],\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request.searchV6) {\r\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\r\n const showViewMore = Boolean(\r\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n request &&\r\n request.searchV6 &&\r\n request.searchV6.request &&\r\n request.searchV6.request.filters\r\n ? JSON.stringify(\r\n this.transformSearchV6FiltersV2(\r\n originalFilters,\r\n )\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\r\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\r\n // }\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n async fetchFromTrendingContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) {\r\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\r\n // if (this.configSvc.activeLocale) {\r\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\r\n // } else {\r\n // strip.request.searchV6.locale = ['en']\r\n // }\r\n // }\r\n let originalFilters: any = [];\r\n // tslint:disable:no-console\r\n console.log(originalFilters);\r\n if (strip.request &&\r\n strip.request.trendingSearch &&\r\n strip.request.trendingSearch.request &&\r\n strip.request.trendingSearch.request.filters) {\r\n originalFilters = strip.request.trendingSearch.request.filters;\r\n strip.request.trendingSearch.request.filters = this.checkForDateFilters(strip.request.trendingSearch.request.filters);\r\n strip.request.trendingSearch.request.filters = this.getFiltersFromArray(\r\n strip.request.trendingSearch.request.filters,\r\n );\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n\r\n this.getTabDataByNewReqTrending(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.trendingSearchRequest(strip, strip.request, calculateParentStatus);\r\n if (response && response.results && response.results.response) {\r\n const content = response.results.response[strip.request.trendingSearch.responseKey] || [];\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl || '',\r\n );\r\n if (!content.length) {\r\n this.emptyResponse.emit(true)\r\n }\r\n } else {\r\n this.emptyResponse.emit(true)\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n this.emptyResponse.emit(true)\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async trendingSearchRequest(strip: NsContentStripWithTabs.IContentStripUnit,\r\n request: NsContentStripWithTabs.IContentStripUnit['request'],\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request.trendingSearch) {\r\n // check for the request if it has dynamic values]\r\n if (request.trendingSearch.request.filters.organisation &&\r\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n let userRootOrgId;\r\n if (this.configSvc.userProfile) {\r\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\r\n }\r\n request.trendingSearch.request.filters.organisation = userRootOrgId;\r\n }\r\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\r\n const showViewMore = Boolean(\r\n results.result &&\r\n strip.request &&\r\n results.result[strip.request.trendingSearch.responseKey] &&\r\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\r\n strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n request &&\r\n request.trendingSearch &&\r\n request.trendingSearch.request &&\r\n request.trendingSearch.request.filters\r\n ? JSON.stringify(\r\n this.transformSearchV6FiltersV2(\r\n originalFilters,\r\n )\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n let proccesedResult: any = []\r\n if (results && results.response && results.response.certifications) {\r\n results.response.certifications.map((result: any) => {\r\n if (result.source === this.channnelName) {\r\n proccesedResult.push(result)\r\n }\r\n })\r\n }\r\n results = { response: { certifications: proccesedResult } }\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n if (error.error && error.error.status === 400) {\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n toggleInfo(data: IStripUnitContentData) {\r\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\r\n if (stripInfo) {\r\n if (stripInfo.mode !== 'below') {\r\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\r\n stripInfo.mode = 'below';\r\n }\r\n if (stripInfo.mode === 'below') {\r\n this.stripsResultDataMap[data.key].stripInfo = {\r\n ...stripInfo,\r\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\r\n };\r\n }\r\n }\r\n }\r\n\r\n private transformContentsToWidgets(\r\n contents: NsContent.IContent[],\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n\r\n private transformEventsToWidgets(\r\n contents: ITodayEvents[],\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n ) {\r\n this.eventSvc.setEventListData(contents);\r\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\r\n widgetType: 'card',\r\n widgetSubType: 'eventHubCard',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'eventHubCard',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n private transformSkeletonToWidgets(\r\n strip: any\r\n ) {\r\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n },\r\n }));\r\n }\r\n\r\n private async processStrip(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\r\n fetchStatus: TFetchStatus,\r\n calculateParentStatus = true,\r\n _viewMoreUrl: any,\r\n tabsResults?: NsContentStripWithTabs.IContentStripTab[] | undefined,\r\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\r\n ) {\r\n const stripData = {\r\n viewMoreUrl: strip.viewMoreUrl,\r\n key: strip.key,\r\n canHideStrip: Boolean(strip.canHideStrip),\r\n showStrip: this.getIfStripHidden(strip.key),\r\n noDataWidget: strip.noDataWidget,\r\n errorWidget: strip.errorWidget,\r\n stripInfo: strip.info,\r\n stripTitle: strip.title,\r\n stripTitleLink: strip.stripTitleLink,\r\n disableTranslate: strip.disableTranslate,\r\n sliderConfig: strip.sliderConfig,\r\n tabs: tabsResults ? tabsResults : strip.tabs,\r\n tabsType: strip.tabsType ? strip.tabsType : '',\r\n stripName: strip.name,\r\n mode: strip.mode,\r\n stripConfig: strip.stripConfig,\r\n stripBackground: strip.stripBackground,\r\n secondaryHeading: strip.secondaryHeading,\r\n loaderWidgets: strip.loaderWidgets || [],\r\n widgets:\r\n fetchStatus === 'done'\r\n ? [\r\n ...(strip.preWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ...results,\r\n ...(strip.postWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ]\r\n : [],\r\n showOnNoData: Boolean(\r\n strip.noDataWidget &&\r\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\r\n fetchStatus === 'done',\r\n ),\r\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\r\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\r\n };\r\n // const stripData = this.stripsResultDataMap[strip.key]\r\n this.stripsResultDataMap = {\r\n ...this.stripsResultDataMap,\r\n [strip.key]: stripData,\r\n };\r\n if (!tabsResults) {\r\n if (\r\n calculateParentStatus &&\r\n (fetchStatus === 'done' || fetchStatus === 'error') &&\r\n stripData.widgets\r\n ) {\r\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\r\n }\r\n if (calculateParentStatus && !(results && results.length > 0)) {\r\n this.contentAvailable = false;\r\n } else if (results && results.length > 0) {\r\n this.contentAvailable = true;\r\n }\r\n } else {\r\n this.contentAvailable = true;\r\n }\r\n }\r\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\r\n if (fetchStatus === 'done' && !stripWidgetsCount) {\r\n this.noDataCount += 1;\r\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\r\n this.successDataCount += 1;\r\n } else if (fetchStatus === 'error') {\r\n this.errorDataCount += 1;\r\n }\r\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\r\n const totalCount = this.widgetData.strips.length;\r\n if (this.successDataCount > 0 && settledCount < totalCount) {\r\n return;\r\n }\r\n this.showParentLoader = settledCount !== totalCount;\r\n this.showParentNoData =\r\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\r\n this.showParentError = this.errorDataCount === totalCount;\r\n }\r\n checkForEmptyWidget(strip: NsContentStripWithTabs.IContentStripUnit): boolean {\r\n if (\r\n strip.request &&\r\n ((strip.request.api && Object.keys(strip.request.api).length) ||\r\n (strip.request.search && Object.keys(strip.request.search).length) ||\r\n (strip.request.searchRegionRecommendation &&\r\n Object.keys(strip.request.searchRegionRecommendation).length) ||\r\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\r\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\r\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\r\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) ||\r\n (strip.request.topContent && Object.keys(strip.request.topContent).length) ||\r\n (strip.request.featureContent && Object.keys(strip.request.featureContent).length) ||\r\n (strip.request.bookmarkRead && Object.keys(strip.request.bookmarkRead).length) ||\r\n (strip.request.playlistSearch && Object.keys(strip.request.playlistSearch).length) ||\r\n (strip.request.playlistRead && Object.keys(strip.request.playlistRead).length) ||\r\n (strip.request.ciosContent && Object.keys(strip.request.ciosContent).length)\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitContentData, stripKey: string) {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'inprogress';\r\n stripMap.tabs[tabEvent.index].tabLoading = true;\r\n stripMap.showOnLoader = true;\r\n }\r\n const data: WsEvents.ITelemetryTabData = {\r\n label: `${tabEvent.tab.textLabel}`,\r\n index: tabEvent.index,\r\n };\r\n this.eventSvc.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\r\n id: `${_.camelCase(data.label)}-tab`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.HOME,\r\n }\r\n );\r\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\r\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\r\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\r\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\r\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\r\n tabSelected: currentTabFromMap.label,\r\n };\r\n }\r\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick) {\r\n if (currentTabFromMap.requestRequired && currentTabFromMap.request) {\r\n // call API to get tab data and process\r\n // this.processStrip(currentStrip, [], 'fetching', true, null)\r\n if (currentTabFromMap.request.searchV6) {\r\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, currentTabFromMap, true);\r\n } else if (currentTabFromMap.request.trendingSearch) {\r\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, currentTabFromMap, true);\r\n } else if (currentTabFromMap.request.topContent) {\r\n this.getTabDataByNewReqTopContent(currentStrip, tabEvent.index, currentTabFromMap, true);\r\n } else if (currentTabFromMap.request.playlistRead) {\r\n this.getTabDataByNewReqPlaylistReadContent(currentStrip, tabEvent.index, currentTabFromMap, true);\r\n } else if (currentTabFromMap.request.ciosContent) {\r\n this.getTabDataByCiosSearch(currentStrip, tabEvent.index, currentTabFromMap, true)\r\n }\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n stripMap.tabs[tabEvent.index].tabLoading = false;\r\n }\r\n } else {\r\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\r\n setTimeout(() => {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n stripMap.tabs[tabEvent.index].tabLoading = false;\r\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\r\n stripMap.showOnLoader = false;\r\n }\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n\r\n async getTabDataByNewReqSearchV6(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\r\n if (response && response.results) {\r\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n async getTabDataByNewReqTrending(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\r\n if (response && response.results && response.results.response) {\r\n const content = response.results.response[currentTab.value] || [];\r\n const widgets = this.transformContentsToWidgets(content, strip);\r\n // console.log('currentTab --- widgets', widgets)\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n // console.log('tabResults -++++***--', tabResults)\r\n // console.log('calling after-- ')\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n\r\n getTabDataByfilter(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n // tslint:disable:no-console\r\n console.log('strip -- ', strip);\r\n // tslint:disable:no-console\r\n console.log('currentTab -- ', currentTab);\r\n // tslint:disable:no-console\r\n console.log('calculateParentStatus-- ', calculateParentStatus);\r\n // TODO: Write logic for individual filter if passed in config\r\n // add switch case based on config key passed\r\n }\r\n\r\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\r\n\r\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\r\n\r\n let courses: NsContent.IContent[];\r\n let tabResults: any[] = [];\r\n const response = await this.userSvc.fetchCbpPlanList().toPromise();\r\n if (response) {\r\n courses = response;\r\n if (strip.tabs && strip.tabs.length) {\r\n tabResults = this.splitCbpTabsData(courses, strip);\r\n await this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(courses, strip),\r\n 'done',\r\n calculateParentStatus,\r\n '',\r\n tabResults\r\n );\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(courses, strip),\r\n 'done',\r\n calculateParentStatus,\r\n 'viewMoreUrl',\r\n );\r\n }\r\n }\r\n // this.userSvc.fetchCbpPlanList().subscribe( async (res: any) => {\r\n // if (res) {\r\n // console.log(res,'===============================>')\r\n // courses = res\r\n // if (strip.tabs && strip.tabs.length) {\r\n // tabResults = this.splitCbpTabsData(courses, strip)\r\n // await this.processStrip(\r\n // strip,\r\n // this.transformContentsToWidgets(courses, strip),\r\n // 'done',\r\n // calculateParentStatus,\r\n // '',\r\n // tabResults\r\n // )\r\n // } else {\r\n // this.processStrip(\r\n // strip,\r\n // this.transformContentsToWidgets(courses, strip),\r\n // 'done',\r\n // calculateParentStatus,\r\n // 'viewMoreUrl',\r\n // )\r\n // }\r\n // }\r\n // }, (_err: any) => {\r\n\r\n // })\r\n\r\n clearInterval(this.enrollInterval);\r\n }\r\n }\r\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\r\n const tabResults: any[] = [];\r\n const splitData = this.getTabsList(\r\n contentNew,\r\n strip,\r\n );\r\n if (strip.tabs && strip.tabs.length) {\r\n for (let i = 0; i < strip.tabs.length; i += 1) {\r\n if (strip.tabs[i]) {\r\n tabResults.push(\r\n {\r\n ...strip.tabs[i],\r\n fetchTabStatus: 'done',\r\n ...(splitData.find(itmInner => {\r\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\r\n return itmInner;\r\n }\r\n return undefined;\r\n })),\r\n }\r\n );\r\n }\r\n }\r\n }\r\n return tabResults;\r\n }\r\n\r\n getTabsList(array: NsContent.IContent[],\r\n strip: NsContentStripWithTabs.IContentStripUnit) {\r\n let all: any[] = [];\r\n let upcoming: any[] = [];\r\n let overdue: any[] = [];\r\n array.forEach((e: any) => {\r\n all.push(e);\r\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n overdue.push(e);\r\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\r\n upcoming.push(e);\r\n }\r\n });\r\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\r\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\r\n\r\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\r\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\r\n\r\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\r\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n }\r\n });\r\n\r\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\r\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n }\r\n });\r\n\r\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\r\n\r\n overdue = overdue.filter((data: any): any => {\r\n return data.contentStatus < 2;\r\n });\r\n\r\n overdue = overdue.sort((a: any, b: any): any => {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n });\r\n\r\n upcoming = upcoming.filter((data: any): any => {\r\n return data.contentStatus < 2;\r\n });\r\n // this.getSelectedIndex(1)\r\n return [\r\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\r\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\r\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\r\n }\r\n\r\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\r\n let returnValue = 0;\r\n if (key === 'cbpPlan') {\r\n if (stripsResultDataMap.tabs.length) {\r\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\r\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\r\n }\r\n }\r\n return returnValue;\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateLabel(label, type, '');\r\n }\r\n\r\n identify(index: number, item: any) {\r\n if (index >= 0) { }\r\n return item;\r\n }\r\n tracker(index: number, item: any) {\r\n if (index >= 0) { }\r\n return _.get(item, 'widgetData.content.identifier')\r\n }\r\n\r\n async fetchAllTopContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.topContent && Object.keys(strip.request.topContent).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.topContent &&\r\n strip.request.topContent.request &&\r\n strip.request.topContent.request.filters) {\r\n originalFilters = strip.request.topContent.request.filters;\r\n strip.request.topContent.request.filters = this.postMethodFilters(strip.request.topContent.request.filters);\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n\r\n this.getTabDataByNewReqTopContent(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.postRequestMethod(strip, strip.request.topContent, strip.request.apiUrl, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.content && response.results.result.content.length) {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(response.results.result.content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async fetchAllFeaturedContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.featureContent && Object.keys(strip.request.featureContent).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.featureContent &&\r\n strip.request.featureContent.request &&\r\n strip.request.featureContent.request.filters) {\r\n originalFilters = strip.request.featureContent.request.filters;\r\n strip.request.featureContent.request.filters = this.postMethodFilters(strip.request.featureContent.request.filters);\r\n }\r\n try {\r\n const response = await this.postRequestMethod(strip, strip.request.featureContent, strip.request.apiUrl, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.content && response.results.result.content.length) {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(response.results.result.content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n\r\n\r\n async getTabDataByNewReqTopContent(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n if (currentTab.request &&\r\n currentTab.request.topContent &&\r\n currentTab.request.topContent.request &&\r\n currentTab.request.topContent.request.filters) {\r\n currentTab.request.topContent.request.filters = this.postMethodFilters(currentTab.request.topContent.request.filters);\r\n }\r\n try {\r\n // const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\r\n const response = await this.postRequestMethod(strip, currentTab.request.topContent, currentTab.request.apiUrl, calculateParentStatus);\r\n if (response.results && response.results.result) {\r\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n raiseTelemetry(stripData: any) {\r\n this.telemtryResponse.emit(stripData)\r\n }\r\n\r\n async postRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\r\n request: NsContentStripWithTabs.IContentStripUnit['request'],\r\n apiUrl: string,\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request) {\r\n this.contentSvc.postApiMethod(apiUrl, request).subscribe(results => {\r\n if (results.result && results.result.content) {\r\n const showViewMore = Boolean(\r\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f: {},\r\n },\r\n }\r\n : null;\r\n resolve({ results, viewMoreUrl });\r\n } else if (results && results.data) {\r\n const showViewMore = Boolean(\r\n results.data && results.data.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f: {},\r\n },\r\n }\r\n : null;\r\n resolve({ results, viewMoreUrl });\r\n } else if (results.result && results.result.data) {\r\n const showViewMore = Boolean(\r\n results.data && results.result.data && results.result.data.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f: {},\r\n },\r\n }\r\n : null;\r\n resolve({ results, viewMoreUrl });\r\n }\r\n\r\n }, (error: any) => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n async getRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\r\n request: NsContentStripWithTabs.IContentStripUnit['request'],\r\n apiUrl: string,\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request) {\r\n this.contentSvc.getApiMethod(apiUrl).subscribe(results => {\r\n let showViewMore: any\r\n if(results.result.data){\r\n showViewMore = Boolean(\r\n results.result.data && results.result.data.orgList.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n } else if(results.result.content){\r\n let featuredProvider = JSON.parse(results.result.content.featuredProviders || '[]')\r\n showViewMore = Boolean(\r\n featuredProvider && featuredProvider.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n }\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n }\r\n : null;\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n postMethodFilters(filters: any) {\r\n if (filters.organisation &&\r\n filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n filters.organisation = filters.organisation.replace('<orgID>', this.providerId)\r\n }\r\n return filters\r\n }\r\n getFullUrl(apiUrl: any, id: string) {\r\n let formedUrl: string = apiUrl\r\n if (apiUrl.indexOf('<bookmarkId>') >= 0) {\r\n formedUrl = apiUrl.replace('<bookmarkId>', this.environment.mdoChannelsBookmarkId)\r\n } else if (apiUrl.indexOf('<playlistKey>') >= 0 && apiUrl.indexOf('<orgID>') >= 0) {\r\n formedUrl = apiUrl.replace('<playlistKey>', this.providerId + id) \r\n formedUrl = formedUrl.replace('<orgID>', this.providerId) \r\n } else if(apiUrl.indexOf('<doId>') >= 0) {\r\n formedUrl = apiUrl.replace('<doId>', this.environment.providerDataKey) \r\n } \r\n return formedUrl\r\n }\r\n\r\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\r\n if (this.emitViewAll) {\r\n this.viewAllResponse.emit(stripData)\r\n } else {\r\n this.router.navigate([path], { queryParams: queryParamsData })\r\n }\r\n }\r\n\r\n async fetchAllBookMarkData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.bookmarkRead && Object.keys(strip.request.bookmarkRead).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.bookmarkRead &&\r\n strip.request.bookmarkRead.bookmarkId) {\r\n strip.request.apiUrl = this.getFullUrl(strip.request.apiUrl, strip.request.bookmarkRead.bookmarkId);\r\n }\r\n try {\r\n const response = await this.getRequestMethod(strip, strip.request.bookmarkRead, strip.request.apiUrl, calculateParentStatus);\r\n let content = response.results.result.data.orgList\r\n if (response) {\r\n this.processStrip(\r\n strip,\r\n this.transformAllContentsToWidgets(content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response,\r\n );\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n\r\n private transformAllContentsToWidgets(\r\n contents: any,\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n\r\n private transformAllTabContentsToWidgets(\r\n contents: any,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: currentTab.stripConfig && currentTab.stripConfig.cardSubType,\r\n cardCustomeClass: currentTab.customeClass ? currentTab.customeClass : '',\r\n context: { pageSection: currentTab.value, position: idx },\r\n intranetMode: currentTab.stripConfig && currentTab.stripConfig.intranetMode,\r\n deletedMode: currentTab.stripConfig && currentTab.stripConfig.deletedMode,\r\n contentTags: currentTab.stripConfig && currentTab.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n\r\n async fetchAllPlaylistSearch(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.playlistSearch && Object.keys(strip.request.playlistSearch).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.playlistSearch &&\r\n strip.request.playlistSearch.request &&\r\n strip.request.playlistSearch.request.filters) {\r\n originalFilters = strip.request.playlistSearch.request.filters;\r\n strip.request.playlistSearch.request.filters = this.postMethodFilters(strip.request.playlistSearch.request.filters);\r\n }\r\n try {\r\n const response = await this.postRequestMethod(strip, strip.request.playlistSearch.request, strip.request.apiUrl, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.data && response.results.result.data.length) {\r\n let finalPlaylistData: any = []\r\n let programData: any = response.results.result.data\r\n programData.forEach((prgData: any) => {\r\n if (prgData.children && prgData.children.length) {\r\n finalPlaylistData.push(prgData)\r\n }\r\n })\r\n if (finalPlaylistData.length) {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(finalPlaylistData, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.emptyResponse.emit(true)\r\n }\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n\r\n async fetchPlaylistReadData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.playlistRead && Object.keys(strip.request.playlistRead).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.playlistRead &&\r\n strip.request.playlistRead.type) {\r\n strip.request.apiUrl = this.getFullUrl(strip.request.apiUrl, strip.request.playlistRead.type);\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n\r\n this.getTabDataByNewReqPlaylistReadContent(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.getRequestMethod(strip, strip.request.playlistRead, strip.request.apiUrl, calculateParentStatus);\r\n \r\n if (response && response.results.result.content) { \r\n let content = response.results.result.content\r\n if(strip.key === 'providers'){\r\n let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\r\n this.processStrip(\r\n strip,\r\n this.transformAllContentsToWidgets(featuredProviders, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response,\r\n );\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformAllContentsToWidgets(content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response,\r\n );\r\n }\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n async getTabDataByNewReqPlaylistReadContent(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n if (currentTab.request &&\r\n currentTab.request.playlistRead &&\r\n currentTab.request.playlistRead.type) {\r\n currentTab.request.apiUrl = this.getFullUrl(currentTab.request.apiUrl, currentTab.request.playlistRead.type);\r\n }\r\n try {\r\n const response = await this.getRequestMethod(strip, currentTab.request.playlistRead, currentTab.request.apiUrl, calculateParentStatus);\r\n // if (response && response.results.result.content) { \r\n // let content = response.results.result.content\r\n // if(strip.key === 'providers'){\r\n // let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\r\n // this.processStrip(\r\n // strip,\r\n // this.transformAllContentsToWidgets(featuredProviders, strip),\r\n // 'done',\r\n // calculateParentStatus,\r\n // response,\r\n // );\r\n // } else {\r\n // this.processStrip(\r\n // strip,\r\n // this.transformAllContentsToWidgets(content, strip),\r\n // 'done',\r\n // calculateParentStatus,\r\n // response,\r\n // );\r\n // }\r\n // } else {\r\n // this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n // this.emptyResponse.emit(true)\r\n // }\r\n if (response.results && response.results.result) {\r\n let content = response.results.result.content\r\n let widgets = []\r\n if(currentTab.value === 'providers'){\r\n let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\r\n widgets = this.transformAllTabContentsToWidgets(featuredProviders, currentTab)\r\n } else {\r\n widgets = this.transformAllTabContentsToWidgets(content, currentTab)\r\n }\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults);\r\n }\r\n } catch (error) {\r\n console.error('Error:', error)\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs && this.stripsResultDataMap[strip.key].tabs.length) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults)\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n }\r\n\r\n async fetchCiosContentData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip && strip.request.ciosContent && Object.keys(strip.request.ciosContent).length) {\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired && firstTab.value === 'extCourse') {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n this.getTabDataByCiosSearch(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n if (firstTab.requestRequired && firstTab.value === 'providers') {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n this.getTabDataByNewReqPlaylistReadContent(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n } else {\r\n try {\r\n const response = await this.postRequestMethod(strip, strip.request.ciosContent, strip.request.apiUrl, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.data && response.results.data.length) {\r\n let extContentData: any = response.results.data\r\n if (extContentData.length) {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(extContentData, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.emptyResponse.emit(true)\r\n }\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n \r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async getTabDataByCiosSearch(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n _currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.contentSvc.postApiMethod(strip.request.apiUrl,strip.request.ciosContent).toPromise();;\r\n if (response && response.data && response.data.length) {\r\n const widgets = this.transformContentsToWidgets(response.data, strip);\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults);\r\n }\r\n } catch (error) {\r\n console.error('Error:', error)\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs && this.stripsResultDataMap[strip.key].tabs.length) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults)\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\r\n\r\nimport {\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule} from '@angular/material';\r\nimport { ContentStripWithTabsLibComponent } from './content-strip-with-tabs-lib.component';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\r\n\r\n// tslint:disable-next-line:function-name\r\nexport function HttpLoaderFactory(http: HttpClient) {\r\n return new TranslateHttpLoader(http);\r\n}\r\n\r\n@NgModule({\r\n declarations: [ContentStripWithTabsLibComponent],\r\n imports: [\r\n SbUiResolverModule,\r\n CommonModule,\r\n RouterModule,\r\n HorizontalScrollerV2Module,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule,\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 ],\r\n entryComponents: [ContentStripWithTabsLibComponent],\r\n exports: [ContentStripWithTabsLibComponent],\r\n})\r\nexport class ContentStripWithTabsLibModule { }\r\n","import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core'\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\r\nimport { ICarousel, ICarouselStyle } from './sliders.model'\r\nimport { Subscription, interval } from 'rxjs'\r\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\r\n\r\n@Component({\r\n selector: 'sb-uic-sliders',\r\n templateUrl: './sliders.component.html',\r\n styleUrls: ['./sliders.component.scss'],\r\n})\r\nexport class SlidersLibComponent extends WidgetBaseComponent\r\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\r\n @Input() widgetData!: ICarousel[]\r\n @Input() styleData!: ICarouselStyle\r\n @Input() title: any = ''\r\n @Input() type: any\r\n @HostBinding('id')\r\n public id = `banner_${Math.random()}`\r\n private defaultMenuSubscribe: Subscription | null = null\r\n isLtMedium$ = this.valueSvc.isLtMedium$\r\n currentIndex = 0\r\n slideInterval: Subscription | null = null\r\n isMobile = false\r\n\r\n constructor(\r\n private events: EventService,\r\n private valueSvc: ValueService\r\n ) {\r\n super()\r\n }\r\n\r\n ngOnInit() {\r\n this.reInitiateSlideInterval()\r\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\r\n this.isMobile = isLtMedium\r\n })\r\n }\r\n reInitiateSlideInterval() {\r\n if (this.widgetData && this.widgetData.length > 1) {\r\n try {\r\n if (this.slideInterval) {\r\n this.slideInterval.unsubscribe()\r\n }\r\n } catch (e) {\r\n } finally {\r\n this.slideInterval = interval(8000).subscribe(() => {\r\n if (this.currentIndex === this.widgetData.length - 1) {\r\n this.currentIndex = 0\r\n } else {\r\n this.currentIndex += 1\r\n }\r\n })\r\n }\r\n }\r\n }\r\n slideTo(index: number) {\r\n if (index >= 0 && index < this.widgetData.length) {\r\n this.currentIndex = index\r\n } else if (index === this.widgetData.length) {\r\n this.currentIndex = 0\r\n } else {\r\n this.currentIndex = this.widgetData.length + index\r\n }\r\n this.reInitiateSlideInterval()\r\n }\r\n\r\n get isOpenInNewTab() {\r\n const currentData = this.widgetData[this.currentIndex]\r\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\r\n return true\r\n } return false\r\n }\r\n\r\n openInNewTab() {\r\n const currentData = this.widgetData[this.currentIndex]\r\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\r\n window.open(currentData.redirectUrl)\r\n }\r\n }\r\n raiseTelemetry(bannerUrl: string | undefined) {\r\n this.openInNewTab()\r\n const path = window.location.pathname.replace('/', '')\r\n const url = path + window.location.search\r\n\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'banner',\r\n },\r\n {\r\n pageUrl: url,\r\n bannerRedirectUrl: bannerUrl,\r\n },\r\n {\r\n pageIdExt: 'banner',\r\n module: WsEvents.EnumTelemetrymodules.CONTENT,\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.defaultMenuSubscribe) {\r\n this.defaultMenuSubscribe.unsubscribe()\r\n }\r\n }\r\n}\r\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'\r\nimport { CommonModule } from '@angular/common'\r\nimport { SlidersLibComponent } from './sliders.component'\r\nimport { RouterModule } from '@angular/router'\r\nimport { ImageResponsiveModule } from './../../_directives/image-responsive/image-responsive.module'\r\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\r\n/* tslint:disable */\r\nimport Hammer from 'hammerjs'\r\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\r\n/* tslint:enable */\r\nexport class MyHammerConfig extends HammerGestureConfig {\r\n buildHammer(element: HTMLElement) {\r\n const mc = new Hammer(element, {\r\n touchAction: 'pan-y',\r\n })\r\n return mc\r\n }\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\n@NgModule({\r\n declarations: [SlidersLibComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n NavigationModule,\r\n ImageResponsiveModule,\r\n ],\r\n exports: [SlidersLibComponent],\r\n entryComponents: [SlidersLibComponent],\r\n providers: [\r\n {\r\n provide: HAMMER_GESTURE_CONFIG,\r\n useClass: MyHammerConfig,\r\n },\r\n ],\r\n})\r\nexport class SlidersLibModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nconst API_END_POINTS = {\r\n PROVIDER_INSIGHTS: `/apis/proxies/v8/microsite/read/insights`,\r\n TRAINING_DETAILS: `apis/proxies/v8/sunbirdigot/search`,\r\n ANNOUNCEMENTS_DETAILS: `apis/proxies/v8/announcements/v1/search`,\r\n LEARNERS: `apis/proxies/v8/halloffame/top/learners`\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InsiteDataService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) {}\r\n fetchSearchData(request: any): Observable<any> {\r\n return this.http.post<any>(API_END_POINTS.PROVIDER_INSIGHTS, request)\r\n }\r\n\r\n fetchAnnouncementsData(request: any): Observable<any> {\r\n return this.http.post<any>(API_END_POINTS.ANNOUNCEMENTS_DETAILS, request)\r\n }\r\n\r\n\r\n fetchTrainingDetails(request: any): Observable<any> {\r\n return this.http.post<any>(API_END_POINTS.TRAINING_DETAILS, request)\r\n }\r\n\r\n fetchLearner(): Observable<any> {\r\n return this.http.get(API_END_POINTS.LEARNERS)\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-data-points',\r\n templateUrl: './data-points.component.html',\r\n styleUrls: ['./data-points.component.css']\r\n})\r\nexport class DataPointsComponent implements OnInit {\r\n @Input() objectData: any\r\n @Input() layoutType: string = ''\r\n @Input() fetchDataFromApi: boolean = false\r\n @Input() providerId : any = ''\r\n @Input() pageLayout: any = ''\r\n customArray: any[][] = []\r\n isDataLoading: boolean = false\r\n \r\n constructor(public insightSvc: InsiteDataService) { }\r\n\r\n ngOnInit() {\r\n if (this.objectData && this.layoutType === 'gridLayout') {\r\n this.customArray = this.createCustomArray(this.objectData.metrics)\r\n }\r\n if(this.fetchDataFromApi) {\r\n this.isDataLoading = true\r\n this.getInsiteData()\r\n }\r\n } \r\n\r\n createCustomArray(arr: any[]): any[][] {\r\n const nByn: any[][] = []\r\n for (let i = 0; i < arr.length; i += this.objectData.dataColSpan) {\r\n nByn.push(arr.slice(i, i + this.objectData.dataColSpan))\r\n }\r\n return nByn \r\n }\r\n\r\n getInsiteData(){\r\n let request: any = {}\r\n request = {\r\n \"request\": {\r\n \"filters\": {\r\n \"organisations\": [\r\n this.providerId\r\n ]\r\n }\r\n }\r\n }\r\n if (this.pageLayout && this.pageLayout === 'mdo') {\r\n request = {\r\n \"request\": {\r\n \"filters\": {\r\n \"requestType\": \"MDO_INSIGHT\",\r\n \"organisations\": [\r\n this.providerId\r\n ]\r\n }\r\n }\r\n }\r\n }\r\n this.insightSvc.fetchSearchData(request).subscribe((res: any)=> {\r\n if(res && res.result && res.result.response && res.result.response.nudges && res.result.response.nudges.length) {\r\n res.result.response.nudges.forEach((nudgeData: any) => {\r\n if(this.providerId && this.providerId === nudgeData.orgId) {\r\n this.objectData = nudgeData.data\r\n }\r\n })\r\n }\r\n this.isDataLoading = false\r\n })\r\n\r\n }\r\n\r\n converToIndianSystem(value: any) {\r\n let numStr = value.toString()\r\n let [integerPart, decimalPart] = numStr.split('.')\r\n let lastThree = integerPart.slice(-3);\r\n let otherNumbers = integerPart.slice(0, -3);\r\n if (otherNumbers !== '') {\r\n lastThree = ',' + lastThree;\r\n }\r\n let formattedIntegerPart = otherNumbers.replace(/\\B(?=(\\d{2})+(?!\\d))/g, ',') + lastThree;\r\n const result = decimalPart ? `${formattedIntegerPart}.${decimalPart.substr(0,2)}` : formattedIntegerPart;\r\n return result\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core'\r\n\r\n@Component({\r\n selector: 'sb-uic-skeleton-loader',\r\n templateUrl: './skeleton-loader-lib.component.html',\r\n styleUrls: ['./skeleton-loader-lib.component.scss'],\r\n})\r\nexport class SkeletonLoaderLibComponent implements OnInit {\r\n\r\n @Input() bindingClass = ''\r\n @Input() height = ''\r\n @Input() width = ''\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { SkeletonLoaderLibComponent } from './skeleton-loader-lib.component'\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\r\nimport { MatDialogModule, MatIconModule } from '@angular/material'\r\n\r\n@NgModule({\r\n declarations: [SkeletonLoaderLibComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n ],\r\n exports: [\r\n SkeletonLoaderLibComponent,\r\n ],\r\n entryComponents: [SkeletonLoaderLibComponent],\r\n})\r\nexport class SkeletonLoaderLibModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DataPointsComponent } from './data-points.component';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [DataPointsComponent],\r\n imports: [\r\n CommonModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [DataPointsComponent],\r\n providers:[InsiteDataService]\r\n})\r\nexport class DataPointsModule { }\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n \r\n} from '@angular/core';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-calender',\r\n templateUrl: './calender.component.html',\r\n styleUrls: ['./calender.component.scss']\r\n})\r\nexport class CalenderComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() layoutType: any\r\n @Input() fetchDataFromApi: boolean = false\r\n @Input() showHeader: boolean = false\r\n @Input() defaultDays: number = 3\r\n @Input() providerId: any\r\n @Input() fullCalendor: boolean = false\r\n days = []\r\n trainings: any = {}\r\n currentMonthAndYear: any\r\n isDataLoading: boolean = false\r\n currentDate: any = new Date()\r\n endDate: any\r\n startDate: any\r\n allMonths = [\"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ]\r\n monthsDropdown: any = []\r\n selectedMonth: any\r\n constructor(private datePipe: DatePipe, public insightSvc: InsiteDataService) { }\r\n\r\n ngOnInit() {\r\n this.currentMonthAndYear = this.datePipe.transform(this.currentDate, 'MMMM y')\r\n this.selectedMonth = this.datePipe.transform(this.currentDate, 'LLLL yyyy')\r\n if (this.fullCalendor) {\r\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\r\n this.getMonthsDropdownData()\r\n }\r\n if (!this.fullCalendor) {\r\n this.days = this.getDays(this.currentDate, +this.defaultDays)\r\n }\r\n this.startDate = this.days[0]\r\n this.endDate = this.days[this.days.length - 1]\r\n if(this.fetchDataFromApi) {\r\n this.isDataLoading = true\r\n this.getInsiteData()\r\n }\r\n }\r\n getInsiteData() {\r\n let request = {\r\n \"locale\": [\r\n \"en\"\r\n ],\r\n \"query\": \"\",\r\n \"request\": {\r\n \"query\": \"\",\r\n \"filters\": {\r\n \"category\": [\r\n \"Calendar\"\r\n ],\r\n \"status\": [\r\n \"Live\",\r\n \"Retired\"\r\n ],\r\n \"contentType\": \"Event\",\r\n \"startDate\": {\r\n \">=\": this.startDate,\r\n \"<=\": this.endDate\r\n // \">=\": \"2024-01-15\",\r\n // \"<\": \"2024-05-31\"\r\n },\r\n \"channel\": [this.providerId]\r\n },\r\n \"sort_by\": {\r\n \"lastUpdatedOn\": \"desc\"\r\n }\r\n }\r\n }\r\n this.insightSvc.fetchTrainingDetails(request).subscribe((res: any)=> {\r\n if (res && res.result && res.result.Event) {\r\n res.result.Event.forEach((resp: any) => {\r\n if (this.trainings[resp.startDate]) {\r\n let prevData = this.trainings[resp.startDate]\r\n let location = resp.eventType\r\n if (resp.location && location !== \"Online\") {\r\n const jsonResp = JSON.parse(resp.location)\r\n location = jsonResp['address']\r\n }\r\n const formatObject = {\r\n location: location,\r\n startTime: this.convertTo12HourFormat(resp.startTime),\r\n endTime: this.convertTo12HourFormat(resp.endTime),\r\n title: resp.name,\r\n startDate: this.formatDate(resp.startDate),\r\n endDate: this.formatDate(resp.endDate),\r\n registrationLink: resp.registrationLink,\r\n }\r\n prevData.push(formatObject)\r\n this.trainings[resp.startDate] = prevData\r\n }\r\n })\r\n }\r\n this.isDataLoading = false\r\n })\r\n }\r\n\r\n getKeys(obj: any): string[] {\r\n return Object.keys(obj);\r\n }\r\n\r\n formatDate(date: any) {\r\n let formatDate = new Date(date)\r\n return this.datePipe.transform(formatDate, 'E, dd LLL')\r\n }\r\n\r\n convertTo12HourFormat(timeString: string): string {\r\n const time = timeString.split(\":\")\r\n let hours = +time[0]\r\n const minutes = +time[1]\r\n const ampm = hours >= 12 ? 'PM' : 'AM'\r\n hours = hours % 12\r\n hours = hours ? hours : 12\r\n const strHours = hours < 10 ? '0' + hours : hours.toString()\r\n const strMinutes = minutes < 10 ? '0' + minutes : minutes.toString()\r\n return `${strHours}:${strMinutes} ${ampm}`\r\n }\r\n\r\n getDays(cDate: any, counter: number) {\r\n const days: any = []\r\n let initDate: any = new Date(cDate)\r\n initDate = this.datePipe.transform(initDate, 'y-MM-dd')\r\n days.push(initDate)\r\n this.trainings[initDate] = []\r\n while (counter > 0) {\r\n let myDate: any = new Date(cDate)\r\n myDate = myDate.setDate(myDate.getDate() + 1)\r\n cDate = myDate\r\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\r\n days.push(myDate)\r\n this.trainings[myDate] = []\r\n counter = counter - 1\r\n }\r\n return days\r\n }\r\n\r\n getDaysInMonth(year: number, month: number): Date[] {\r\n const date = new Date(year, month, 1)\r\n const days: any = []\r\n this.trainings = {}\r\n while (date.getMonth() === month) {\r\n let myDate: any = new Date(date)\r\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\r\n days.push(myDate)\r\n this.trainings[myDate] = []\r\n date.setDate(date.getDate() + 1)\r\n }\r\n return days\r\n }\r\n\r\n getMonthsDropdownData() {\r\n this.allMonths.forEach((month: any) => {\r\n this.monthsDropdown.push(`${month} ${this.currentDate.getFullYear()}`)\r\n })\r\n }\r\n\r\n selectMonth(event: any) {\r\n const selectedMonth: any = new Date(event)\r\n this.currentDate = selectedMonth\r\n this.days = []\r\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\r\n this.startDate = this.days[0]\r\n this.endDate = this.days[this.days.length - 1]\r\n this.isDataLoading = true\r\n this.getInsiteData()\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sb-uic-calender-day',\r\n templateUrl: './calender-day.component.html',\r\n styleUrls: ['./calender-day.component.scss']\r\n})\r\nexport class CalenderDayComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() layoutType: any\r\n @Input() day: any\r\n @Input() dataLoading: boolean\r\n @Input() rowId: any\r\n @Input() eventDate: any\r\n webDisplayDate: string = \"\"\r\n mobileDisplayDate: string = \"\"\r\n currentDate: any = new Date()\r\n\r\n constructor(private datePipe: DatePipe) { }\r\n\r\n ngOnInit() {\r\n this.currentDate = this.datePipe.transform(this.currentDate, 'y-MM-dd')\r\n }\r\n\r\n openLink(link: string) {\r\n window.open(link, \"_blank\")\r\n }\r\n\r\n formatDate(date: any, type: string) {\r\n let fDate = new Date(date)\r\n if (type === 'web') {\r\n return this.datePipe.transform(fDate, 'E, dd LLL')\r\n }\r\n if (type === 'mob') {\r\n return this.datePipe.transform(fDate, 'E dd LLL')\r\n }\r\n }\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { CalenderComponent } from './calender.component';\r\nimport { MatIconModule, MatSelectModule } from '@angular/material';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { CalenderDayComponent } from './calender-day/calender-day.component';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n declarations: [CalenderComponent, CalenderDayComponent],\r\n exports: [CalenderComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers:[DatePipe, InsiteDataService],\r\n})\r\nexport class CalenderModule {}","import { Injectable } from '@angular/core';\r\nimport { NsContent } from '../_models/widget-content.model';\r\nimport { NsContentStripWithTabs } from '../_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model';\r\nimport { NsCommonStrip } from '../_common/common-strip/common-strip.model'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonMethodsService {\r\n\r\n constructor() { }\r\n\r\n transformContentsToWidgets(\r\n contents: NsContent.IContent[],\r\n strip: NsContentStripWithTabs.IContentStripUnit | NsCommonStrip.ICommonStripUnit,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n transformSkeletonToWidgets(\r\n strip: any\r\n ) {\r\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n },\r\n }));\r\n }\r\n\r\n handleCapitalize(str: string, type?: string): string {\r\n let returnValue = ''\r\n if (str) {\r\n if (type === 'name') {\r\n returnValue = str.split(' ').map(_str => {\r\n return _str.charAt(0).toUpperCase() + _str.slice(1)\r\n }).join(' ')\r\n } else {\r\n\r\n returnValue = str && (str.charAt(0).toUpperCase() + str.slice(1))\r\n }\r\n }\r\n return returnValue\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject } from '@angular/core';\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\r\nimport { NsCommonStrip } from './common-strip.model';\r\n// import { HttpClient } from '@angular/common/http'\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { NsContent } from '../../_models/widget-content.model';\r\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\r\nimport {\r\n TFetchStatus,\r\n LoggerService,\r\n EventService,\r\n ConfigurationsService,\r\n UtilityService,\r\n} from '@sunbird-cb/utils-v2';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { WidgetUserService } from '../../_services/widget-user.service';\r\n// import { environment } from 'src/environments/environment'\r\n// tslint:disable-next-line\r\nimport * as _ from 'lodash'\r\nimport { MatTabChangeEvent } from '@angular/material';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CommonMethodsService } from '../../_services/common-methods.service';\r\n\r\n\r\ninterface IStripUnitCommonData {\r\n key: string;\r\n canHideStrip: boolean;\r\n mode?: string;\r\n showStrip: boolean;\r\n disableTranslate: boolean;\r\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\r\n stripTitle: string;\r\n stripTitleLink?: {\r\n link: {\r\n queryParams: string\r\n },\r\n icon: string,\r\n queryParams: string\r\n };\r\n sliderConfig?: {\r\n showNavs: boolean,\r\n showDots: boolean,\r\n maxWidgets?: number\r\n cerificateCardMargin?: boolean\r\n };\r\n stripConfig: any;\r\n tabs?: NsCommonStrip.ICommonStripTab[] | undefined;\r\n stripName?: string;\r\n stripLogo?: string;\r\n description?: string;\r\n stripInfo?: NsCommonStrip.IStripInfo;\r\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n showOnNoData: boolean;\r\n showOnLoader: boolean;\r\n showOnError: boolean;\r\n loaderWidgets?: any;\r\n stripBackground?: string;\r\n secondaryHeading?: any;\r\n viewMoreUrl: any;\r\n}\r\n\r\n@Component({\r\n selector: 'sb-uic-common-strip',\r\n templateUrl: './common-strip.component.html',\r\n styleUrls: ['./common-strip.component.scss']\r\n})\r\nexport class CommonStripComponent extends WidgetBaseComponent\r\nimplements\r\nOnInit,\r\nOnDestroy,\r\nNsWidgetResolver.IWidgetData<NsCommonStrip.ICommonStrip> {\r\n @Input() widgetData!: NsCommonStrip.ICommonStrip;\r\n @HostBinding('id')\r\n public id = `ws-strip-miltiple_${Math.random()}`;\r\n stripsResultDataMap: { [key: string]: IStripUnitCommonData } = {};\r\n stripsKeyOrder: string[] = [];\r\n showAccordionData = true;\r\n showParentLoader = false;\r\n showParentError = false;\r\n showParentNoData = false;\r\n errorDataCount = 0;\r\n noDataCount = 0;\r\n successDataCount = 0;\r\n contentAvailable = true;\r\n baseUrl = this.configSvc.sitePath || '';\r\n veifiedKarmayogi = false;\r\n environment!: any;\r\n changeEventSubscription: Subscription | null = null;\r\n defaultMaxWidgets = 12;\r\n enrollInterval: any;\r\n todaysEvents: any = [];\r\n\r\n constructor(\r\n @Inject('environment') environment: any,\r\n private contentSvc: WidgetContentService,\r\n private loggerSvc: LoggerService,\r\n private eventSvc: EventService,\r\n private configSvc: ConfigurationsService,\r\n public utilitySvc: UtilityService,\r\n // private http: HttpClient,\r\n // private searchServSvc: SearchServService,\r\n private userSvc: WidgetUserService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private commonMethodsSvc: CommonMethodsService\r\n ) {\r\n super();\r\n this.environment = environment\r\n }\r\n\r\n ngOnInit() {\r\n // const url = window.location.href\r\n this.initData();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.changeEventSubscription) {\r\n this.changeEventSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n showAccordion(key: string) {\r\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\r\n return this.showAccordionData;\r\n }\r\n return true;\r\n }\r\n\r\n setHiddenForStrip(key: string) {\r\n this.stripsResultDataMap[key].showStrip = false;\r\n sessionStorage.setItem(`cstrip_${key}`, '1');\r\n }\r\n private getIfStripHidden(key: string): boolean {\r\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\r\n return Boolean(storageItem !== '1');\r\n }\r\n\r\n private initData() {\r\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\r\n if (this.widgetData.loader && this.widgetData.strips.length) {\r\n this.showParentLoader = true;\r\n }\r\n // null check if in case no strips key in config\r\n if(this.widgetData && this.widgetData.strips) {\r\n // Fetch the data\r\n for (const strip of this.widgetData.strips) {\r\n this.processStrip(strip, [], 'fetching', false, null);\r\n if(strip.dataType === 'in-hand' && this.widgetData[strip.dataKey]){\r\n this.processStrip(\r\n strip,\r\n this.commonMethodsSvc.transformContentsToWidgets(this.widgetData[strip.dataKey], strip),\r\n 'done',\r\n true,\r\n strip.viewMoreUrl || '',\r\n );\r\n } else {\r\n if (this.checkForEmptyWidget(strip)) {\r\n // this.fetchStripFromRequestData(strip, false);\r\n } else {\r\n this.processStrip(strip, [], 'done', true, null);\r\n }\r\n }\r\n }\r\n }\r\n // Subscription for changes\r\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\r\n .map(strip => ({\r\n key: strip.key,\r\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\r\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\r\n }))\r\n .filter(({ key, type, from }) => key && type && from);\r\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\r\n this.changeEventSubscription = this.eventSvc.events$\r\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\r\n .subscribe(event => {\r\n keyAndEvent\r\n .filter(e => e.type === event.eventType && e.from === event.from)\r\n .map(e => e.key)\r\n .forEach(k => this.fetchStripFromKey(k, false));\r\n });\r\n }\r\n\r\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\r\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\r\n if (stripData) {\r\n // this.fetchStripFromRequestData(stripData, calculateParentStatus);\r\n }\r\n }\r\n\r\n isStripShowing(data: any) {\r\n let count = 0;\r\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\r\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\r\n data.widgets.forEach((key: any) => {\r\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\r\n count = count + 1;\r\n }\r\n });\r\n if (count > 0) {\r\n data.showStrip = true;\r\n } else {\r\n data.showStrip = false;\r\n }\r\n }\r\n return data.showStrip;\r\n }\r\n\r\n get isMobile() {\r\n return this.utilitySvc.isMobile || false;\r\n }\r\n\r\n getdata(data: IStripUnitCommonData) {\r\n if (data.stripInfo) {\r\n return data.stripInfo.widget;\r\n }\r\n return {};\r\n\r\n }\r\n checkCondition(wData: NsCommonStrip.ICommonStrip, data: IStripUnitCommonData) {\r\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\r\n return !wData.strips[0].stripConfig.hideShowAll;\r\n }\r\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\r\n }\r\n checkVisible(data: IStripUnitCommonData) {\r\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\r\n }\r\n\r\n getContineuLearningLenth(data: IStripUnitCommonData) {\r\n return data.widgets ? data.widgets.length : 0;\r\n }\r\n getLength(data: IStripUnitCommonData) {\r\n if (!data.tabs || !data.tabs.length) {\r\n return data.widgets ? data.widgets.length : 0;\r\n } {\r\n // if tabs are there check if each tab has widgets and get the tab with max widgets\r\n const tabWithMaxWidgets = data.tabs.reduce(\r\n (prev, current) => {\r\n if (!prev.widgets && !current.widgets) {\r\n return current;\r\n }\r\n if (prev.widgets && current.widgets) {\r\n return (prev.widgets.length > current.widgets.length) ? prev : current;\r\n }\r\n if (current.widgets && !prev.widgets) {\r\n return current;\r\n }\r\n if (!current.widgets && prev.widgets) {\r\n return prev;\r\n }\r\n return current;\r\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\r\n // tslint:disable-next-line: align\r\n }, data.tabs[0]);\r\n // if tabs has atleast 1 widgets then strip will show or else not\r\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\r\n }\r\n }\r\n \r\n private async processStrip(\r\n strip: NsCommonStrip.ICommonStripUnit,\r\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\r\n fetchStatus: TFetchStatus,\r\n calculateParentStatus = true,\r\n _viewMoreUrl: any,\r\n tabsResults?: NsCommonStrip.ICommonStripTab[] | undefined,\r\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\r\n ) {\r\n const stripData = {\r\n viewMoreUrl: strip.viewMoreUrl,\r\n key: strip.key,\r\n canHideStrip: Boolean(strip.canHideStrip),\r\n showStrip: this.getIfStripHidden(strip.key),\r\n noDataWidget: strip.noDataWidget,\r\n errorWidget: strip.errorWidget,\r\n stripInfo: strip.info,\r\n stripTitle: strip.title,\r\n stripTitleLink: strip.stripTitleLink,\r\n dataType: strip.dataType,\r\n dataKey: strip.dataKey,\r\n disableTranslate: strip.disableTranslate,\r\n sliderConfig: strip.sliderConfig,\r\n tabs: tabsResults ? tabsResults : strip.tabs,\r\n stripName: strip.name,\r\n mode: strip.mode,\r\n stripConfig: strip.stripConfig,\r\n stripBackground: strip.stripBackground,\r\n secondaryHeading: strip.secondaryHeading,\r\n loaderWidgets: strip.loaderWidgets || [],\r\n widgets:\r\n fetchStatus === 'done'\r\n ? [\r\n ...(strip.preWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ...results,\r\n ...(strip.postWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ]\r\n : [],\r\n showOnNoData: Boolean(\r\n strip.noDataWidget &&\r\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\r\n fetchStatus === 'done',\r\n ),\r\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\r\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\r\n };\r\n // const stripData = this.stripsResultDataMap[strip.key]\r\n this.stripsResultDataMap = {\r\n ...this.stripsResultDataMap,\r\n [strip.key]: stripData,\r\n };\r\n if (!tabsResults) {\r\n if (\r\n calculateParentStatus &&\r\n (fetchStatus === 'done' || fetchStatus === 'error') &&\r\n stripData.widgets\r\n ) {\r\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\r\n }\r\n if (calculateParentStatus && !(results && results.length > 0)) {\r\n this.contentAvailable = false;\r\n } else if (results && results.length > 0) {\r\n this.contentAvailable = true;\r\n }\r\n } else {\r\n this.contentAvailable = true;\r\n }\r\n }\r\n\r\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\r\n let returnValue = 0;\r\n if (key === 'cbpPlan') {\r\n if (stripsResultDataMap.tabs.length) {\r\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\r\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\r\n }\r\n }\r\n return returnValue;\r\n }\r\n \r\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\r\n if (fetchStatus === 'done' && !stripWidgetsCount) {\r\n this.noDataCount += 1;\r\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\r\n this.successDataCount += 1;\r\n } else if (fetchStatus === 'error') {\r\n this.errorDataCount += 1;\r\n }\r\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\r\n const totalCount = this.widgetData.strips.length;\r\n if (this.successDataCount > 0 && settledCount < totalCount) {\r\n return;\r\n }\r\n this.showParentLoader = settledCount !== totalCount;\r\n this.showParentNoData =\r\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\r\n this.showParentError = this.errorDataCount === totalCount;\r\n }\r\n checkForEmptyWidget(strip: NsCommonStrip.ICommonStripUnit): boolean {\r\n if (\r\n strip.request &&\r\n ((strip.request.api && Object.keys(strip.request.api).length) ||\r\n (strip.request.search && Object.keys(strip.request.search).length) ||\r\n (strip.request.searchRegionRecommendation &&\r\n Object.keys(strip.request.searchRegionRecommendation).length) ||\r\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\r\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\r\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\r\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length)\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitCommonData, stripKey: string) {\r\n\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateLabel(label, type, '');\r\n }\r\n\r\n identify(index: number, item: any) {\r\n if (index >= 0) { }\r\n return item;\r\n }\r\n tracker(index: number, item: any) {\r\n if (index >= 0) { }\r\n return _.get(item, 'widgetData.content.identifier')\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CommonStripComponent } from './common-strip.component';\r\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\r\nimport {\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule} from '@angular/material';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\r\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\r\n\r\n@NgModule({\r\n declarations: [CommonStripComponent],\r\n imports: [\r\n SbUiResolverModule,\r\n CommonModule,\r\n RouterModule,\r\n HorizontalScrollerV2Module,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule,\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 ],\r\n exports: [CommonStripComponent]\r\n})\r\nexport class CommonStripModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-announcements',\r\n templateUrl: './announcements.component.html',\r\n styleUrls: ['./announcements.component.scss']\r\n})\r\nexport class AnnouncementsComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() layoutType: any\r\n @Input() mobileHeight: boolean = false\r\n @Input() fetchDataFromApi: boolean = false\r\n @Input() channelId: any\r\n @Output() openDialog = new EventEmitter<any>()\r\n isLoading: boolean = false\r\n announcements: any = []\r\n expand = false\r\n expanded: boolean = false\r\n\r\n constructor(public insightSvc: InsiteDataService) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.fetchDataFromApi) {\r\n this.isLoading = true\r\n this.fetchData()\r\n }\r\n }\r\n\r\n fetchData() {\r\n let request = {\r\n filterCriteriaMap: {\r\n channel: [this.channelId],\r\n //channel: [\"01381906916850892825\"],\r\n },\r\n requestedFields: [\r\n \"name\",\r\n \"description\",\r\n \"createdOn\",\r\n \"updatedOn\",\r\n \"category\"\r\n ],\r\n orderBy: \"createdOn\",\r\n orderDirection: \"ASC\",\r\n facets: [\r\n \"channel\"\r\n ],\r\n pageSize: this.objectData.pageSize\r\n }\r\n this.insightSvc.fetchAnnouncementsData(request).subscribe((res: any)=> {\r\n if(res && res.result && res.result.data) {\r\n res.result.data.forEach((resp: any) => {\r\n this.announcements.push({\r\n value: resp.description,\r\n expanded: false\r\n })\r\n })\r\n }\r\n if (this.announcements.length > 3) {\r\n this.expand = true\r\n }\r\n this.objectData.list = this.announcements\r\n this.isLoading = false\r\n }, error => {\r\n console.log(error)\r\n this.objectData.list = []\r\n this.isLoading = false\r\n })\r\n }\r\n\r\n viewMoreOrLess(item: any) {\r\n if (item.value.length > 152) {\r\n item.expanded = !item.expanded\r\n }\r\n }\r\n\r\n openAnnouncements() {\r\n this.openDialog.emit(true)\r\n }\r\n\r\n showMoreOrLess() {\r\n this.expanded = !this.expanded\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { AnnouncementsComponent } from './announcements.component';\r\nimport { MatIconModule } from '@angular/material';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AnnouncementsComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [AnnouncementsComponent],\r\n})\r\nexport class AnnouncementsModule { }","import { Component, Input, OnInit } from '@angular/core';\r\nimport * as moment_ from 'moment';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\nconst moment = moment_;\r\n@Component({\r\n selector: 'sb-uic-top-learners',\r\n templateUrl: './top-learners.component.html',\r\n styleUrls: ['./top-learners.component.scss']\r\n})\r\nexport class TopLearnersComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() channelId: any\r\n @Input() channnelName: any\r\n loading: boolean = false\r\n month: string = ''\r\n results: any = []\r\n\r\n colors: any = [\r\n '#EB7181', // red\r\n '#306933', // green\r\n '#000000', // black\r\n '#3670B2', // blue\r\n '#4E9E87',\r\n '#7E4C8D',\r\n '#EB7181', // red\r\n '#306933', // green\r\n '#000000', // black\r\n '#3670B2', // blue\r\n ]\r\n\r\n constructor(public insightSvc: InsiteDataService,) { }\r\n\r\n ngOnInit() {\r\n this.getData()\r\n this.month = new Date().toLocaleString('default', { month: 'long' })\r\n }\r\n\r\n getData() {\r\n this.loading = true\r\n this.insightSvc.fetchLearner().subscribe((res: any)=> {\r\n if (res && res.result && res.result.result && res.result.result.length) {\r\n this.results = res.result.result\r\n this.month = moment().month(Number(res.result.result[0].month) - 1).format('MMMM')\r\n }\r\n this.loading = false\r\n }, (_error: any) => {\r\n // tslint:disable-next-line: align\r\n this.loading = false\r\n })\r\n }\r\n\r\n getRank(rank: number) {\r\n if (rank === 1) {\r\n return \"1st\"\r\n } \r\n if (rank === 2) {\r\n return \"2nd\"\r\n } \r\n if (rank === 3) {\r\n return \"3rd\"\r\n } else {\r\n return `${rank}th`\r\n } \r\n }\r\n\r\n getColor() {\r\n let circleColor = ''\r\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\r\n circleColor = this.colors[randomIndex]\r\n return circleColor\r\n }\r\n\r\n createInititals(name: string) {\r\n let initials = ''\r\n const array = name.toString().split(' ')\r\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\r\n initials += array[0].charAt(0)\r\n initials += array[1].charAt(0)\r\n } else {\r\n for (let i = 0; i < name.length; i += 1) {\r\n if (name.charAt(i) === ' ') {\r\n continue\r\n }\r\n if (name.charAt(i) === name.charAt(i)) {\r\n initials += name.charAt(i)\r\n\r\n if (initials.length === 2) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n return initials.toUpperCase()\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TopLearnersComponent } from './top-learners.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { MatTooltipModule } from '@angular/material';\r\n\r\n@NgModule({\r\n declarations: [TopLearnersComponent],\r\n imports: [\r\n CommonModule,\r\n SkeletonLoaderLibModule,\r\n MatTooltipModule\r\n ],\r\n exports: [TopLearnersComponent],\r\n})\r\nexport class TopLearnersModule { }","import { Directive, Input, ElementRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sbUicScrollableItem]'\r\n})\r\nexport class ScrollableItemDirective {\r\n\r\n @Input('sbUicScrollableItem') public key: string\r\n constructor(private el: ElementRef<HTMLElement>) {}\r\n\r\n public scrollIntoView(blockValue: any) {\r\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: blockValue });\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-cbp-plan',\r\n templateUrl: './cbp-plan.component.html',\r\n styleUrls: ['./cbp-plan.component.scss']\r\n})\r\nexport class CbpPlanComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() layoutType: any\r\n @Input() mobileHeight: boolean = false\r\n @Input() fetchDataFromApi: boolean = false\r\n @Input() channelId: any\r\n @Output() openDialog = new EventEmitter<any>()\r\n isLoading: boolean = false\r\n currentIndex = 0\r\n styleData: any = {}\r\n contentdata: any = []\r\n\r\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\r\n constructor(private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService) { }\r\n\r\n ngOnInit() {\r\n this.styleData = this.objectData && this.objectData.sliderData && this.objectData.sliderData.styleData\r\n if (this.objectData && this.objectData.list) {\r\n this.objectData.list.forEach((contentEle: any) => {\r\n let localData = {}\r\n localData['title'] = contentEle.title\r\n localData['downloaUrl'] = contentEle.downloaUrl\r\n localData['cardSubType'] = \"card-wide-lib\"\r\n localData['cardCustomeClass'] = \"\"\r\n this.contentdata.push(localData)\r\n })\r\n }\r\n }\r\n\r\n getCurrentIndex(indexValue: any) {\r\n this.currentIndex = indexValue\r\n }\r\n\r\n getFileName(item: any) {\r\n console.log(item.downloadUrl)\r\n return item.downloadUrl.split(\"/\").at(-1)\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateActualLabel(label, type, '');\r\n }\r\n\r\n downloadCBPPlan(item: any) {\r\n const downloadUrl = item.downloaUrl\r\n const xhr = new XMLHttpRequest()\r\n xhr.open('GET', downloadUrl, true)\r\n xhr.responseType = 'blob'\r\n\r\n xhr.onload = function() {\r\n if (xhr.status === 200) {\r\n const blob = new Blob([xhr.response], { type: 'application/pdf' })\r\n const url = window.URL.createObjectURL(blob)\r\n const a = document.createElement('a')\r\n a.href = url\r\n a.download = downloadUrl.split(\"/\").at(-1)\r\n document.body.appendChild(a)\r\n a.click()\r\n document.body.removeChild(a)\r\n window.URL.revokeObjectURL(url)\r\n } else {\r\n console.error('Error downloading the PDF', xhr.statusText)\r\n }\r\n }\r\n xhr.onerror = function() {\r\n console.error('Network error')\r\n }\r\n xhr.send()\r\n }\r\n}\r\n","import { Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core'\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\r\nimport { ICarousel, ICarouselStyle } from './sliders-ng-content.model'\r\nimport { Subscription, interval } from 'rxjs'\r\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\r\n\r\n@Component({\r\n selector: 'sb-uic-sliders-ng-content',\r\n templateUrl: './sliders-ng-content.component.html',\r\n styleUrls: ['./sliders-ng-content.component.scss'],\r\n})\r\nexport class SlidersNgContentLibComponent extends WidgetBaseComponent\r\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\r\n @Input() widgetData!: ICarousel[]\r\n @Input() styleData!: ICarouselStyle\r\n @Input() title: any = ''\r\n @Input() loadNgContentData: boolean = false\r\n @Input() autoScroll: boolean = false\r\n @Output() currentIndexValue = new EventEmitter<any>()\r\n \r\n @HostBinding('id')\r\n public id = `banner_${Math.random()}`\r\n private defaultMenuSubscribe: Subscription | null = null\r\n isLtMedium$ = this.valueSvc.isLtMedium$\r\n @Input() currentIndex = 0\r\n slideInterval: Subscription | null = null\r\n isMobile = false\r\n\r\n constructor(\r\n private events: EventService,\r\n private valueSvc: ValueService\r\n ) {\r\n super()\r\n }\r\n\r\n ngOnInit() {\r\n if(this.autoScroll) {\r\n this.reInitiateSlideInterval()\r\n }\r\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\r\n this.isMobile = isLtMedium\r\n })\r\n }\r\n reInitiateSlideInterval() {\r\n if (this.widgetData && this.widgetData.length > 1) {\r\n try {\r\n if (this.slideInterval) {\r\n this.slideInterval.unsubscribe()\r\n }\r\n } catch (e) {\r\n } finally {\r\n this.slideInterval = interval(8000).subscribe(() => {\r\n if (this.currentIndex === this.widgetData.length - 1) {\r\n this.currentIndex = 0\r\n this.currentIndexValue.emit(this.currentIndex)\r\n } else {\r\n this.currentIndex += 1\r\n this.currentIndexValue.emit(this.currentIndex)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n slideTo(index: number) {\r\n if (index >= 0 && index < this.widgetData.length) {\r\n this.currentIndex = index\r\n this.currentIndexValue.emit(this.currentIndex)\r\n } else if (index === this.widgetData.length) {\r\n this.currentIndex = 0\r\n this.currentIndexValue.emit(this.currentIndex)\r\n } else {\r\n this.currentIndex = this.widgetData.length + index\r\n this.currentIndexValue.emit(this.currentIndex)\r\n }\r\n if(this.autoScroll) {\r\n this.reInitiateSlideInterval()\r\n }\r\n }\r\n\r\n get isOpenInNewTab() {\r\n const currentData = this.widgetData[this.currentIndex]\r\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\r\n return true\r\n } return false\r\n }\r\n\r\n openInNewTab() {\r\n const currentData = this.widgetData[this.currentIndex]\r\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\r\n window.open(currentData.redirectUrl)\r\n }\r\n }\r\n raiseTelemetry(bannerUrl: string | undefined) {\r\n this.openInNewTab()\r\n const path = window.location.pathname.replace('/', '')\r\n const url = path + window.location.search\r\n\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'banner',\r\n },\r\n {\r\n pageUrl: url,\r\n bannerRedirectUrl: bannerUrl,\r\n },\r\n {\r\n pageIdExt: 'banner',\r\n module: WsEvents.EnumTelemetrymodules.CONTENT,\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.defaultMenuSubscribe) {\r\n this.defaultMenuSubscribe.unsubscribe()\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { SlidersNgContentLibComponent } from './sliders-ng-content.component'\r\nimport { RouterModule } from '@angular/router'\r\nimport { ImageResponsiveModule } from '../../_directives/image-responsive/image-responsive.module'\r\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\r\n/* tslint:disable */\r\nimport Hammer from 'hammerjs'\r\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\r\n/* tslint:enable */\r\nexport class MyHammerConfig extends HammerGestureConfig {\r\n buildHammer(element: HTMLElement) {\r\n const mc = new Hammer(element, {\r\n touchAction: 'pan-y',\r\n })\r\n return mc\r\n }\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\n@NgModule({\r\n declarations: [SlidersNgContentLibComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n NavigationModule,\r\n ImageResponsiveModule,\r\n ],\r\n exports: [SlidersNgContentLibComponent],\r\n entryComponents: [SlidersNgContentLibComponent],\r\n providers: [\r\n {\r\n provide: HAMMER_GESTURE_CONFIG,\r\n useClass: MyHammerConfig,\r\n },\r\n ],\r\n})\r\nexport class SlidersNgContentLibModule { }\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ScrollableItemDirective } from './scrollable-item.directive'\r\n\r\n@NgModule({\r\n declarations: [ScrollableItemDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ScrollableItemDirective],\r\n})\r\nexport class ScrollableItemModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CbpPlanComponent } from './cbp-plan.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { MatIconModule } from '@angular/material';\r\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\r\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [CbpPlanComponent],\r\n imports: [\r\n CommonModule,\r\n SkeletonLoaderLibModule,\r\n MatIconModule,\r\n ScrollableItemModule,\r\n SlidersNgContentLibModule,\r\n ],\r\n exports: [CbpPlanComponent]\r\n})\r\nexport class CbpPlanModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { ConsumptionComponent } from './consumption.component';\r\nimport { ContentStripWithTabsLibModule } from './_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\r\nimport { SlidersLibModule } from '../lib/_common/sliders/sliders.module';\r\nimport { DataPointsModule } from './_common/data-points/data-points.module';\r\nimport { CalenderModule } from './_common/calender/calender.module';\r\nimport { CommonStripModule } from './_common/common-strip/common-strip.module';\r\nimport { AnnouncementsModule } from './_common/announcements/announcements.module';\r\nimport { TopLearnersModule } from './_common/top-learners/top-learners.module';\r\nimport { CbpPlanModule } from './_common/cbp-plan/cbp-plan.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ConsumptionComponent,],\r\n imports: [\r\n ContentStripWithTabsLibModule,\r\n SlidersLibModule\r\n ],\r\n exports: [ConsumptionComponent,\r\n ContentStripWithTabsLibModule,\r\n SlidersLibModule,\r\n DataPointsModule,\r\n CalenderModule,\r\n CommonStripModule,\r\n AnnouncementsModule,\r\n TopLearnersModule,\r\n CbpPlanModule,\r\n ],\r\n})\r\nexport class ConsumptionModule { }\r\n","export const ROOT_WIDGET_CONFIG = {\r\n \r\n card: {\r\n _type: 'cardLib',\r\n cardResource: 'cardContentLib'\r\n },\r\n}\r\n","import { NsContent } from './widget-content.model';\r\n\r\nexport namespace NsCardContent {\r\n export interface ICard {\r\n content: NsContent.IContent;\r\n cardSubType: TCardSubType;\r\n context: { pageSection: string; position?: number };\r\n intranetMode?: 'greyOut' | 'hide';\r\n deletedMode?: 'greyOut' | 'hide';\r\n likes?: number;\r\n contentTags?: IContentTags;\r\n stateData: any;\r\n cardCustomeClass?: any;\r\n }\r\n\r\n export interface IContentTags {\r\n daysSpan?: number;\r\n excludeContentType?: NsContent.EContentTypes[];\r\n excludeMimeType?: string[];\r\n tag: string;\r\n criteriaField?: string;\r\n }\r\n\r\n export type TCardSubType =\r\n | 'standard'\r\n | 'minimal'\r\n | 'space-saving'\r\n | 'card-user-details'\r\n | 'basic-info'\r\n | 'basic-details'\r\n | 'card-description-back'\r\n | 'network-card'\r\n | 'user-card';\r\n\r\n export enum EContentStatus {\r\n LIVE = 'Live',\r\n EXPIRED = 'Expired',\r\n DELETED = 'Deleted',\r\n MARK_FOR_DELETION = 'MarkedForDeletion',\r\n }\r\n export enum ACBPConst {\r\n UPCOMING = 'upcoming',\r\n ALL = 'All',\r\n OVERDUE = 'overdue',\r\n SUCCESS = 'success',\r\n }\r\n\r\n export enum IGOTConst {\r\n COMPETENCIES = 'competencies_v5',\r\n RETIRED = 'Retired',\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { WidgetBaseComponent, NsWidgetResolver } from '@sunbird-cb/resolver-v2';\r\nimport { NsCardContent } from '../../_models/card-content.model';\r\nimport { UtilityService } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-cards',\r\n templateUrl: './cards.component.html',\r\n styleUrls: ['./cards.component.scss']\r\n})\r\nexport class CardsComponent extends WidgetBaseComponent\r\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Output() triggerTelemetry = new EventEmitter<any>()\r\n isIntranetAllowedSettings = false\r\n cbPlanMapData: any\r\n cbPlanInterval: any\r\n enrollInterval: any\r\n enrollmentMapData: any\r\n constructor(private utilitySvc: UtilityService,\r\n private contSvc: WidgetContentService,\r\n public router: Router\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.cbPlanInterval = setInterval(() => {\r\n this.getCbPlanData()\r\n }, 1000)\r\n \r\n this.enrollInterval = setInterval(() => {\r\n this.getEnrollmentData()\r\n // tslint:disable-next-line\r\n }, 1000)\r\n }\r\n\r\n get isLiveOrMarkForDeletion() {\r\n if (\r\n !this.widgetData.content.status ||\r\n this.widgetData.content.status === 'Live' ||\r\n this.widgetData.content.status === 'MarkedForDeletion'\r\n ) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n get showIntranetContent() {\r\n if (this.widgetData.content.isInIntranet && this.utilitySvc.isMobile) {\r\n return !this.isIntranetAllowedSettings\r\n }\r\n return false\r\n }\r\n async getRedirectUrlData(content: any){\r\n if(content.externalId) {\r\n this.router.navigate(\r\n [`app/toc/ext/${content.contentId}`])\r\n } else {\r\n let urlData = await this.contSvc.getResourseLink(content)\r\n this.router.navigate(\r\n [urlData.url],\r\n {\r\n queryParams: urlData.queryParams\r\n })\r\n }\r\n \r\n }\r\n getCbPlanData() {\r\n let cbpList: any={}\r\n if (localStorage.getItem('cbpData')) {\r\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\r\n if (cbpListArr && cbpListArr.length) {\r\n cbpListArr.forEach((data: any) => {\r\n cbpList[data.identifier] = data\r\n })\r\n }\r\n this.cbPlanMapData = cbpList\r\n // this.karmaPointLoading = false\r\n clearInterval(this.cbPlanInterval)\r\n }\r\n }\r\n\r\n getEnrollmentData() {\r\n if (localStorage.getItem('enrollmentMapData')) {\r\n this.enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\r\n clearInterval(this.enrollInterval)\r\n }\r\n }\r\n\r\n raiseCardClick(data: any) {\r\n this.triggerTelemetry.emit(data)\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\n\r\n@Component({\r\n selector: 'ws-cb-widget-card-resource',\r\n templateUrl: './card-resource.component.html',\r\n styleUrls: ['./card-resource.component.scss'],\r\n})\r\nexport class CardResourceComponent extends WidgetBaseComponent\r\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-portrait',\r\n templateUrl: './card-portrait.component.html',\r\n styleUrls: ['./card-portrait.component.scss']\r\n})\r\nexport class CardPortraitComponent implements OnInit {\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Input() cbPlanMapData: any\r\n isCardFlipped:boolean = false\r\n acbpConstants = NsCardContent.ACBPConst\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n // for telemetry\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n // for redirection\r\n this.contentData.emit(contentData)\r\n }\r\n}\r\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipePublicURL',\r\n})\r\nexport class PipePublicURL implements PipeTransform {\r\n environment: any\r\n constructor(\r\n @Inject('environment') environment: any,){\r\n this.environment = environment\r\n }\r\n\r\n transform(value: string): any {\r\n const mainUrl = value && value.split('/content').pop() || ''\r\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\r\n return value ? finalURL : ''\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipePublicURL } from './pipe-public-URL.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipePublicURL],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipePublicURL],\r\n})\r\nexport class PipePublicURLModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'objectToArray'\r\n})\r\nexport class ObjectToArrayPipe implements PipeTransform {\r\n // transform(value: any, ...args: any[]): any[] {\r\n // console.log(\"function called\")\r\n // if (!value) {\r\n // return [];\r\n // }\r\n // console.log(Object.keys(value).map(key => ({ key, value: value[key] })), \"Object.keys(value).map(key => ({ key, value: value[key] }))==----------\")\r\n // return Object.keys(value).map(key => ({ key, value: value[key] }));\r\n // }\r\n transform(...args: any[]): any[] { \r\n return args; \r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ObjectToArrayPipe } from './object-to-array.pipe'\r\n\r\n@NgModule({\r\n declarations: [ObjectToArrayPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ObjectToArrayPipe],\r\n})\r\nexport class ObjectToArrayPipeModule { }","import { Component, OnInit, Input } from '@angular/core'\r\nimport { NsContent } from '../../_models/widget-content.model'\r\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service'\r\n\r\n@Component({\r\n selector: 'sb-uic-display-content-type',\r\n templateUrl: './display-content-type-lib.component.html',\r\n styleUrls: ['./display-content-type-lib.component.scss'],\r\n})\r\nexport class DisplayContentTypeLibComponent implements OnInit {\r\n @Input() useTranslation: boolean = true\r\n @Input() displayContentType: NsContent.EDisplayContentTypes = NsContent.EDisplayContentTypes.DEFAULT\r\n displayContentTypeEnum = NsContent.EDisplayContentTypes\r\n constructor(private langtranslations: MultilingualTranslationsService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateLabel(label, type, '')\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { DisplayContentTypeLibComponent } from './display-content-type-lib.component'\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms'\r\n\r\n@NgModule({\r\n declarations: [DisplayContentTypeLibComponent],\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule],\r\n exports: [DisplayContentTypeLibComponent],\r\n})\r\nexport class DisplayContentTypeLibModule {}\r\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';\r\nimport { NsCardUser } from '../../../_models/card-users.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-user',\r\n templateUrl: './card-user.component.html',\r\n styleUrls: ['./card-user.component.scss']\r\n})\r\nexport class CardUserComponent implements OnInit {\r\n @Input() widgetData!: NsCardUser.ICard;\r\n @Output() userData = new EventEmitter<any>()\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n }\r\n }\r\n\r\n getRedirectUrlData(userData: any){\r\n this.userData.emit(userData)\r\n }\r\n raiseTelemetry() {\r\n // if(this.forPreview){\r\n // return\r\n // }\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: `${this.widgetType}-${this.widgetSubType}`,\r\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\r\n },\r\n {\r\n id: this.widgetData.content.userId,\r\n // type: this.widgetData.user.primaryCategory,\r\n //context: this.widgetData.context,\r\n rollup: {},\r\n // ver: `${this.widgetData.user.version}${''}`,\r\n },\r\n {\r\n pageIdExt: `${_.camelCase('user')}-card`,\r\n module: _.camelCase('user'),\r\n })\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\n \r\n@Component({\r\n selector: 'sb-uic-card-landscape',\r\n templateUrl: './card-landscape.component.html',\r\n styleUrls: ['./card-landscape.component.scss']\r\n})\r\nexport class CardLandscapeComponent implements OnInit {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Output() triggerTelemetry = new EventEmitter<any>()\r\n @Input() cbPlanMapData: any\r\n isCardFlipped:boolean = false\r\n defaultThumbnail: any\r\n acbpConstants = NsCardContent.ACBPConst\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n cbPlanInterval: any\r\n \r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n this.cbPlanInterval = setInterval(() => {\r\n this.getCbPlanData()\r\n }, 1000)\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n this.contentData.emit(contentData)\r\n }\r\n raiseTelemetry(content: any) {\r\n this.triggerTelemetry.emit(content)\r\n }\r\n\r\n\r\n getCbPlanData() {\r\n let cbpList: any={}\r\n if (localStorage.getItem('cbpData')) {\r\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\r\n if (cbpListArr && cbpListArr.length) {\r\n cbpListArr.forEach((data: any) => {\r\n cbpList[data.identifier] = data\r\n })\r\n }\r\n // this.cbPlanMapData = cbpList\r\n // this.karmaPointLoading = false\r\n clearInterval(this.cbPlanInterval)\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-wide',\r\n templateUrl: './card-wide.component.html',\r\n styleUrls: ['./card-wide.component.scss']\r\n})\r\nexport class CardWideComponent implements OnInit {\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n isCardFlipped:boolean = false\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n \r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n getRedirectUrlData(contentData: any){\r\n this.contentData.emit(contentData)\r\n }\r\n raiseTelemetry() {\r\n // if(this.forPreview){\r\n // return\r\n // }\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: `${this.widgetType}-${this.widgetSubType}`,\r\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\r\n },\r\n {\r\n id: this.widgetData.content.identifier,\r\n type: this.widgetData.content.primaryCategory,\r\n //context: this.widgetData.context,\r\n rollup: {},\r\n ver: `${this.widgetData.content.version}${''}`,\r\n },\r\n {\r\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\r\n module: _.camelCase(this.widgetData.content.primaryCategory),\r\n })\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-mdo-channel',\r\n templateUrl: './card-mdo-channel.component.html',\r\n styleUrls: ['./card-mdo-channel.component.scss']\r\n})\r\nexport class CardMDOChannelComponent implements OnInit {\r\n @Input() widgetData!: NsContent.IContent;\r\n @Output() channelData = new EventEmitter<any>()\r\n @Output() emitTelemetry = new EventEmitter<any>()\r\n @Input() isCardLoading: boolean = false\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = ''\r\n widgetSubType: any =''\r\n\r\n constructor(\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,\r\n public router: Router) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n raiseTelemetry(contentData: any) {\r\n this.emitTelemetry.emit(contentData)\r\n if (this.widgetData) {\r\n contentData['typeOfTelemetry'] = 'mdo-channel'\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n }\r\n channelClick(channeldata:any) {\r\n this.channelData.emit(channeldata)\r\n }\r\n\r\n redirectTo(content: any) {\r\n this.router.navigate([`/app/learn/mdo-channels/${content.orgName}/${content.identifier}/micro-sites`])\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-wide-v2',\r\n templateUrl: './card-wide-v2.component.html',\r\n styleUrls: ['./card-wide-v2.component.scss']\r\n})\r\nexport class CardWideV2Component implements OnInit {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() cbPlanMapData: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Output() triggerTelemetry = new EventEmitter<any>()\r\n isCardFlipped:boolean = false\r\n acbpConstants = NsCardContent.ACBPConst\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n this.contentData.emit(contentData)\r\n }\r\n raiseTelemetry(contentData: any) {\r\n this.triggerTelemetry.emit(contentData)\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { Router } from '@angular/router';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-karma-programs',\r\n templateUrl: './card-karma-programs.component.html',\r\n styleUrls: ['./card-karma-programs.component.scss']\r\n})\r\nexport class CardKarmaProgramsComponent implements OnInit {\r\n\r\n @Input() widgetData!: NsContent.IContent;\r\n @Input() randomColorApply: boolean = false\r\n @Output() userData = new EventEmitter<any>()\r\n @Input() isCardLoading: boolean = false\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = ''\r\n widgetSubType: any =''\r\n randomColors: any = [\r\n '#EF941D',\r\n '#F97440',\r\n '#35B5B0',\r\n '#9988FF',\r\n '#254092',\r\n '#926525',\r\n '#4F72DF'\r\n ]\r\n\r\n constructor(\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,\r\n private router: Router) {\r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n this.setRandomColor()\r\n }\r\n\r\n setRandomColor(){\r\n if(this.widgetData && this.widgetData.content) {\r\n if(this.randomColorApply){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\r\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\r\n }else {\r\n this.widgetData.content['bgColor'] = '#1a4ca1'\r\n }\r\n }\r\n }\r\n\r\n \r\n\r\n get getRandomColors(){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\r\n return this.randomColors[randomIndex1]\r\n }\r\n\r\n redirectTo(data: any) {\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n data['typeOfTelemetry'] = 'karma-programs'\r\n }\r\n this.contSvc.changeTelemetryData(data)\r\n this.router.navigate(\r\n [`/app/learn/karma-programs/${data.title}/${data.playListKey}/${data.orgId}/micro-sites`],\r\n )\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-karma-programs-v2',\r\n templateUrl: './card-karma-programs-v2.component.html',\r\n styleUrls: ['./card-karma-programs-v2.component.scss']\r\n})\r\nexport class CardKarmaProgramsV2Component implements OnInit {\r\n\r\n @Input() widgetData!: NsContent.IContent;\r\n @Input() randomColorApply: boolean = false\r\n @Output() userData = new EventEmitter<any>()\r\n @Output() raiseTemeletry = new EventEmitter<any>()\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = ''\r\n widgetSubType: any =''\r\n randomColors: any = [\r\n '#EF941D',\r\n '#F97440',\r\n '#35B5B0',\r\n '#9988FF',\r\n '#254092',\r\n '#926525',\r\n '#4F72DF'\r\n ]\r\n\r\n constructor(\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private router : Router,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n this.setRandomColor()\r\n }\r\n\r\n setRandomColor(){\r\n if(this.widgetData && this.widgetData.content) {\r\n if(this.randomColorApply){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\r\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\r\n }else {\r\n this.widgetData.content['bgColor'] = '#1a4ca1'\r\n }\r\n }\r\n }\r\n\r\n redirectTo(content: any) {\r\n this.raiseTemeletry.emit(content)\r\n this.router.navigate(\r\n [`/app/learn/karma-programs/${content.title}/${content.playListKey}/${content.orgId}/micro-sites`],\r\n )\r\n }\r\n\r\n get getRandomColors(){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\r\n return this.randomColors[randomIndex1]\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-provider-card',\r\n templateUrl: './provider-card.component.html',\r\n styleUrls: ['./provider-card.component.scss']\r\n})\r\nexport class ProviderCardComponent implements OnInit {\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() randomColorApply: boolean = true\r\n @Input() isCardLoading: boolean = false\r\n\r\n colors = [\r\n '#EF941D', '#F97440', '#35B5B0', '#9988FF', '#816FEC',\r\n '#254092', '#926525', '#4F72DF'\r\n ];\r\n\r\n constructor(private router: Router) {}\r\n\r\n ngOnInit() {\r\n this.setRandomColor()\r\n }\r\n\r\n setRandomColor(){\r\n if(this.widgetData && this.widgetData.content) {\r\n if(this.randomColorApply){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.colors.length))\r\n this.widgetData.content['bgColor'] = this.colors[randomIndex1]\r\n }else {\r\n this.widgetData.content['bgColor'] = '#1a4ca1'\r\n }\r\n }\r\n }\r\n \r\n\r\n redirectTo(content: any) { \r\n this.router.navigate([`/app/learn/browse-by/provider/${content.name}/${content.orgId}/micro-sites`])\r\n }\r\n\r\n\r\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-portrait-ext',\r\n templateUrl: './card-portrait-ext.component.html',\r\n styleUrls: ['./card-portrait-ext.component.scss']\r\n})\r\nexport class CardPortraitExtComponent implements OnInit {\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Input() cbPlanMapData: any\r\n isCardFlipped:boolean = false\r\n acbpConstants = NsCardContent.ACBPConst\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n if (this.widgetData && this.widgetData.content) {\r\n this.widgetData.content.duration = this.widgetData.content.duration * 60\r\n }\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n // for telemetry\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n // for redirection\r\n this.contentData.emit(contentData)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n// import { WidgetUserService } from '../../../../_services/widget-user.service';\r\nimport { ConfigurationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../../../_services/widget-content.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-assessment',\r\n templateUrl: './card-assessment.component.html',\r\n styleUrls: ['./card-assessment.component.css']\r\n})\r\n\r\n// @Directive({\r\n// selector: '[callFunctionOnInit]'\r\n// })\r\nexport class CardAssessmentComponent implements OnInit {\r\n @Input() widgetData!: NsContent.IContent;\r\n @Input() enrollmentMapData: any\r\n @Output() contentData = new EventEmitter<any>()\r\n @Input() isCardLoading: boolean = false\r\n stripData: any = []\r\n enrollList: any = []\r\n activeResource: any = []\r\n defaultThumbnail: any\r\n defaultSLogo: any\r\n daysRemaining: number = 0;\r\n startDate: any\r\n endDate: any\r\n daysPending: boolean = false\r\n daysFinish: boolean = false\r\n private intervalId: any;\r\n days: number;\r\n hours: number;\r\n minutes: number;\r\n constructor(private configSvc: ConfigurationsService, private contSvc: WidgetContentService,) { }\r\n\r\n ngOnInit(): void {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n }\r\n }\r\n\r\n startCountdown(data: any): void {\r\n let startDate = data.startDate\r\n this.updateCountdown(startDate);\r\n // this.intervalId = setInterval(() => {\r\n // this.updateCountdown(startDate);\r\n // }, 1000);\r\n }\r\n\r\n // Method to update the countdown values\r\n updateCountdown(startDate: any): void {\r\n let now = new Date().getTime()\r\n let startingDate: any = new Date(startDate).getTime()\r\n // startingDate.setHours(startingDate.getHours() - 5);\r\n // startingDate.setMinutes(startingDate.getMinutes() - 30);\r\n // startingDate = startingDate.getTime()\r\n const distance = startingDate - now; \r\n if (distance > 0) {\r\n this.daysPending = true\r\n this.days = Math.floor(distance / (1000 * 60 * 60 * 24));\r\n this.hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\r\n this.minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\r\n } else {\r\n this.daysRemaining = 0;\r\n this.daysPending = false\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getRedirectUrlData(contentData: any) {\r\n // for telemetry\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n // for redirection\r\n this.contentData.emit(contentData)\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Observable } from 'rxjs'\r\nimport { HttpClient } from '@angular/common/http'\r\n\r\nconst urls = {\r\n DOWNLOAD_CERTIFICATE: (id: string) => `certreg/v2/certs/download/${id}`,\r\n DOWNLOAD_CERTIFICATE_v2: (id: string) => `apis/protected/v8/cohorts/course/batch/cert/download/${id}`,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n\r\nexport class CertificateService {\r\n\r\n constructor(private http: HttpClient) { }\r\n downloadCertificate(id: string): Observable<any> {\r\n return this.http.get<any>(urls.DOWNLOAD_CERTIFICATE(id))\r\n }\r\n\r\n downloadCertificate_v2(id: string): Observable<any> {\r\n return this.http.get<any>(urls.DOWNLOAD_CERTIFICATE_v2(id))\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core'\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'\r\nimport { TranslateService } from '@ngx-translate/core'\r\nimport { EventService, MultilingualTranslationsService, WsEvents } from '@sunbird-cb/utils-v2'\r\nimport { jsPDF } from 'jspdf'\r\n\r\n@Component({\r\n selector: 'sb-uic-certificate-dialog',\r\n templateUrl: './certificate-dialog.component.html',\r\n styleUrls: ['./certificate-dialog.component.scss'],\r\n /* tslint:disable */\r\n host: { class: 'certificate-inner-dialog-panel' },\r\n /* tslint:enable */\r\n})\r\nexport class CertificateDialogComponent implements OnInit {\r\n url!: string\r\n navUrl = ''\r\n environment: any\r\n constructor(\r\n @Inject('environment') environment: any,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n public dialogRef: MatDialogRef<CertificateDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.environment = environment\r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.url = this.data.cet\r\n // tslint:disable-next-line:max-line-length\r\n this.navUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`\r\n }\r\n\r\n downloadCert() {\r\n this.raiseIntreactTelemetry('svg')\r\n const a: any = document.createElement('a')\r\n a.href = this.data.cet\r\n a.download = 'Certificate'\r\n document.body.appendChild(a)\r\n a.style = 'display: none'\r\n a.click()\r\n a.remove()\r\n }\r\n\r\n downloadCertPng() {\r\n this.raiseIntreactTelemetry('png')\r\n const uriData = this.data.cet\r\n const img = new Image()\r\n img.src = uriData\r\n img.width = 1820\r\n img.height = 1000\r\n img.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n [canvas.width, canvas.height] = [img.width, img.height]\r\n const ctx = canvas.getContext('2d')\r\n if (ctx) {\r\n // ctx.imageSmoothingEnabled = true\r\n ctx.drawImage(img, 0, 0, img.width, img.height)\r\n const a = document.createElement('a')\r\n const quality = 1.0 // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality\r\n a.href = canvas.toDataURL('image/png', quality)\r\n a.download = 'Certificate'\r\n a.append(canvas)\r\n a.click()\r\n a.remove()\r\n }\r\n }\r\n }\r\n async downloadCertPdf() {\r\n this.raiseIntreactTelemetry('pdf')\r\n const uriData = this.data.cet\r\n const img = new Image()\r\n img.src = uriData\r\n img.width = 1820\r\n img.height = 1000\r\n img.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n [canvas.width, canvas.height] = [img.width, img.height]\r\n const ctx = canvas.getContext('2d')\r\n if (ctx) {\r\n ctx.drawImage(img, 0, 0, img.width, img.height)\r\n const quality = 1.0 // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality\r\n const dataImg = canvas.toDataURL('application/pdf', quality)\r\n const pdf = new jsPDF('landscape', 'px', 'a4')\r\n\r\n // add the image to the PDF\r\n pdf.addImage(dataImg, 10, 20, 600, 350)\r\n\r\n // download the PDF\r\n pdf.save('Certificate.pdf')\r\n }\r\n }\r\n }\r\n\r\n shareCert() {\r\n this.raiseShareIntreactTelemetry('share')\r\n return window.open(this.navUrl, '_blank')\r\n }\r\n\r\n raiseShareIntreactTelemetry(type?: string, action?: string) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n id: `${type}-${WsEvents.EnumInteractSubTypes.CERTIFICATE}`,\r\n subType: action && action,\r\n },\r\n {\r\n id: this.data.certId, // id of the certificate\r\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\r\n }\r\n )\r\n }\r\n\r\n raiseIntreactTelemetry(action?: string) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n id: 'download-certificate',\r\n subType: action && action,\r\n },\r\n {\r\n id: this.data.certId, // id of the certificate\r\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\r\n }\r\n )\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatDialog, MatSnackBar } from '@angular/material'\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\nimport { ConfigurationsService, EventService, WsEvents } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { CertificateService } from '../../../_services/certificate.service';\r\nimport { CertificateDialogComponent } from '../../dialog-components/certificate-dialog/certificate-dialog.component';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-progress-portrait-lib',\r\n templateUrl: './card-progress-portrait-lib.component.html',\r\n styleUrls: ['./card-progress-portrait-lib.component.scss']\r\n})\r\nexport class CardProgressPortraitLibComponent implements OnInit {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Input() cbPlanMapData: any\r\n isCardFlipped:boolean = false\r\n acbpConstants = NsCardContent.ACBPConst\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n downloadCertificateLoading: boolean = false\r\n\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private translate: TranslateService,\r\n private events: EventService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,\r\n private certificateService: CertificateService,\r\n private dialog: MatDialog,\r\n ) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n // for telemetry\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n // for redirection\r\n this.contentData.emit(contentData)\r\n }\r\n\r\n translateLabels(label: string, type: any, subtype?: any) {\r\n return this.langtranslations.translateLabelWithoutspace(label, type, subtype)\r\n }\r\n raiseTelemetry() {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: `${this.widgetType}-${this.widgetSubType}`,\r\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\r\n },\r\n {\r\n id: this.widgetData.content.identifier,\r\n type: this.widgetData.content.primaryCategory,\r\n //context: this.widgetData.context,\r\n rollup: {},\r\n ver: `${this.widgetData.content.version}${''}`,\r\n },\r\n {\r\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\r\n module: _.camelCase(this.widgetData.content.primaryCategory),\r\n })\r\n }\r\n\r\n downloadCertificate(certificateData: any) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n id: 'view-certificate',\r\n subType: WsEvents.EnumInteractSubTypes.CERTIFICATE,\r\n },\r\n {\r\n id: certificateData.issuedCertificates[0].identifier, // id of the certificate\r\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\r\n })\r\n if(certificateData.issuedCertificates.length > 0) {\r\n this.downloadCertificateLoading = true\r\n let certData: any = certificateData.issuedCertificates[0]\r\n this.certificateService.downloadCertificate_v2(certData.identifier).subscribe((res: any)=>{\r\n this.downloadCertificateLoading = false\r\n const cet = res.result.printUri\r\n this.dialog.open(CertificateDialogComponent, {\r\n width: '1300px',\r\n data: { cet, certId: certData.identifier },\r\n })\r\n })\r\n } else {\r\n this.downloadCertificateLoading = false\r\n }\r\n }\r\n\r\n}\r\n","import { Component, HostBinding, Input, OnChanges } from '@angular/core'\r\n\r\n@Component({\r\n selector: 'sb-uic-content-progress',\r\n templateUrl: './content-progress.component.html',\r\n styleUrls: ['./content-progress.component.scss'],\r\n /* tslint:disable */\r\n host: {\r\n // Sets the role for this component to \"progressbar\"\r\n role: 'progressbar',\r\n // Sets the minimum and maximum values for the progressbar role.\r\n 'aria-valuemin': '0',\r\n 'aria-valuemax': '100',\r\n 'title': 'progres',\r\n // Binding that updates the current value of the progressbar.\r\n '[attr.aria-valuenow]': 'progress',\r\n },\r\n /* tslint:enable */\r\n})\r\nexport class ContentProgressComponent implements OnChanges {\r\n @Input()\r\n contentId = ''\r\n\r\n @Input()\r\n progress = 0\r\n\r\n @Input()\r\n progressType = ''\r\n\r\n @Input()\r\n forPreview = false\r\n\r\n @Input()\r\n className = ''\r\n @Input()\r\n customClassName: any = 'accent-progress'\r\n\r\n rendom = Math.random()\r\n @HostBinding('id')\r\n public id = `progress_${Math.random()}`\r\n constructor(\r\n // private progressSvc: ContentProgressService\r\n ) {\r\n if (this.contentId) {\r\n this.id = this.contentId\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.contentId && !this.progress && !this.forPreview) {\r\n // this.progressSvc.getProgressFor(this.contentId).subscribe(data => {\r\n // this.progress = data\r\n // if (this.progress) {\r\n // this.progress = Math.round(this.progress * 10000) / 100\r\n // }\r\n // })\r\n }\r\n\r\n if (this.progress) {\r\n if (this.progressType === 'percentage') {\r\n this.progress = this.progress\r\n } else {\r\n this.progress = Math.round(this.progress * 10000) / 100\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ContentProgressComponent } from './content-progress.component'\r\nimport { MatProgressBarModule, MatTooltipModule } from '@angular/material'\r\n\r\n@NgModule({\r\n declarations: [ContentProgressComponent],\r\n imports: [\r\n CommonModule,\r\n MatProgressBarModule,\r\n MatTooltipModule,\r\n ],\r\n exports: [ContentProgressComponent],\r\n})\r\nexport class ContentProgressModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CertificateDialogComponent } from './certificate-dialog/certificate-dialog.component';\r\nimport { MatCardModule, MatDialogModule, MatIconModule, MatMenuModule } from '@angular/material';\r\nimport { TranslateLoader, TranslateModule } 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 { PipeSafeSanitizerModule } from '@sunbird-cb/utils-v2';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CertificateDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatMenuModule,\r\n MatCardModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n PipeSafeSanitizerModule,\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 ],\r\n exports:[\r\n CertificateDialogComponent\r\n ],\r\n entryComponents: [CertificateDialogComponent],\r\n})\r\nexport class DialogComponentsModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'sb-uic-card-mdo-channel-v1',\r\n templateUrl: './card-mdo-channel-v1.component.html',\r\n styleUrls: ['./card-mdo-channel-v1.component.scss']\r\n})\r\nexport class CardMdoChannelV1Component implements OnInit {\r\n @Input() widgetData!: NsContent.IContent;\r\n @Output() channelData = new EventEmitter<any>()\r\n @Output() emitTelemetry = new EventEmitter<any>()\r\n @Input() isCardLoading: boolean = false\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = ''\r\n widgetSubType: any =''\r\n\r\n constructor(\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,\r\n public router: Router) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n raiseTelemetry(contentData: any) {\r\n this.emitTelemetry.emit(contentData)\r\n if (this.widgetData) {\r\n contentData['typeOfTelemetry'] = 'mdo-channel'\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n }\r\n channelClick(channeldata:any) {\r\n this.channelData.emit(channeldata)\r\n }\r\n\r\n redirectTo(content: any) {\r\n this.router.navigate([`/app/learn/mdo-channels/${content.orgName}/${content.identifier}/micro-sites`])\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'\r\n\r\n@Component({\r\n selector: 'sb-uic-avatar-photo',\r\n templateUrl: './avatar-photo-lib.component.html',\r\n styleUrls: ['./avatar-photo-lib.component.scss'],\r\n})\r\nexport class AvatarPhotoLibComponent implements OnInit, OnChanges {\r\n @Input() datalen: any\r\n\r\n @Input()\r\n public photoUrl!: string\r\n\r\n @Input()\r\n public name!: string\r\n @Input() public size = ''\r\n @Input() public defaulfColor = ''\r\n @Input() randomColor = false\r\n @Input() initials?: string\r\n @Input() showBadge = false\r\n public showInitials = false\r\n public circleColor!: string\r\n random = Math.random().toString(36).slice(2)\r\n\r\n // public initials!: string\r\n\r\n private colors = [\r\n '#EB7181', // red\r\n '#306933', // green\r\n '#000000', // black\r\n '#3670B2', // blue\r\n '#4E9E87',\r\n '#7E4C8D',\r\n ]\r\n\r\n private randomcolors = [\r\n '#EB7181', // red\r\n '#006400', // green\r\n '#000000', // black\r\n '#3670B2', // blue\r\n '#4E9E87',\r\n '#7E4C8D',\r\n ]\r\n\r\n ngOnInit() {\r\n if (!this.photoUrl) {\r\n this.showInitials = true\r\n if (!this.initials) {\r\n this.createInititals()\r\n }\r\n if (this.datalen === 1) {\r\n if(this.defaulfColor) {\r\n this.randomcolors = [\r\n this.defaulfColor\r\n ]\r\n } else {\r\n this.randomcolors = [\r\n '#006400', // green\r\n ]\r\n }\r\n }\r\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\r\n this.circleColor = this.colors[randomIndex]\r\n if (this.randomColor) {\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomcolors.length))\r\n this.circleColor = this.randomcolors[randomIndex1]\r\n }\r\n }\r\n\r\n }\r\n ngOnChanges(change: SimpleChanges) {\r\n if (change.name.currentValue !== change.name.previousValue && !change.name.firstChange) {\r\n this.createInititals()\r\n }\r\n }\r\n get userInitials() {\r\n return this.initials\r\n }\r\n private createInititals(): void {\r\n let initials = ''\r\n const array = `${this.name} `.toString().split(' ')\r\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\r\n initials += array[0].charAt(0)\r\n initials += array[1].charAt(0)\r\n } else {\r\n for (let i = 0; i < this.name.length; i += 1) {\r\n if (this.name.charAt(i) === ' ') {\r\n continue\r\n }\r\n\r\n if (this.name.charAt(i) === this.name.charAt(i)) {\r\n initials += this.name.charAt(i)\r\n\r\n if (initials.length === 2) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n this.initials = initials.toUpperCase()\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { RouterModule } from '@angular/router'\r\nimport { MatButtonModule, MatIconModule, MatMenuModule, MatRippleModule } from '@angular/material'\r\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2'\r\nimport { AvatarPhotoLibComponent } from './avatar-photo-lib.component'\r\n\r\n@NgModule({\r\n declarations: [AvatarPhotoLibComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatMenuModule,\r\n MatRippleModule,\r\n SbUiResolverModule,\r\n ],\r\n exports: [AvatarPhotoLibComponent],\r\n entryComponents: [AvatarPhotoLibComponent],\r\n})\r\nexport class AvatarPhotoLibModule { }\r\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'\r\nimport { ROOT_WIDGET_CONFIG } from './consumption.config'\r\n// Components\r\nimport { CardsComponent } from './_common/cards/cards.component'\r\nimport { CardsModule } from './_common/cards/cards.module'\r\n\r\n\r\nexport const WIDGET_REGISTERED_LIB_MODULES = [\r\n CardsModule\r\n]\r\n\r\nexport const WIDGET_REGISTRATION_LIB_CONFIG: NsWidgetResolver.IRegistrationConfig[] = [\r\n {\r\n widgetType: ROOT_WIDGET_CONFIG.card._type,\r\n widgetSubType: ROOT_WIDGET_CONFIG.card.cardResource,\r\n component: CardsComponent,\r\n }\r\n]\r\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\r\nimport { NsContentStripWithTabsAndPills } from './content-strip-with-tabs-pills.model';\r\n// import { HttpClient } from '@angular/common/http'\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\nimport { NsContent } from '../../../_models/widget-content.model';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\nimport {\r\n TFetchStatus,\r\n LoggerService,\r\n EventService,\r\n ConfigurationsService,\r\n UtilityService,\r\n WsEvents,\r\n} from '@sunbird-cb/utils-v2';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { WidgetUserService } from '../../../_services/widget-user.service';\r\n// import { environment } from 'src/environments/environment'\r\n// tslint:disable-next-line\r\nimport * as _ from 'lodash'\r\nimport { MatTabChangeEvent } from '@angular/material';\r\nimport { NsCardContent } from '../../../_models/card-content-v2.model';\r\nimport { ITodayEvents } from '../../../_models/event';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Router } from '@angular/router';\r\n\r\ninterface IStripUnitContentData {\r\n key: string;\r\n canHideStrip: boolean;\r\n mode?: string;\r\n showStrip: boolean;\r\n disableTranslate: boolean;\r\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\r\n stripTitle: string;\r\n stripTitleLink?: {\r\n link: {\r\n queryParams: string\r\n },\r\n icon: string,\r\n queryParams: string\r\n };\r\n sliderConfig?: {\r\n showNavs: boolean,\r\n showDots: boolean,\r\n maxWidgets?: number\r\n cerificateCardMargin?: boolean\r\n };\r\n stripConfig: any;\r\n tabs?: NsContentStripWithTabsAndPills.IContentStripTab[] | undefined;\r\n stripName?: string;\r\n stripLogo?: string;\r\n description?: string;\r\n stripInfo?: NsContentStripWithTabsAndPills.IStripInfo;\r\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n showOnNoData: boolean;\r\n showOnLoader: boolean;\r\n showOnError: boolean;\r\n loaderWidgets?: any;\r\n stripBackground?: string;\r\n secondaryHeading?: any;\r\n viewMoreUrl: any;\r\n request?: any\r\n \r\n}\r\n\r\n\r\n@Component({\r\n selector: 'sb-uic-content-strip-with-tabs-pills',\r\n templateUrl: './content-strip-with-tabs-pills.component.html',\r\n styleUrls: ['./content-strip-with-tabs-pills.component.scss']\r\n})\r\nexport class ContentStripWithTabsPillsComponent extends WidgetBaseComponent\r\nimplements\r\nOnInit,\r\nOnDestroy,\r\nNsWidgetResolver.IWidgetData<NsContentStripWithTabsAndPills.IContentStripMultiple> {\r\n @Input() widgetData!: NsContentStripWithTabsAndPills.IContentStripMultiple;\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n @Output() viewAllResponse = new EventEmitter<any>()\r\n @Output() telemtryResponse = new EventEmitter<any>()\r\n @Input() providerId : any = ''\r\n @Input() emitViewAll : boolean = false\r\n @Input() channnelName: any = ''\r\n @HostBinding('id')\r\n public id = `ws-strip-miltiple_${Math.random()}`;\r\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\r\n stripsKeyOrder: string[] = [];\r\n showAccordionData = true;\r\n showParentLoader = false;\r\n showParentError = false;\r\n showParentNoData = false;\r\n errorDataCount = 0;\r\n noDataCount = 0;\r\n successDataCount = 0;\r\n contentAvailable = true;\r\n baseUrl = this.configSvc.sitePath || '';\r\n veifiedKarmayogi = false;\r\n environment!: any;\r\n changeEventSubscription: Subscription | null = null;\r\n defaultMaxWidgets = 12;\r\n enrollInterval: any;\r\n todaysEvents: any = [];\r\n enrollmentMapData: any\r\n\r\n constructor(\r\n // private contentStripSvc: ContentStripNewMultipleService,\r\n @Inject('environment') environment: any,\r\n private contentSvc: WidgetContentService,\r\n private loggerSvc: LoggerService,\r\n private eventSvc: EventService,\r\n private configSvc: ConfigurationsService,\r\n public utilitySvc: UtilityService,\r\n // private http: HttpClient,\r\n // private searchServSvc: SearchServService,\r\n public router: Router,\r\n private userSvc: WidgetUserService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService\r\n ) {\r\n super();\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en');\r\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\r\n lang = lang.replace(/\\\"/g, '');\r\n this.translate.use(lang);\r\n }\r\n this.environment = environment\r\n }\r\n\r\n ngOnInit() {\r\n // const url = window.location.href\r\n this.initData();\r\n this.contentSvc.telemetryData$.subscribe((data: any) => {\r\n this.telemtryResponse.emit(data)\r\n })\r\n\r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.changeEventSubscription) {\r\n this.changeEventSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n showAccordion(key: string) {\r\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\r\n return this.showAccordionData;\r\n }\r\n return true;\r\n }\r\n\r\n setHiddenForStrip(key: string) {\r\n this.stripsResultDataMap[key].showStrip = false;\r\n sessionStorage.setItem(`cstrip_${key}`, '1');\r\n }\r\n private getIfStripHidden(key: string): boolean {\r\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\r\n return Boolean(storageItem !== '1');\r\n }\r\n\r\n private initData() {\r\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\r\n if (this.widgetData.loader && this.widgetData.strips.length) {\r\n this.showParentLoader = true;\r\n }\r\n // Fetch the data\r\n for (const strip of this.widgetData.strips) {\r\n if (this.checkForEmptyWidget(strip)) {\r\n this.fetchStripFromRequestData(strip, false);\r\n } else {\r\n this.processStrip(strip, [], 'done', true, null);\r\n }\r\n }\r\n // Subscription for changes\r\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\r\n .map(strip => ({\r\n key: strip.key,\r\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\r\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\r\n }))\r\n .filter(({ key, type, from }) => key && type && from);\r\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\r\n this.changeEventSubscription = this.eventSvc.events$\r\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\r\n .subscribe(event => {\r\n keyAndEvent\r\n .filter(e => e.type === event.eventType && e.from === event.from)\r\n .map(e => e.key)\r\n .forEach(k => this.fetchStripFromKey(k, false));\r\n });\r\n }\r\n\r\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\r\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\r\n if (stripData) {\r\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\r\n }\r\n }\r\n\r\n isStripShowing(data: any) {\r\n let count = 0;\r\n \r\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\r\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\r\n data.widgets.forEach((key: any) => {\r\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\r\n count = count + 1;\r\n }\r\n });\r\n if (count > 0) {\r\n data.showStrip = true;\r\n } else {\r\n data.showStrip = false;\r\n }\r\n }\r\n // console.log('data.key', data, data.key, data.widgets);\r\n return data.showStrip;\r\n }\r\n\r\n get isMobile() {\r\n return this.utilitySvc.isMobile || false;\r\n }\r\n\r\n getdata(data: IStripUnitContentData) {\r\n if (data.stripInfo) {\r\n return data.stripInfo.widget;\r\n }\r\n return {};\r\n\r\n }\r\n checkCondition(wData: NsContentStripWithTabsAndPills.IContentStripMultiple, data: IStripUnitContentData) {\r\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\r\n return !wData.strips[0].stripConfig.hideShowAll;\r\n }\r\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\r\n }\r\n checkVisible(data: IStripUnitContentData) {\r\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\r\n }\r\n\r\n getContineuLearningLenth(data: IStripUnitContentData) {\r\n return data.widgets ? data.widgets.length : 0;\r\n }\r\n getLength(data: IStripUnitContentData) {\r\n if (!data.tabs || !data.tabs.length) {\r\n return data.widgets ? data.widgets.length : 0;\r\n } {\r\n // if tabs are there check if each tab has widgets and get the tab with max widgets\r\n let tabWithMaxWidgets: any = {}\r\n data.tabs.forEach((tab: any)=>{\r\n if(tab.pillsData && tab.pillsData.length){\r\n tabWithMaxWidgets = tab.pillsData.reduce(\r\n (prev: any, current: any) => {\r\n if (!prev.widgets && !current.widgets) {\r\n return current;\r\n }\r\n if (prev.widgets && current.widgets) {\r\n return (prev.widgets.length > current.widgets.length) ? prev : current;\r\n }\r\n if (current.widgets && !prev.widgets) {\r\n return current;\r\n }\r\n if (!current.widgets && prev.widgets) {\r\n return prev;\r\n }\r\n return current;\r\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\r\n // tslint:disable-next-line: align\r\n }, data.tabs[0]);\r\n\r\n }\r\n })\r\n // if tabs has atleast 1 widgets then strip will show or else not\r\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\r\n }\r\n }\r\n\r\n private getFiltersFromArray(v6filters: any) {\r\n const filters: any = {};\r\n if (v6filters.constructor === Array) {\r\n v6filters.forEach(((f: any) => {\r\n Object.keys(f).forEach(key => {\r\n filters[key] = f[key];\r\n });\r\n }));\r\n return filters;\r\n }\r\n return v6filters;\r\n }\r\n\r\n private transformSearchV6FiltersV2(v6filters: any) {\r\n const filters: any = {};\r\n if (v6filters.constructor === Array) {\r\n v6filters.forEach(((f: any) => {\r\n Object.keys(f).forEach(key => {\r\n filters[key] = f[key];\r\n });\r\n }));\r\n return filters;\r\n }\r\n return v6filters;\r\n }\r\n\r\n checkForDateFilters(filters: any) {\r\n let userData: any;\r\n if (this.configSvc.userProfile) {\r\n userData = this.configSvc.userProfile;\r\n }\r\n\r\n if (filters && filters.hasOwnProperty('batches.endDate')) {\r\n // tslint:disable-next-line\r\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\r\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\r\n // tslint:disable-next-line\r\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\r\n } else if (filters.organisation &&\r\n filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n if(this.providerId) {\r\n filters.organisation = this.providerId;\r\n } else {\r\n filters.organisation = userData && userData.rootOrgId;\r\n\r\n if (filters && filters.hasOwnProperty('designation')) {\r\n filters.designation = userData.professionalDetails.length > 0 ?\r\n userData.professionalDetails[0].designation : '';\r\n }\r\n }\r\n \r\n }\r\n return filters;\r\n }\r\n\r\n private fetchStripFromRequestData(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n calculateParentStatus = true,\r\n ) {\r\n // setting initial values\r\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\r\n this.processStrip(strip, [], 'fetching', false, null);\r\n this.fetchFromSearchV6(strip, calculateParentStatus);\r\n this.fetchForYouData(strip, calculateParentStatus)\r\n this.fetchAllCbpPlans(strip, calculateParentStatus);\r\n \r\n // this.enrollInterval = setInterval(() => {\r\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\r\n // }, 1000)\r\n }\r\n\r\n toggleInfo(data: IStripUnitContentData) {\r\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\r\n if (stripInfo) {\r\n if (stripInfo.mode !== 'below') {\r\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\r\n stripInfo.mode = 'below';\r\n }\r\n if (stripInfo.mode === 'below') {\r\n this.stripsResultDataMap[data.key].stripInfo = {\r\n ...stripInfo,\r\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\r\n };\r\n }\r\n }\r\n }\r\n\r\n private transformContentsToWidgets(\r\n contents: NsContent.IContent[],\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n\r\n private transformEventsToWidgets(\r\n contents: ITodayEvents[],\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n ) {\r\n this.eventSvc.setEventListData(contents);\r\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\r\n widgetType: 'card',\r\n widgetSubType: 'eventHubCard',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'eventHubCard',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n private transformSkeletonToWidgets(\r\n strip: any\r\n ) {\r\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n },\r\n }));\r\n }\r\n\r\n private async processStrip(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\r\n fetchStatus: TFetchStatus,\r\n calculateParentStatus = true,\r\n _viewMoreUrl: any,\r\n tabsResults?: NsContentStripWithTabsAndPills.IContentStripTab[] | undefined,\r\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\r\n ) {\r\n const stripData = {\r\n viewMoreUrl: strip.viewMoreUrl,\r\n key: strip.key,\r\n canHideStrip: Boolean(strip.canHideStrip),\r\n showStrip: this.getIfStripHidden(strip.key),\r\n noDataWidget: strip.noDataWidget,\r\n errorWidget: strip.errorWidget,\r\n stripInfo: strip.info,\r\n stripTitle: strip.title,\r\n stripTitleLink: strip.stripTitleLink,\r\n disableTranslate: strip.disableTranslate,\r\n sliderConfig: strip.sliderConfig,\r\n tabs: tabsResults ? tabsResults : strip.tabs,\r\n stripName: strip.name,\r\n mode: strip.mode,\r\n stripConfig: strip.stripConfig,\r\n stripBackground: strip.stripBackground,\r\n secondaryHeading: strip.secondaryHeading,\r\n loaderWidgets: strip.loaderWidgets || [],\r\n widgets:\r\n fetchStatus === 'done'\r\n ? [\r\n ...(strip.preWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ...results,\r\n ...(strip.postWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ]\r\n : [],\r\n showOnNoData: Boolean(\r\n strip.noDataWidget &&\r\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\r\n fetchStatus === 'done',\r\n ),\r\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\r\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\r\n };\r\n // const stripData = this.stripsResultDataMap[strip.key]\r\n this.stripsResultDataMap = {\r\n ...this.stripsResultDataMap,\r\n [strip.key]: stripData,\r\n };\r\n if (!tabsResults) {\r\n if (\r\n calculateParentStatus &&\r\n (fetchStatus === 'done' || fetchStatus === 'error') &&\r\n stripData.widgets\r\n ) {\r\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\r\n }\r\n if (calculateParentStatus && !(results && results.length > 0)) {\r\n this.contentAvailable = false;\r\n } else if (results && results.length > 0) {\r\n this.contentAvailable = true;\r\n }\r\n } else {\r\n this.contentAvailable = true;\r\n }\r\n }\r\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\r\n if (fetchStatus === 'done' && !stripWidgetsCount) {\r\n this.noDataCount += 1;\r\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\r\n this.successDataCount += 1;\r\n } else if (fetchStatus === 'error') {\r\n this.errorDataCount += 1;\r\n }\r\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\r\n const totalCount = this.widgetData.strips.length;\r\n if (this.successDataCount > 0 && settledCount < totalCount) {\r\n return;\r\n }\r\n this.showParentLoader = settledCount !== totalCount;\r\n this.showParentNoData =\r\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\r\n this.showParentError = this.errorDataCount === totalCount;\r\n }\r\n checkForEmptyWidget(strip: NsContentStripWithTabsAndPills.IContentStripUnit): boolean {\r\n if (\r\n strip.request &&\r\n ((strip.request.api && Object.keys(strip.request.api).length) ||\r\n (strip.request.search && Object.keys(strip.request.search).length) ||\r\n (strip.request.searchRegionRecommendation &&\r\n Object.keys(strip.request.searchRegionRecommendation).length) ||\r\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\r\n (strip && strip.tabs.length)\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n getTabDataByfilter(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n // tslint:disable:no-console\r\n console.log('strip -- ', strip);\r\n // tslint:disable:no-console\r\n console.log('currentTab -- ', currentTab);\r\n // tslint:disable:no-console\r\n console.log('calculateParentStatus-- ', calculateParentStatus);\r\n // TODO: Write logic for individual filter if passed in config\r\n // add switch case based on config key passed\r\n }\r\n\r\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\r\n let returnValue = 0;\r\n return returnValue;\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateLabel(label, type, '');\r\n }\r\n\r\n identify(index: number, item: any) {\r\n if (index >= 0) { }\r\n return item;\r\n }\r\n tracker(index: number, item: any) {\r\n if (index >= 0) { }\r\n return _.get(item, 'widgetData.content.identifier')\r\n }\r\n\r\n raiseTelemetry(stripData: any){\r\n this.telemtryResponse.emit(stripData)\r\n }\r\n\r\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\r\n if(this.emitViewAll) {\r\n this.viewAllResponse.emit(stripData)\r\n } else {\r\n this.router.navigate([path], { queryParams: queryParamsData })\r\n }\r\n }\r\n\r\n // new code writting from here====new====\r\n\r\n fetchForYouData(strip: NsContentStripWithTabsAndPills.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip && strip.type === 'forYou') {\r\n if (strip.tabs && strip.tabs.length) {\r\n const firstTab = strip.tabs[0];\r\n const pillData = firstTab.pillsData[0]\r\n if (pillData.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allPills = this.stripsResultDataMap[strip.key].tabs[0].pillsData;\r\n const currenPillsFromMap = (allPills && allPills.length && allPills[0]) as NsContentStripWithTabsAndPills.IContentStripTab;\r\n this.getTabDataByNewReqTrending(strip, 0, 0, currenPillsFromMap, calculateParentStatus);\r\n if (this.stripsResultDataMap[strip.key] && currenPillsFromMap) {\r\n this.stripsResultDataMap[strip.key].viewMoreUrl.queryParams = {\r\n ...this.stripsResultDataMap[strip.key].viewMoreUrl.queryParams,\r\n key:strip.key,\r\n tabSelected: firstTab.value,\r\n pillSelected: pillData.value,\r\n };\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n }\r\n\r\n async fetchFromSearchV6(strip: NsContentStripWithTabsAndPills.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\r\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\r\n // if (this.configSvc.activeLocale) {\r\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\r\n // } else {\r\n // strip.request.searchV6.locale = ['en']\r\n // }\r\n // }\r\n let originalFilters: any = [];\r\n // tslint:disable:no-console\r\n if (strip.request &&\r\n strip.request.searchV6 &&\r\n strip.request.searchV6.request &&\r\n strip.request.searchV6.request.filters) {\r\n originalFilters = strip.request.searchV6.request.filters;\r\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\r\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\r\n strip.request.searchV6.request.filters,\r\n );\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabsAndPills.IContentStripTab;\r\n\r\n this.getTabDataByNewReqSearchV6(strip, 0, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.content) {\r\n \r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(response.results.result.content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n \r\n \r\n } else if (response.results.result.Event) {\r\n this.processStrip(\r\n strip,\r\n this.transformEventsToWidgets(response.results.result.Event, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async getTabDataByNewReqTrending(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n tabIndex: number,\r\n pillIndex: number,\r\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\r\n let tabResults: any[] = [];\r\n if (response && response.results && response.results.response) {\r\n const content = response.results.response[currentTab.value] || [];\r\n const widgets = this.transformContentsToWidgets(content, strip);\r\n \r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\r\n this.resetSelectedPill(allPills)\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n if(allPills && allPills.length && allPills[pillIndex]){\r\n allPills[pillIndex] = {\r\n ...allPills[pillIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n selected: true\r\n };\r\n }\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\r\n this.resetSelectedPill(allPills)\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n if(allPills && allPills.length && allPills[pillIndex]){\r\n allPills[pillIndex] = {\r\n ...allPills[pillIndex],\r\n widgets:[],\r\n fetchTabStatus: 'done',\r\n selected: true\r\n };\r\n }\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets:[],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n\r\n async getTabDataByNewReqSearchV6(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n tabIndex: number,\r\n pillIndex: number,\r\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\r\n if (response && response.results) {\r\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\r\n this.resetSelectedPill(allPills)\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n if(allPills && allPills.length && allPills[pillIndex]){\r\n allPills[pillIndex] = {\r\n ...allPills[pillIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n selected: true\r\n };\r\n }\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n async trendingSearchRequest(strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n request: NsContentStripWithTabsAndPills.IContentStripUnit['request'],\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request.trendingSearch) {\r\n // check for the request if it has dynamic values]\r\n if (request.trendingSearch.request.filters.organisation &&\r\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n let userRootOrgId;\r\n if (this.configSvc.userProfile) {\r\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\r\n }\r\n request.trendingSearch.request.filters.organisation = userRootOrgId;\r\n }\r\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\r\n const showViewMore = Boolean(\r\n results.result &&\r\n strip.request &&\r\n results.result[strip.request.trendingSearch.responseKey] &&\r\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\r\n strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n request &&\r\n request.trendingSearch &&\r\n request.trendingSearch.request &&\r\n request.trendingSearch.request.filters\r\n ? JSON.stringify(\r\n this.transformSearchV6FiltersV2(\r\n originalFilters,\r\n )\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n\r\n let proccesedResult: any = []\r\n if (results && results.response && results.response.certifications) {\r\n results.response.certifications.map((result: any) => {\r\n if (result.source === this.channnelName) {\r\n proccesedResult.push(result)\r\n }\r\n })\r\n results = {response: {certifications: proccesedResult}}\r\n }\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n if (error.error && error.error.status === 400) {\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\r\n reject(error);\r\n },);\r\n }\r\n });\r\n }\r\n\r\n public tabClicked(tabEvent: MatTabChangeEvent, pillIndex: any, stripMap: IStripUnitContentData, stripKey: string) {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'inprogress';\r\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = true;\r\n stripMap.showOnLoader = true;\r\n }\r\n const data: WsEvents.ITelemetryTabData = {\r\n label: `${tabEvent.tab.textLabel}`,\r\n index: tabEvent.index,\r\n };\r\n this.eventSvc.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\r\n id: `${_.camelCase(data.label)}-tab`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.HOME,\r\n }\r\n );\r\n\r\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\r\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index].pillsData[pillIndex];\r\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\r\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\r\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\r\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\r\n tabSelected: currentTabFromMap.value,\r\n pillSelected: currentPillFromMap.value,\r\n };\r\n }\r\n\r\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\r\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\r\n // call API to get tab data and process\r\n // this.processStrip(currentStrip, [], 'fetching', true, null)\r\n if (currentPillFromMap.request.searchV6) {\r\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, 0, currentPillFromMap, true);\r\n } else if (currentPillFromMap.request.trendingSearch) {\r\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, 0, currentPillFromMap, true);\r\n }\r\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n // stripMap.tabs[tabEvent.index].tabLoading = false;\r\n // }\r\n\r\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\r\n } else {\r\n // this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\r\n // setTimeout(() => {\r\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n // stripMap.tabs[tabEvent.index].tabLoading = false;\r\n // stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\r\n // stripMap.showOnLoader = false;\r\n // }\r\n // }, 200);\r\n }\r\n }\r\n }\r\n\r\n pillClicked(event: any, stripMap: IStripUnitContentData, stripKey: any, pillIndex: any, tabIndex: any) {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = true;\r\n stripMap.showOnLoader = true;\r\n }\r\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex];\r\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex].pillsData[pillIndex];\r\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\r\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\r\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\r\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\r\n tabSelected: currentTabFromMap.value,\r\n pillSelected: currentPillFromMap.value,\r\n };\r\n }\r\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\r\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\r\n // call API to get tab data and process\r\n // this.processStrip(currentStrip, [], 'fetching', true, null)\r\n if (currentPillFromMap.request.searchV6) {\r\n this.getTabDataByNewReqSearchV6(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\r\n } else if (currentPillFromMap.request.trendingSearch) {\r\n this.getTabDataByNewReqTrending(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\r\n }\r\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n // stripMap.tabs[tabEvent.index].tabLoading = false;\r\n // }\r\n\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\r\n } else {\r\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\r\n stripMap.showOnLoader = true;\r\n }\r\n setTimeout(() => {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\r\n stripMap.showOnLoader = false;\r\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\r\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\r\n }\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n async searchV6Request(strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n request: NsContentStripWithTabsAndPills.IContentStripUnit['request'],\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request.searchV6) {\r\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\r\n const showViewMore = Boolean(\r\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n request &&\r\n request.searchV6 &&\r\n request.searchV6.request &&\r\n request.searchV6.request.filters\r\n ? JSON.stringify(\r\n this.transformSearchV6FiltersV2(\r\n originalFilters,\r\n )\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\r\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\r\n // }\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n\r\n getSelectedPillIndex(tabdata: any, tabIndex: any) {\r\n if(tabdata.pillsData && tabdata.pillsData.length) {\r\n let index = tabdata.pillsData.findIndex((pill: any) => {\r\n return pill.selected\r\n });\r\n return index\r\n }\r\n return 0\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // cbp plans\r\n\r\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\r\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\r\n\r\n let courses: NsContent.IContent[];\r\n let tabResults: any[] = [];\r\n const response = await this.userSvc.fetchCbpPlanList().toPromise();\r\n if (response) {\r\n courses = response;\r\n if (strip.tabs && strip.tabs.length) {\r\n tabResults = this.splitCbpTabsData(courses, strip);\r\n let countOfWidget = true\r\n if(strip && strip.tabs && strip.tabs.length) {\r\n strip.tabs.forEach((tab:any)=> {\r\n if(tab.pillsData && tab.pillsData.length) {\r\n tab.pillsData.forEach((pill: any) => {\r\n if(pill && pill.widgets && pill.widgets.length){\r\n if(countOfWidget){\r\n pill.selected = true\r\n countOfWidget= false\r\n }\r\n }\r\n });\r\n }\r\n })\r\n }\r\n await this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(courses, strip),\r\n 'done',\r\n calculateParentStatus,\r\n '',\r\n tabResults\r\n );\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(courses, strip),\r\n 'done',\r\n calculateParentStatus,\r\n 'viewMoreUrl',\r\n );\r\n }\r\n }\r\n clearInterval(this.enrollInterval);\r\n }\r\n }\r\n\r\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabsAndPills.IContentStripUnit) {\r\n let tabResults: any[] = [];\r\n const splitData = this.getTabsList(\r\n contentNew,\r\n strip,\r\n );\r\n if (strip.tabs && strip.tabs.length) {\r\n for (let i = 0; i < strip.tabs.length; i += 1) {\r\n if( strip.tabs[i].value === \"myIgotPlans\") {\r\n let checkWidgetAndActivePill = true\r\n if (strip.tabs[i].pillsData && strip.tabs[i].pillsData.length) {\r\n for (let j = 0; j < strip.tabs[i].pillsData.length; j += 1) {\r\n // if(j === 0 ){\r\n // if(strip.tabs[i].pillsData[j].widgets && strip.tabs[i].pillsData[j].widgets.length ) {\r\n // strip.tabs[i].pillsData[j].selected = true\r\n // checkWidgetAndActivePill = false\r\n // }\r\n // strip.tabs[i].pillsData[j].selected = true\r\n // }\r\n if (strip.tabs[i].pillsData[j]) {\r\n tabResults.push(\r\n {\r\n ...strip.tabs[i].pillsData[j],\r\n fetchTabStatus: 'done',\r\n ...(splitData.find(itmInner => {\r\n if (strip.tabs[i].pillsData&& strip.tabs[i].pillsData[j] && itmInner.value === strip.tabs[i].pillsData[j].value) {\r\n return itmInner;\r\n }\r\n return undefined;\r\n })),\r\n }\r\n );\r\n }\r\n }\r\n strip.tabs[i].pillsData = tabResults\r\n }\r\n }\r\n }\r\n }\r\n \r\n return strip.tabs;\r\n }\r\n\r\n getTabsList(array: NsContent.IContent[],\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit) {\r\n let all: any[] = [];\r\n let upcoming: any[] = [];\r\n let overdue: any[] = [];\r\n array.forEach((e: any) => {\r\n all.push(e);\r\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n overdue.push(e);\r\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\r\n upcoming.push(e);\r\n }\r\n });\r\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\r\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\r\n\r\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\r\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\r\n\r\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\r\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n }\r\n });\r\n\r\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\r\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n }\r\n });\r\n\r\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\r\n\r\n overdue = overdue.filter((data: any): any => {\r\n return data.contentStatus < 2;\r\n });\r\n\r\n overdue = overdue.sort((a: any, b: any): any => {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n });\r\n\r\n upcoming = upcoming.filter((data: any): any => {\r\n return data.contentStatus < 2;\r\n });\r\n \r\n return [\r\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\r\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\r\n { value: 'completed', widgets: this.transformContentsToWidgets(allCompleted, strip) },\r\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\r\n }\r\n resetSelectedPill(pillData: any){\r\n if(pillData && pillData.length){\r\n pillData.forEach((pill: any) => {\r\n pill['selected'] = false\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { HorizontalScrollerV2Module } from '../../horizontal-scroller-v2/horizontal-scroller-v2.module';\r\n\r\nimport {\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule} from '@angular/material';\r\nimport { ContentStripWithTabsPillsComponent } from './content-strip-with-tabs-pills.component';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\r\n\r\n// tslint:disable-next-line:function-name\r\nexport function HttpLoaderFactory1(http: HttpClient) {\r\n return new TranslateHttpLoader(http);\r\n}\r\n\r\n@NgModule({\r\n declarations: [ContentStripWithTabsPillsComponent],\r\n imports: [\r\n SbUiResolverModule,\r\n CommonModule,\r\n RouterModule,\r\n HorizontalScrollerV2Module,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory1,\r\n deps: [HttpClient],\r\n },\r\n }),\r\n ],\r\n entryComponents: [ContentStripWithTabsPillsComponent],\r\n exports: [ContentStripWithTabsPillsComponent],\r\n})\r\nexport class ContentStripWithTabsPillsModule { }\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\nconst API_POINTS = {\r\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\r\n CERTIFICATE_URL: `apis/protected/v8/cohorts/course/batch/cert/download/`,\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class CompetencyPassbookService {\r\n // tslint: disable-next-line: whitespace\r\n constructor(private http: HttpClient) { }\r\n getCompetencyList(payload: any): Observable<any> {\r\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\r\n }\r\n\r\n fetchCertificate(certId: string): Observable<any> {\r\n return this.http.get(API_POINTS.CERTIFICATE_URL + certId)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { CompetencyPassbookService } from './competency-passbook.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-competency-passbook',\r\n templateUrl: './competency-passbook.component.html',\r\n styleUrls: ['./competency-passbook.component.scss']\r\n})\r\nexport class CompetencyPassbookComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() providerId: any\r\n @Input() cardDisplayCount: any = 3\r\n @Input() dynamicClass: any\r\n @Input() dynamicColor: any\r\n @Input() dynamicAlignPills: any = 'center'\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n @Output() temeletryResponse = new EventEmitter<any>()\r\n loadCometency: boolean = false\r\n loadCompetencyArea: boolean = false\r\n originalCompetencyArray: any\r\n competencyArea: any []\r\n selectedValue: any;\r\n competencyVersion:string = ''\r\n competencyTheme: any = []\r\n allcompetencyTheme: any ={}\r\n competencyStrength: any = 0\r\n competencyThemeLength: any = 6\r\n showAllTheme : any = [{name:'Show all', showAll: false}]\r\n\r\n // subTheme = ['Behavioural']\r\n // currentFilter = 'Behavioural'\r\n // currentCompetencies: any = []\r\n // competencyData: any\r\n constructor(public configSvc: ConfigurationsService,\r\n public contentSvc:WidgetContentService,\r\n public competencySvc: CompetencyPassbookService,\r\n public router : Router\r\n ) { \r\n \r\n }\r\n\r\n \r\n ngOnInit() {\r\n this.getAllCompetencies()\r\n // this.competencyData = this.objectData\r\n // this.filter(this.currentFilter)\r\n }\r\n // filter(filterValue: string) {\r\n // this.currentFilter = filterValue\r\n // this.currentCompetencies = this.competencyData.data.filter((item: any) => item.type === filterValue)\r\n // }\r\n showMore() {\r\n this.objectData.viewMore = !this.objectData.viewMore\r\n }\r\n\r\n // to get competency area from facets\r\n async getCompetencyArea(){let addfilter: any = {}\r\n if(this.providerId) {\r\n addfilter = {\r\n \"createdFor\": [\r\n this.providerId\r\n ],\r\n }\r\n }\r\n this.loadCompetencyArea = true\r\n let request = {\r\n \"request\": {\r\n \"query\": \"\",\r\n \"filters\": {\r\n \"contentType\":\"Course\",\r\n ...addfilter,\r\n \"status\": [\r\n \"Live\"\r\n ]\r\n },\r\n \"sort_by\": {\r\n \"lastUpdatedOn\": \"desc\"\r\n },\r\n \"facets\": [\r\n \"competencies_v5.competencyArea\"\r\n ],\r\n \"limit\": 0,\r\n \"offset\": 0,\r\n \"fields\": [\r\n ]\r\n }\r\n }\r\n \r\n try {\r\n const response = await this.callCompetencySearch(request);\r\n if (response && response.results) {\r\n if(response.results.result.facets){\r\n this.competencyArea = response.results.result.facets[0].values\r\n this.competencyStrength = this.competencyArea.reduce((partialSum: any, data: any) => partialSum + data.count, 0) \r\n this.selectedValue = this.competencyArea[0].name.toLowerCase()\r\n let addFilter = {\r\n \"createdFor\": [\r\n this.providerId\r\n ]\r\n }\r\n this.getcompetencyTheme(this.competencyArea[0].name, addFilter)\r\n this.loadCompetencyArea = false\r\n }\r\n }\r\n } catch (error) {\r\n this.loadCompetencyArea = false\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n async callCompetencySearch(request){\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request) {\r\n this.contentSvc.searchV6(request).subscribe(results => {\r\n resolve({ results });\r\n },(error: any) => {\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n // competency theam change\r\n competencyChange(e){\r\n let addfilter: any = {}\r\n if(this.providerId) {\r\n addfilter = {\r\n \"createdFor\": [\r\n this.providerId\r\n ],\r\n }\r\n }\r\n\r\n this.temeletryResponse.emit(e.name)\r\n \r\n this.getcompetencyTheme(e.name, addfilter)\r\n this.selectedValue = e.name\r\n }\r\n getAllCompetencies(){\r\n this.loadCometency = true\r\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\r\n this.competencySvc.getCompetencyList(request).subscribe((response: any) => {\r\n this.allcompetencyTheme = {}\r\n if(response && response.result && response.result.competency) {\r\n this.originalCompetencyArray = response.result.competency\r\n\r\n this.getCompetencyArea()\r\n response.result.competency.forEach(element => {\r\n element.children.forEach((childEle) => {\r\n let name = childEle.name.toLowerCase()\r\n this.allcompetencyTheme[name] = childEle\r\n this.allcompetencyTheme[name]['viewMore'] = false\r\n });\r\n });\r\n }\r\n this.loadCometency = false\r\n })\r\n }\r\n\r\n async getcompetencyTheme(value: any,addFilter?: any) {\r\n let request = {\r\n \"request\": {\r\n \"query\": \"\",\r\n \"filters\": {\r\n \"contentType\":\"Course\",\r\n ...addFilter,\r\n \"competencies_v5.competencyArea\" : value,\r\n \"status\": [\r\n \"Live\"\r\n ]\r\n },\r\n \"sort_by\": {\r\n \"lastUpdatedOn\": \"desc\"\r\n },\r\n \"facets\": [\r\n \"competencies_v5.competencyTheme\"\r\n ],\r\n \"limit\": 0,\r\n \"offset\": 0,\r\n \"fields\": [\r\n ]\r\n }\r\n }\r\n \r\n try {\r\n this.loadCometency = true\r\n const response = await this.callCompetencySearch(request);\r\n if (response && response.results) {\r\n if(response.results.result.facets){\r\n let competencyThemeData : any = response.results.result.facets[0].values \r\n this.originalCompetencyArray.forEach((element: any) => {\r\n if(element.name.toLowerCase() === value) {\r\n this.competencyTheme = competencyThemeData.filter((ele1: any) => {\r\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\r\n })\r\n this.showAllTheme = [{name:'Show all', showAll: false}]\r\n this.competencyThemeLength = 6\r\n }\r\n });\r\n this.resetViewMore()\r\n }\r\n this.loadCometency = false\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n resetViewMore(){\r\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\r\n this.allcompetencyTheme[comp]['viewMore'] = false\r\n })\r\n }\r\n viewMoreChildren(data: any) {\r\n data.viewMore = !data.viewMore\r\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\r\n }\r\n displayAllTheme(event: any) {\r\n this.showAllTheme[0]['showAll'] = !event.showAll \r\n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\r\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\r\n this.temeletryResponse.emit(event.name)\r\n }\r\n\r\n navigateToCompetency(compData: any){\r\n this.router.navigateByUrl(`app/learn/browse-by/competency/${compData.name}`)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sb-uic-pills',\r\n templateUrl: './pills.component.html',\r\n styleUrls: ['./pills.component.scss']\r\n})\r\nexport class PillsComponent implements OnInit {\r\n\r\n @Input() pillsData: any\r\n @Input() selectedValue: any\r\n @Input() isLoading: boolean = false\r\n @Output() pillClick = new EventEmitter<any>()\r\n @Input() dynamicClass: any = ''\r\n @Input() dynamicColor: any = ''\r\n @Input() requiredTitlecase: boolean = true\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n selectedPill(pillData: any) {\r\n this.pillClick.emit(pillData)\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipsModule, MatIconModule } from '@angular/material';\r\nimport { PillsComponent } from './pills.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [PillsComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatChipsModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [PillsComponent]\r\n})\r\nexport class PillsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CompetencyPassbookComponent } from './competency-passbook.component';\r\nimport { MatIconModule } from '@angular/material';\r\nimport { PillsModule } from './../pills/pills.module';\r\nimport { CompetencyPassbookService } from './competency-passbook.service';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [CompetencyPassbookComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n PillsModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [CompetencyPassbookComponent],\r\n providers:[CompetencyPassbookService]\r\n})\r\nexport class CompetencyPassbookModule { }\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\nconst API_POINTS = {\r\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\r\n competency_URL: `apis/proxies/v8/v1/search/competenciesByOrg/`,\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class CompetencyPassbookMdoService {\r\n // tslint: disable-next-line: whitespace\r\n constructor(private http: HttpClient) { }\r\n getCompetencyList(payload: any): Observable<any> {\r\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\r\n }\r\n\r\n mdoCompetency(providerId: string): Observable<any> {\r\n return this.http.get(API_POINTS.competency_URL + providerId)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { CompetencyPassbookMdoService } from './competency-passbook-mdo.service';\r\nimport { Router } from '@angular/router';\r\n@Component({\r\n selector: 'sb-uic-competency-passbook-mdo',\r\n templateUrl: './competency-passbook-mdo.component.html',\r\n styleUrls: ['./competency-passbook-mdo.component.scss']\r\n})\r\nexport class CompetencyPassbookMdoComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() providerId: any\r\n @Input() cardDisplayCount: any = 3\r\n @Input() dynamicClass: any\r\n @Input() dynamicColor: any\r\n @Input() dynamicAlignPills: any = 'center'\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n @Output() temeletryResponse = new EventEmitter<any>()\r\n loadCometency: boolean = false\r\n loadCompetencyArea: boolean = false\r\n originalCompetencyArray: any\r\n competencyArea: any []\r\n selectedValue: any;\r\n competencyVersion:string = ''\r\n competencyThemeData: any\r\n competencyTheme: any = []\r\n allcompetencyTheme: any ={}\r\n competencyStrength: any = 0\r\n competencyThemeLength: any = 6\r\n showAllTheme : any = [{name:'Show all', showAll: false}]\r\n\r\n // subTheme = ['Behavioural']\r\n // currentFilter = 'Behavioural'\r\n // currentCompetencies: any = []\r\n // competencyData: any\r\n constructor(public configSvc: ConfigurationsService,\r\n public contentSvc:WidgetContentService,\r\n public competencySvc: CompetencyPassbookMdoService,\r\n public router : Router\r\n ) { \r\n \r\n }\r\n\r\n \r\n ngOnInit() {\r\n this.getAllCompetencies()\r\n }\r\n\r\n\r\n getAllCompetencies(){\r\n this.loadCometency = true\r\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\r\n this.competencySvc.getCompetencyList(request).subscribe((response: any) => {\r\n this.allcompetencyTheme = {}\r\n if(response && response.result && response.result.competency) {\r\n this.originalCompetencyArray = response.result.competency\r\n this.getMdoCompetencies()\r\n // this.getCompetencyArea()\r\n response.result.competency.forEach(element => {\r\n element.children.forEach((childEle) => {\r\n let name = childEle.name.toLowerCase()\r\n this.allcompetencyTheme[name] = childEle\r\n this.allcompetencyTheme[name]['viewMore'] = false\r\n });\r\n });\r\n }\r\n this.loadCometency = false\r\n })\r\n }\r\n \r\n\r\n\r\n async getMdoCompetencies(){\r\n try {\r\n this.loadCometency = true\r\n const response = await this.getMdoCompetency();\r\n if (response && response.results) {\r\n if(response.results.result.facets && response.results.result.facets.length){\r\n let facetData = response.results.result.facets\r\n facetData.forEach((facet: any) => {\r\n if(facet.name === 'competencies_v5.competencyArea') {\r\n this.competencyArea = facet.values\r\n this.selectedValue = facet.values[0].name\r\n } else if(facet.name === 'competencies_v5.competencyTheme') {\r\n this.competencyThemeData = facet.values\r\n this.getCompetencyTheme()\r\n }\r\n });\r\n\r\n } else {\r\n this.emptyResponse.emit(true)\r\n }\r\n this.loadCometency = false\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n this.emptyResponse.emit(true)\r\n }\r\n }\r\n\r\n getCompetencyTheme(){\r\n this.originalCompetencyArray.forEach((element: any) => {\r\n if(element.name.toLowerCase() === this.selectedValue) {\r\n this.competencyTheme = this.competencyThemeData.filter((ele1: any) => {\r\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\r\n })\r\n this.showAllTheme = [{name:'Show all', showAll: false}]\r\n this.competencyThemeLength = 6\r\n } else if('Behavioral'.toLowerCase() === this.selectedValue) {\r\n this.competencyTheme = this.competencyThemeData.filter((ele1: any) => {\r\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\r\n })\r\n this.showAllTheme = [{name:'Show all', showAll: false}]\r\n this.competencyThemeLength = 6\r\n }\r\n });\r\n this.resetViewMore()\r\n }\r\n\r\n\r\n async getMdoCompetency(){\r\n return new Promise<any>((resolve, reject) => {\r\n if (this.providerId) {\r\n this.competencySvc.mdoCompetency(this.providerId).subscribe(results => {\r\n resolve({ results });\r\n },(error: any) => {\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n // competency theam change\r\n competencyChange(e){\r\n let addfilter: any = {}\r\n if(this.providerId) {\r\n addfilter = {\r\n \"createdFor\": [\r\n this.providerId\r\n ],\r\n }\r\n }\r\n\r\n this.temeletryResponse.emit(e.name)\r\n \r\n this.selectedValue = e.name\r\n this.getCompetencyTheme()\r\n }\r\n\r\n\r\n\r\n resetViewMore(){\r\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\r\n this.allcompetencyTheme[comp]['viewMore'] = false\r\n })\r\n }\r\n viewMoreChildren(data: any) {\r\n data.viewMore = !data.viewMore\r\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\r\n }\r\n displayAllTheme(event: any) {\r\n this.showAllTheme[0]['showAll'] = !event.showAll \r\n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\r\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\r\n this.temeletryResponse.emit(event.name)\r\n }\r\n\r\n navigateToCompetency(compData: any){\r\n this.router.navigateByUrl(`app/learn/browse-by/competency/${compData.name}`)\r\n }\r\n\r\n showMore() {\r\n this.objectData.viewMore = !this.objectData.viewMore\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CompetencyPassbookMdoComponent } from './competency-passbook-mdo.component';\r\nimport { MatIconModule } from '@angular/material';\r\nimport { PillsModule } from './../pills/pills.module';\r\nimport { CompetencyPassbookMdoService } from './competency-passbook-mdo.service';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [CompetencyPassbookMdoComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n PillsModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [CompetencyPassbookMdoComponent],\r\n providers:[CompetencyPassbookMdoService]\r\n})\r\nexport class CompetencyPassbookMdoModule { }\r\n","import { Injectable } from '@angular/core'\r\nimport { Observable, of } from 'rxjs'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { NsAppRating } from '../_models/rating.model'\r\n\r\nconst PROXY_SLAG_V8 = '/apis/proxies/v8'\r\nconst API_END_POINTS = {\r\n GET_RATING: (contentId: string, contentType: string, userId: string) =>\r\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/${contentType}/${userId}`,\r\n ADD_OR_UPDATE: `${PROXY_SLAG_V8}/ratings/v1/upsert`,\r\n GET_RATING_SUMMARY: (contentId: string, contentType: string) =>\r\n `${PROXY_SLAG_V8}/ratings/v1/summary/${contentId}/${contentType}`,\r\n GET_RATING_LOOKUP: `${PROXY_SLAG_V8}/ratings/v1/ratingLookUp`,\r\n GET_AUTHOR_REPLY: (contentId: string, userID: string) =>\r\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/Course/${userID}`,\r\n POST_AUTHOR_REPLY: `${PROXY_SLAG_V8}/ratings/v2/read`,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class RatingService {\r\n\r\n constructor(public http: HttpClient) { }\r\n\r\n getRating(contentId: string, contentType: string, userId: string): Observable<any> {\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\r\n if (!forPreview) {\r\n return this.http.get<any>(\r\n API_END_POINTS.GET_RATING(contentId, contentType, userId)\r\n )\r\n }\r\n return of({})\r\n }\r\n\r\n addOrUpdateRating(req: NsAppRating.IRating): Observable<any> {\r\n return this.http.post<any>(\r\n API_END_POINTS.ADD_OR_UPDATE, req\r\n )\r\n }\r\n\r\n getRatingSummary(contentId: string, contentType: string): Observable<any> {\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\r\n if (!forPreview) {\r\n return this.http.get<any>(\r\n API_END_POINTS.GET_RATING_SUMMARY(contentId, contentType)\r\n )\r\n }\r\n return of({})\r\n }\r\n\r\n getRatingLookup(req: NsAppRating.ILookupRequest): Observable<any> {\r\n return this.http.post<any>(\r\n API_END_POINTS.GET_RATING_LOOKUP, req\r\n )\r\n }\r\n\r\n getRatingReply(req: any): Observable<any> {\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\r\n if (!forPreview) {\r\n return this.http.post<any>(\r\n API_END_POINTS.POST_AUTHOR_REPLY, req\r\n )\r\n }\r\n return of({})\r\n }\r\n\r\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\r\n if (avg) {\r\n const avgRating = avg\r\n const ratingFloor = Math.floor(avgRating)\r\n // const difference = avgRating - ratingIndex\r\n if (ratingIndex <= ratingFloor) {\r\n return 'star'\r\n }\r\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\r\n return 'star_half'\r\n }\r\n }\r\n return 'star'\r\n }\r\n\r\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\r\n if (avg) {\r\n const avgRating = avg\r\n const ratingFloor = Math.floor(avgRating)\r\n if (ratingIndex <= ratingFloor) {\r\n return true\r\n }\r\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\r\n return true\r\n }\r\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 > 0.71) {\r\n return true\r\n }\r\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 < 0.29) {\r\n return false\r\n }\r\n }\r\n return false\r\n }\r\n\r\n getAuthorReply(contentId: string, userID: string): Observable<any> {\r\n return this.http.get<any>(\r\n API_END_POINTS.GET_AUTHOR_REPLY(contentId, userID)\r\n )\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nconst API_END_POINTS = {\r\n TOP_REVIEWS: `/apis/proxies/v8/ratings/v1/topReviews`\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserContentRatingLibService {\r\n\r\n constructor(private http: HttpClient) { }\r\n fetchTopReviews(doId: any): Observable<any> {\r\n return this.http.get<any>(`${API_END_POINTS.TOP_REVIEWS}/${doId}`)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { RatingService } from '../../_services/rating.service';\r\nimport { ScrollableItemDirective } from './../../_directives/scrollable-item/scrollable-item.directive';\r\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-user-content-rating',\r\n templateUrl: './user-content-rating-lib.component.html',\r\n styleUrls: ['./user-content-rating-lib.component.scss']\r\n})\r\nexport class UserContentRatingLibComponent implements OnInit {\r\n currentIndex: any =0\r\n @Input() providerId : any = ''\r\n @Input() formData : any = ''\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n styleData: any = {} \r\n contentdata: any = []\r\n\r\n\r\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\r\n constructor(public ratingService: RatingService,\r\n public userRatingSvc: UserContentRatingLibService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.styleData = this.formData && this.formData.sliderData && this.formData.sliderData.styleData\r\n this.getTopReviews();\r\n }\r\n\r\n getTopReviews() {\r\n this.contentdata = []\r\n this.userRatingSvc.fetchTopReviews(this.providerId).subscribe((response: any) => {\r\n if(response && response.result && response.result.content.length) {\r\n response.result.content.forEach((contentEle: any) => {\r\n let localData = {}\r\n localData['content'] = contentEle.contentInfo\r\n localData['rating'] = contentEle.rating\r\n localData['review'] = contentEle.review\r\n localData['userDetails'] = contentEle.userDetails\r\n localData['cardSubType'] = \"card-wide-lib\"\r\n localData['cardCustomeClass'] = \"\"\r\n this.contentdata.push(localData)\r\n });\r\n } else {\r\n this.emptyResponse.emit(true)\r\n }\r\n },(_error: any)=> {\r\n this.emptyResponse.emit(true)\r\n })\r\n }\r\n\r\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\r\n return this.ratingService.getRatingIcon(ratingIndex, avg)\r\n }\r\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\r\n return this.ratingService.getRatingIconClass(ratingIndex, avg)\r\n }\r\n\r\n getCurrentIndex(indexValue: any) {\r\n this.currentIndex = indexValue\r\n this.handleScrollClick(indexValue)\r\n }\r\n\r\n handleScrollClick(dataValue: string) {\r\n const item = this.scrollableItems.find(x => x.key === dataValue)\r\n item.scrollIntoView(\"nearest\");\r\n }\r\n\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipsModule, MatIconModule } from '@angular/material';\r\nimport { UserContentRatingLibComponent } from './user-content-rating-lib.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { SlidersLibModule } from '../sliders/sliders.module';\r\nimport { RatingService } from '../../_services/rating.service';\r\nimport { CardsModule } from '../cards/cards.module';\r\nimport { AvatarPhotoLibModule } from '../avatar-photo-lib/avatar-photo-lib.module';\r\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\r\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\r\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [UserContentRatingLibComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatChipsModule,\r\n SkeletonLoaderLibModule,\r\n SlidersLibModule,\r\n CardsModule,\r\n AvatarPhotoLibModule,\r\n SlidersNgContentLibModule,\r\n ScrollableItemModule\r\n ],\r\n exports: [UserContentRatingLibComponent],\r\n providers: [RatingService, UserContentRatingLibService],\r\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class UserContentRatingLibModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sb-uic-mdo-channel-v1',\r\n templateUrl: './mdo-channel-v1.component.html',\r\n styleUrls: ['./mdo-channel-v1.component.scss']\r\n})\r\nexport class MdoChannelV1Component implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core'\r\nimport { MatTabChangeEvent } from '@angular/material'\r\nimport { ActivatedRoute, Router } from '@angular/router'\r\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2'\r\n/* tslint:disable */\r\nimport * as _ from 'lodash'\r\nimport { TranslateService } from '@ngx-translate/core'\r\nimport { MultilingualTranslationsService } from '@sunbird-cb/utils-v2'\r\n\r\n@Component({\r\n selector: 'sb-uic-mdo-channel-v2',\r\n templateUrl: './mdo-channel-v2.component.html',\r\n styleUrls: ['./mdo-channel-v2.component.scss']\r\n})\r\nexport class MdoChannelV2Component implements OnInit {\r\n @Input() sectionList:any = []\r\n channnelName = ''\r\n orgId = ''\r\n selectedIndex = 0\r\n hideCompetencyBlock: boolean = false\r\n contentTabEmptyResponseCount: number = 0\r\n titles = [\r\n { title: 'Learn', url: '/page/learn', icon: 'school', disableTranslate: false },\r\n {\r\n title: `MDO Channels`,\r\n url: `/app/learn/mdo-channels/all-channels`,\r\n icon: '', disableTranslate: true,\r\n },\r\n ]\r\n showModal: boolean = false\r\n descriptionMaxLength = 500\r\n isTelemetryRaised: boolean = false\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private eventSvc: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n ) { \r\n if (this.route.snapshot.data && this.route.snapshot.data.formData\r\n && this.route.snapshot.data.formData.data\r\n && this.route.snapshot.data.formData.data.result\r\n && this.route.snapshot.data.formData.data.result.form\r\n && this.route.snapshot.data.formData.data.result.form.data\r\n && this.route.snapshot.data.formData.data.result.form.data.sectionList\r\n ) {\r\n this.sectionList = this.route.snapshot.data.formData.data.result.form.data.sectionList\r\n }\r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.route.params.subscribe(params => {\r\n this.channnelName = params['channel']\r\n this.orgId = params['orgId']\r\n this.titles.push({\r\n title: this.channnelName, icon: '', url: 'none', disableTranslate: true,\r\n })\r\n })\r\n }\r\n\r\n public tabClicked(tabEvent: MatTabChangeEvent) {\r\n this.raiseTelemetry(`${tabEvent.tab.textLabel} tab`)\r\n }\r\n hideContentStrip(event: any, contentStripData: any) {\r\n if (event) {\r\n contentStripData['hideSection'] = true\r\n this.contentTabEmptyResponseCount = this.contentTabEmptyResponseCount + 1\r\n // if(this.contentTabEmptyResponseCount === 4 ) {\r\n // this.selectedIndex = 1\r\n // }\r\n }\r\n }\r\n\r\n triggerOpenDialog(event: boolean) {\r\n if(event) {\r\n this.showModal = true\r\n document.body.style.overflow = 'hidden'\r\n }\r\n this.raiseTelemetry('btn open key annoucements')\r\n }\r\n\r\n onClose() {\r\n this.showModal = false\r\n document.body.style.overflow = 'auto'\r\n this.raiseTelemetry('btn close key annoucements')\r\n }\r\n\r\n raiseTelemetryInteratEvent(event: any) {\r\n if (event && event.viewMoreUrl) {\r\n this.raiseTelemetry(`${event.stripTitle} ${event.viewMoreUrl.viewMoreText}`)\r\n }\r\n if (!this.isTelemetryRaised && event && !event.viewMoreUrl) {\r\n this.eventSvc.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'mdo-channel',\r\n id: `${_.kebabCase(event.typeOfTelemetry.toLocaleLowerCase())}-card`,\r\n },\r\n {\r\n id: event.identifier,\r\n type: event.primaryCategory,\r\n },\r\n {\r\n pageIdExt: `${_.kebabCase(event.primaryCategory.toLocaleLowerCase())}-card`,\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n this.isTelemetryRaised = true\r\n }\r\n }\r\n\r\n raiseCompetencyTelemetry(name: string) {\r\n this.raiseTelemetry(`${name} core expertise`)\r\n }\r\n\r\n raiseTelemetry(name: string) {\r\n this.eventSvc.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'mdo-channel',\r\n id: `${_.kebabCase(name).toLocaleLowerCase()}`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n }\r\n\r\n hideCompetency(event: any) {\r\n if (event) {\r\n this.hideCompetencyBlock = true\r\n }\r\n }\r\n\r\n showAllContent(_stripData: any, contentStrip: any) {\r\n if (contentStrip && contentStrip.strips && contentStrip.strips.length) {\r\n const stripData: any = contentStrip.strips[0]\r\n if (stripData && stripData.request) {\r\n delete(stripData['loaderWidgets'])\r\n this.router.navigate(\r\n [`/app/learn/mdo-channels/${this.channnelName}/${this.orgId}/all-content`],\r\n { queryParams: { stripData: JSON.stringify(stripData) } })\r\n }\r\n } else {\r\n this.router.navigate(\r\n [`/app/learn/browse-by/provider/${this.channnelName}/${this.orgId}/all-CBP`])\r\n }\r\n }\r\n\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\r\nimport { MdoChannelV1Component } from './mdo-channel-v1/mdo-channel-v1.component';\r\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\nimport {\r\n AnnouncementsModule,\r\n CardsModule,\r\n CommonMethodsService,\r\n CommonStripModule,\r\n CompetencyPassbookModule,\r\n CompetencyPassbookMdoModule,\r\n ContentStripWithTabsLibModule,\r\n DataPointsModule,\r\n SlidersLibModule,\r\n HttpLoaderFactory,\r\n TopLearnersModule,\r\n CbpPlanModule,\r\n} from './../../../../public-api'\r\nimport { MdoChannelV2Component } from './mdo-channel-v2/mdo-channel-v2.component';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n\r\n@NgModule({\r\n declarations: [MdoChannelV1Component, MdoChannelV2Component],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatChipsModule,\r\n SkeletonLoaderLibModule,\r\n AnnouncementsModule,\r\n TopLearnersModule,\r\n CbpPlanModule,\r\n CardsModule,\r\n CommonStripModule,\r\n CompetencyPassbookModule,\r\n CompetencyPassbookMdoModule,\r\n ContentStripWithTabsLibModule,\r\n DataPointsModule,\r\n SlidersLibModule,\r\n MatTabsModule,\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 ],\r\n exports: [MdoChannelV1Component, MdoChannelV2Component],\r\n providers:[\r\n CommonMethodsService],\r\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class MDOChannelModule { }\r\n","import { DatePipe } from '@angular/common'\r\nimport { Component, Input, OnInit } from '@angular/core'\r\nimport { ActivatedRoute, Router } from '@angular/router'\r\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2'\r\nimport * as _ from 'lodash'\r\n\r\n@Component({\r\n selector: 'sb-uic-providers-v2',\r\n templateUrl: './providers-v2.component.html',\r\n styleUrls: ['./providers-v2.component.scss']\r\n})\r\nexport class ProvidersV2Component implements OnInit {\r\n\r\n @Input() sectionList:any = []\r\n providerName = ''\r\n providerId = ''\r\n navList: any\r\n hideCompetencyBlock = false\r\n // sectionList: any = []\r\n currentMonthAndYear: any\r\n titles = [\r\n { title: 'Learn', url: '/page/learn', icon: 'school', disableTranslate: false },\r\n { title: `All Providers`,\r\n url: `/app/learn/browse-by/provider/all-providers`,\r\n icon: '', disableTranslate: true,\r\n },\r\n ]\r\n\r\n descriptionMaxLength = 500\r\n isTelemetryRaised = false\r\n\r\n constructor(private route: ActivatedRoute,\r\n public router: Router, private datePipe: DatePipe, private events: EventService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n if (this.route.snapshot.data && this.route.snapshot.data.formData\r\n && this.route.snapshot.data.formData.data\r\n && this.route.snapshot.data.formData.data.result\r\n && this.route.snapshot.data.formData.data.result.form\r\n && this.route.snapshot.data.formData.data.result.form.data\r\n && this.route.snapshot.data.formData.data.result.form.data.sectionList\r\n ) {\r\n this.sectionList = this.route.snapshot.data.formData.data.result.form.data.sectionList\r\n }\r\n this.route.params.subscribe(params => {\r\n this.providerName = params['provider']\r\n this.providerId = params['orgId']\r\n this.titles.push({\r\n title: this.providerName, icon: '', url: 'none', disableTranslate: true,\r\n })\r\n })\r\n this.getNavitems()\r\n this.currentMonthAndYear = this.datePipe.transform(new Date(), 'MMMM y')\r\n }\r\n\r\n getNavitems() {\r\n this.navList = this.sectionList.filter(\r\n (obj: any) => obj.enabled && obj.navigation && obj.navOrder).sort(\r\n (a: any, b: any) => a.navOrder - b.navOrder)\r\n }\r\n\r\n scrollToSection(name: string) {\r\n let section: HTMLElement | any\r\n section = document.getElementById(name)\r\n if (section) {\r\n // section.scrollIntoView({ behavior: 'smooth', block: 'start',inline: 'nearest', offsetTop: yOffset })\r\n window.scrollTo({\r\n top: section.offsetTop - 121,\r\n behavior: 'smooth',\r\n })\r\n }\r\n }\r\n hideCompetency(event: any, columnData: any) {\r\n if (event) {\r\n this.hideCompetencyBlock = true\r\n columnData['navigation'] = false\r\n columnData['enabled'] = false\r\n this.navList.forEach((navItem: any) => {\r\n navItem.column.forEach((colEle: any) => {\r\n if (colEle.key === columnData.key) {\r\n navItem['navigation'] = false\r\n }\r\n })\r\n })\r\n }\r\n }\r\n hideContentStrip(event: any, contentStripData: any) {\r\n if (event) {\r\n contentStripData['hideSection'] = true\r\n }\r\n }\r\n hideLearnerReview(event: any, learnerReview: any) {\r\n if (event) {\r\n learnerReview['hideSection'] = true\r\n }\r\n }\r\n\r\n showAllContent(_stripData: any, contentStrip: any) {\r\n if (contentStrip && contentStrip.strips && contentStrip.strips.length) {\r\n const stripData: any = contentStrip.strips[0]\r\n if (stripData && stripData.request) {\r\n delete(stripData['loaderWidgets'])\r\n this.router.navigate(\r\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-content`],\r\n { queryParams: { stripData: JSON.stringify(stripData), pageDetails: true } })\r\n }\r\n } else {\r\n this.router.navigate(\r\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-CBP`],\r\n { queryParams: { pageDetails: true } })\r\n }\r\n }\r\n\r\n raiseTelemetryInteratEvent(event: any) {\r\n if (event && event.viewMoreUrl) {\r\n this.raiseTelemetry(`${event.stripTitle} ${event.viewMoreUrl.viewMoreText}`)\r\n }\r\n if (!this.isTelemetryRaised && event && !event.viewMoreUrl) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'ATI/CTI',\r\n id: `${_.kebabCase(event.typeOfTelemetry.toLocaleLowerCase())}-card`,\r\n },\r\n {\r\n id: event.identifier,\r\n type: event.primaryCategory,\r\n },\r\n {\r\n pageIdExt: `${_.kebabCase(event.primaryCategory.toLocaleLowerCase())}-card`,\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n this.isTelemetryRaised = true\r\n }\r\n }\r\n\r\n raiseCompetencyTelemetry(name: string) {\r\n this.raiseTelemetry(`${name} core expertise`)\r\n }\r\n\r\n raiseTelemetry(name: string) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'ATI/CTI',\r\n id: `${_.kebabCase(name).toLocaleLowerCase()}`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n }\r\n\r\n raiseNavTelemetry(name: string) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'ATI/CTI',\r\n id: `${_.kebabCase(name).toLocaleLowerCase()}-navigation`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n }\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\r\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport {\r\n CalenderModule,\r\n CardsModule, \r\n CommonMethodsService, \r\n CommonStripModule, \r\n CompetencyPassbookModule, \r\n ContentStripWithTabsLibModule,\r\n DataPointsModule, \r\n HttpLoaderFactory, \r\n SlidersLibModule, \r\n UserContentRatingLibModule \r\n} from './../../../../public-api'\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ProvidersV2Component } from './providers-v2/providers-v2.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n\r\n@NgModule({\r\n declarations: [ProvidersV2Component],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n RouterModule,\r\n MatChipsModule,\r\n SkeletonLoaderLibModule,\r\n CalenderModule,\r\n CardsModule,\r\n CommonStripModule,\r\n CompetencyPassbookModule,\r\n UserContentRatingLibModule,\r\n ContentStripWithTabsLibModule,\r\n DataPointsModule,\r\n SlidersLibModule,\r\n MatTabsModule,\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 ],\r\n exports: [ProvidersV2Component],\r\n providers:[\r\n CommonMethodsService],\r\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class ProvidersModule { }\r\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/_services/widget-content.service.ts","ng://@sunbird-cb/consumption/lib/_services/configurations.service.ts","ng://@sunbird-cb/consumption/lib/_services/multilingual-translations.service.ts","ng://@sunbird-cb/consumption/lib/_models/card-content-v2.model.ts","ng://@sunbird-cb/consumption/lib/_services/widget-user.service.ts","ng://@sunbird-cb/consumption/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/sliders/sliders.component.ts","ng://@sunbird-cb/consumption/lib/_directives/image-responsive/image-responsive.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/image-responsive/image-responsive.module.ts","ng://@sunbird-cb/consumption/lib/_directives/navigation/navigation.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/navigation/navigation.module.ts","ng://@sunbird-cb/consumption/lib/_common/sliders/sliders.module.ts","ng://@sunbird-cb/consumption/lib/_services/insite-data.service.ts","ng://@sunbird-cb/consumption/lib/_common/data-points/data-points.component.ts","ng://@sunbird-cb/consumption/lib/_common/skeleton-loader-lib/skeleton-loader-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/skeleton-loader-lib/skeleton-loader-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/data-points/data-points.module.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender.component.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender-day/calender-day.component.ts","ng://@sunbird-cb/consumption/lib/_common/calender/calender.module.ts","ng://@sunbird-cb/consumption/lib/_services/common-methods.service.ts","ng://@sunbird-cb/consumption/lib/_common/common-strip/common-strip.component.ts","ng://@sunbird-cb/consumption/lib/_common/common-strip/common-strip.module.ts","ng://@sunbird-cb/consumption/lib/_common/announcements/announcements.component.ts","ng://@sunbird-cb/consumption/lib/_common/announcements/announcements.module.ts","ng://@sunbird-cb/consumption/lib/_common/top-learners/top-learners.component.ts","ng://@sunbird-cb/consumption/lib/_common/top-learners/top-learners.module.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.directive.ts","ng://@sunbird-cb/consumption/lib/_common/cbp-plan/cbp-plan.component.ts","ng://@sunbird-cb/consumption/lib/_common/sliders-ng-content/sliders-ng-content.component.ts","ng://@sunbird-cb/consumption/lib/_common/sliders-ng-content/sliders-ng-content.module.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.module.ts","ng://@sunbird-cb/consumption/lib/_common/cbp-plan/cbp-plan.module.ts","ng://@sunbird-cb/consumption/lib/consumption.module.ts","ng://@sunbird-cb/consumption/lib/consumption.config.ts","ng://@sunbird-cb/consumption/lib/_models/card-content.model.ts","ng://@sunbird-cb/consumption/lib/_common/cards/cards.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-resource/card-resource.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-portrait/card-portrait.component.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-public-URL/pipe-public-URL.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-public-URL/pipe-public-URL.module.ts","ng://@sunbird-cb/consumption/lib/_pipes/object-to-array/object-to-array.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/object-to-array/object-to-array.pipe.module.ts","ng://@sunbird-cb/consumption/lib/_common/display-content-type-lib/display-content-type-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/display-content-type-lib/display-content-type-lib.module.ts","ng://@sunbird-cb/consumption/lib/_directives/default-thumbnail/default-thumbnail.directive.ts","ng://@sunbird-cb/consumption/lib/_directives/default-thumbnail/default-thumbnail.module.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.ts","ng://@sunbird-cb/consumption/lib/_pipes/pipe-duration-transform/pipe-duration-transform.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-user/card-user.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-landscape/card-landscape.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-wide/card-wide.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-wide-v2/card-wide-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-karma-programs/card-karma-programs.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-karma-programs-v2/card-karma-programs-v2.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/provider-card/provider-card.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.ts","ng://@sunbird-cb/consumption/lib/_services/certificate.service.ts","ng://@sunbird-cb/consumption/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-progress/content-progress.component.ts","ng://@sunbird-cb/consumption/lib/_common/content-progress/content-progress.module.ts","ng://@sunbird-cb/consumption/lib/_common/dialog-components/dialog-components.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.ts","ng://@sunbird-cb/consumption/lib/_common/avatar-photo-lib/avatar-photo-lib.component.ts","ng://@sunbird-cb/consumption/lib/_common/avatar-photo-lib/avatar-photo-lib.module.ts","ng://@sunbird-cb/consumption/lib/_common/cards/cards.module.ts","ng://@sunbird-cb/consumption/lib/registration-lib.config.ts","ng://@sunbird-cb/consumption/lib/_common/strips/content-strip-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/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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__createBinding","o","m","k","k2","undefined","__exportStar","exports","__values","__read","ar","error","__spread","concat","__spreadArrays","il","a","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","ConsumptionService","Injectable","args","providedIn","ConsumptionComponent","ngOnInit","Component","selector","template","HorizontalScrollerV2Component","valueSvc","loadStatus","id","onHover","sliderConfig","showNavs","showDots","cerificateCardMargin","loadNext","EventEmitter","horizontalScrollElem","enablePrev","enableNext","activeNav","cardSubType","bottomDotsArray","scrollObserver","isMobile","defaultMenuSubscribe","isLtMedium$","_this","stripConfig","horizontalScrollElem_1","fromEvent","nativeElement","pipe","debounceTime","throttleTime","subscribe","updateNavigationBtnStatus","setTimeout","getBottomDotsArray","isLtMedium","ngOnChanges","timer","ngOnDestroy","unsubscribe","showPrev","clientWidth","scrollTo","left","scrollLeft","behavior","elem","scrollWidth","arrowsAlwaysOn","showNext","widthDiff","Math","abs","round","emit","ceil","slideTo","ele","diff","arrLength_1","cardWidth","document","getElementsByClassName","getElementById","scrollerWidth","widgetsLength","defaultMaxWidgets","ValueService","Input","Output","ViewChild","static","HorizontalScrollerV2Module","NgModule","declarations","imports","CommonModule","MatButtonModule","MatIconModule","MatProgressSpinnerModule","NsContent","IContinueLearningData","IContinueLearningDataReq","IContent","IContentResponse","IBatch","IBatchListResponse","ICourse","IContentMinimal","ICollectionHierarchyResponse","IRelatedContentMeta","ICreator","IContentTopic","IContact","IViewerContinueLearningRequest","EPrimaryCategory","EMiscPlayerSupportedCollectionTypes","EMimeTypes","EContentTypes","ECourseCategory","WFBlendedProgramStatus","WFBlendedProgramApprovalTypes","WFSTATUS_MSG_MAPPING","INITIATE","SEND_FOR_MDO_APPROVAL","SEND_FOR_PC_APPROVAL","APPROVED","REJECTED","WITHDRAWN","REMOVED","EXPIRED","EResourcePrimaryCategories","PLAYER_SUPPORTED_COLLECTION_TYPES","COURSE","MODULE","PROGRAM","CURATED_PROGRAM","BLENDED_PROGRAM","STANDALONE_ASSESSMENT","PLAYLIST","KB_SUPPORTED_CONTENT_TYPES","RESOURCE","PLAYLIST_SUPPORTED_CONTENT_TYPES","EDisplayContentTypes","EFilterCategory","ETagType","UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS","PUBLIC_SUPPORTED_CONTENT_TYPES","APPLICATION_JSON","FINAL_ASSESSMENT","HTML","HTML_TEXT","ZIP","ZIP2","M4A","MP3","MP4","PDF","YOUTUBE","TEXT_WEB","SURVEY","VIEWER_ROUTE_FROM_MIME","mimeType","COLLECTION","CHANNEL","CERTIFICATION","window","location","href","includes","IAP","ILP_FP","M3U8","WEB_MODULE","WEB_MODULE_EXERCISE","CLASS_DIAGRAM","HANDS_ON","RDBMS_HANDS_ON","HTML_PICKER","QUIZ","PRACTICE_RESOURCE","COLLECTION_RESOURCE","OFFLINE_SESSION","viewerRouteGenerator","collectionId","collectionType","forPreview","primaryCategory","batchId","courseName","collId","collType","url","forcreator","queryParams","preview","editMode","moment","moment_","PROTECTED_SLAG_V8","type","ɵ1","contentId","ɵ2","certId","ɵ3","API_END_POINTS","CONTENT","AUTHORING_CONTENT","CONTENT_LIKES","SET_S3_COOKIE","SET_S3_IMAGE_COOKIE","FETCH_MANIFEST","FETCH_WEB_MODULE_FILES","MULTIPLE_CONTENT","CONTENT_SEARCH_V5","CONTENT_SEARCH_V6","TRENDING_CONTENT_SEARCH","CONTENT_SEARCH_RELATED_CBP_V6","CONTENT_SEARCH_REGION_RECOMMENDATION","CONTENT_HISTORY","CONTENT_HISTORYV2","COURSE_BATCH_LIST","COURSE_BATCH","AUTO_ASSIGN_BATCH","AUTO_ASSIGN_CURATED_BATCH","AUTO_ASSIGN_OPEN_PROGRAM","USER_CONTINUE_LEARNING","CONTENT_RATING","COLLECTION_HIERARCHY","REGISTRATION_STATUS","MARK_AS_COMPLETE_META","ENROLL_BATCH","ENROLL_BATCH_WF","WITHDRAW_BATCH_WF","BLENDED_USER_WF","BLENDED_USER_COUNT","CERT_ADD_TEMPLATE","CERT_ISSUE","CERT_DOWNLOAD","READ_KARMAPOINTS","CONTENT_READ","READ_COURSE_KARMAPOINTS","CLAIM_KARMAPOINTS","USER_KARMA_POINTS","AGGREGATION_SEARCH","FEATURE_SEARCH","WidgetContentService","http","configSvc","tocConfigData","BehaviorSubject","tocConfigData$","asObservable","telemetryData","Subject","telemetryData$","programChildCourseResumeData","programChildCourseResumeData$","changeTelemetryData","message","isResource","LEARNING_RESOURCE","COMP_ASSESSMENT","fetchMarkAsCompleteMeta","identifier","of","toPromise","updateTocConfig","data","fetchContent","hierarchyType","_additionalFields","shareReplay","fetchAuthoringContent","fetchMultipleContent","ids","join","fetchCollectionHierarchy","pageNumber","pageSize","fetchBlendedCourse","fetchCourseBatches","req","post","retry","map","response","fetchCourseBatch","autoAssignBatchApi","autoAssignCuratedBatchApi","request","programType","MODERATED_PROGRAM","enrollUserToBatch","enrollAndUnenrollUserToBatchWF","fetchBlendedUserWF","fetchBlendedUserCOUNT","fetchContentLikes","contentIds","fetchContentRatings","fetchContentHistory","fetchContentHistoryV2","fields","courseId","subscribeData","resumeData","contentList","continueLearning","toLowerCase","reqBody","contextPathId","resourceId","JSON","stringify","timestamp","Date","now","contextFullPath","dateAccessed","contextType","saveContinueLearning","catch","finally","_a","content","setS3Cookie","_contentId","EMPTY","setS3ImageCookie","catchError","_err","fetchManifest","fetchWebModuleContent","encodeURIComponent","search","query","searchRegionRecommendation","preLabelValue","userProfile","country","filters","labels","searchV6","apiPath","_.get","searchRelatedCBPV6","fetchContentRating","deleteContentRating","delete","addContentRating","getFirstChildInHierarchy","children","artifactUrl","MANDATORY_COURSE_GOAL","child","KNOWLEDGE_ARTIFACT","firstChild","getRegistrationStatus","source","fetchConfig","addCertTemplate","patch","issueCert","downloadCert","trendingContentSearch","getKarmaPoitns","limit","offset","fetchProgramContent","getCourseKarmaPoints","claimKarmapoints","userKarmaPoints","getEnrolledData","doId","parse","localStorage","getItem","getResourseLink","enrolledCourseData","courseCategory","INVITE_ONLY_PROGRAM","isBatchInProgress","batch","checkForDataToFormUrl","gotoTocPage","enrollData","completionPercentage","lrcProgressDetails","modifyEnrollData","name","lastReadContentId","getResourseDataWithData","firstChildId","res","contentData","urlData","resourseId","endDate","planType","batchData","format","startDate","isSameOrBefore","isSameOrAfter","postApiMethod","apiUrl","getApiMethod","HttpClient","ConfigurationsService","appSetup","userUrl","baseUrl","sitePath","hostPath","replace","userRoles","userGroups","restrictedFeatures","restrictedWidgets","instanceConfig","appsConfig","rootOrg","org","activeOrg","isProduction","hasAcceptedTnc","profileDetailsStatus","isActive","userPreference","userProfileV2","nodebbUserProfile","isAuthenticated","isNewUser","pinnedApps","Set","prefChangeNotifier","ReplaySubject","tourGuideNotifier","authChangeNotifier","updateProfile","updateProfileObservable","updateTourGuide","updateTourGuideObservable","updatePlatformRating","bottom","updatePlatformRatingObservable$","languageTranslationFlag","activeThemeObject","activeFontObject","isDarkMode","isIntranetAllowed","isRTL","activeLocale","activeLocaleGroup","completedActivity","completedTour","profileSettings","primaryNavBar","color","pageNavBar","primaryNavBarConfig","welcomeTabs","cstoken","changeNavBarFullView","openExploreMenuForMWeb","updateGlobalProfile","state","updateTourGuideMethod","updatePlatformRatingMethod","MultilingualTranslationsService","translate","selectedLang","languageSelected","languageSelectedObservable","editProfileDetails","getLanguage","unMappedUser","profileDetails","additionalProperties","webPortalLang","lang","use","setItem","setDefaultLang","translateLabelWithoutspace","subtype","nlabel","translationKey","instant","translationKeyn","translateLabel","sl_1","split","forEach","w","index","toUpperCase","slice","translateActualLabel","sl","editProfileDetailsAPI","updatelanguageSelected","userid","reqUpdates","userId","TranslateService","NsCardContent","ICard","IContentTags","ICompetency","EContentStatus","ACBPConst","IGOTConst","dayjs","dayjs_","ɵ1$1","COMPETENCIES","ɵ2$1","ɵ3$1","orgdetails","licenseDetails","batchDetails","FETCH_USER_GROUPS","FETCH_CPB_PLANS","FETCH_USER_ENROLLMENT_LIST","FETCH_USER_ENROLLMENT_LIST_PROFILE","FETCH_USER_ENROLLMENT_LIST_V2","WidgetUserService","environment","handleError","errorMessage","ErrorEvent","throwError","fetchUserGroupDetails","fetchUserBatchList","path","headers","HttpHeaders","Cache-Control","Pragma","Expires","checkStorageData","coursesData","courses","contentStatus","storeUserEnrollmentInfo","userCourseEnrolmentInfo","removeItem","setTime","mapEnrollmentData","getData","fetchProfileUserBatchList","dataKey","checkTime","parsedData","apiCache","Observable","getSavedData","getTime","resetTime","fetchCbpPlanList","mapData","contentNew","todayDate","enrollList","count","childData","childEnrollData","daysCount","OVERDUE","SUCCESS","UPCOMING","status","RETIRED","competencyArea","competencyTheme","competencyThemeType","competencySubTheme","competencyAreaId","competencyThemeId","competencySubThemeId","competencies_v5","element","sortedData","sort","firstDate","uniqueUsersByID","lodash.uniqBy","sortedByEndDate","lodash.orderBy","sortedByStatus","courseData","enrollmentData","enrolledCourseCount","userData","Inject","IStripUnitContentData","ContentStripWithTabsLibComponent","_super","contentSvc","loggerSvc","eventSvc","utilitySvc","router","userSvc","langtranslations","emptyResponse","viewAllResponse","telemtryResponse","providerId","emitViewAll","channnelName","random","stripsResultDataMap","stripsKeyOrder","showAccordionData","showParentLoader","showParentError","showParentNoData","errorDataCount","noDataCount","successDataCount","contentAvailable","veifiedKarmayogi","changeEventSubscription","todaysEvents","tslib_1.__extends","initData","showAccordion","mode","setHiddenForStrip","showStrip","sessionStorage","getIfStripHidden","storageItem","Boolean","widgetData","strips","strip","loader","_b","tslib_1.__values","_c","checkForEmptyWidget","fetchStripFromRequestData","processStrip","keyAndEvent","refreshEvent","eventType","from","toString","filter","eventTypeSet","events$","event","fetchStripFromKey","calculateParentStatus","stripData","find","isStripShowing","programStripKey","tabs","stripTitle","programStripName","widgets","programStripPrimaryCategory","getdata","stripInfo","widget","checkCondition","wData","hideShowAll","viewMoreUrl","checkVisible","visibilityMode","getContineuLearningLenth","getLength","tabWithMaxWidgets","reduce","prev","current","getFiltersFromArray","v6filters","keys","transformSearchV6FiltersV2","checkForDateFilters","eval","organisation","rootOrgId","designation","professionalDetails","loaderWidgets","transformSkeletonToWidgets","fetchFromEnrollmentList","fetchFromSearchV6","fetchFromTrendingContent","fetchAllCbpPlans","fetchAllTopContent","fetchAllFeaturedContent","fetchAllBookMarkData","fetchAllPlaylistSearch","fetchPlaylistReadData","fetchCiosContentData","enrollmentList","content_1","contentNew_1","tabResults_1","postCardForSearch","contentTemp","progress","completionStatus","enrolledDate","lastContentAccessTime","lastReadContentStatus","issuedCertificates","dateA","splitEnrollmentTabsData","transformContentsToWidgets","tabResults","splitData","getInprogressAndCompleted","fetchTabStatus","itmInner","array","customFilter","inprogress","completed","idx","arr","statusRetired","statusA","statusB","originalFilters","console","log","requestRequired","allTabs","currentTabFromMap","getTabDataByNewReqSearchV6","searchV6Request","response_1","results","enrollInterval","setInterval","checkInvitOnlyAssessments","Event","transformEventsToWidgets","enrollmentMapData","filteredArray_1","now_1","clearInterval","tab","trendingSearch","getTabDataByNewReqTrending","trendingSearchRequest","responseKey","userRootOrgId","proccesedResult","certifications","toggleInfo","warn","contents","widgetType","widgetSubType","widgetHostClass","cardCustomeClass","customeClass","context","pageSection","position","intranetMode","deletedMode","contentTags","setEventListData","_content","loaderConfig","fetchStatus","_viewMoreUrl","tabsResults","canHideStrip","noDataWidget","errorWidget","info","title","stripTitleLink","disableTranslate","tabsType","stripName","stripBackground","secondaryHeading","preWidgets","postWidgets","showOnNoData","showOnLoader","showOnError","checkParentStatus","stripWidgetsCount","settledCount","totalCount","api","cbpList","topContent","featureContent","bookmarkRead","playlistSearch","playlistRead","ciosContent","tabClicked","tabEvent","stripMap","stripKey","tabLoading","textLabel","raiseInteractTelemetry","WsEvents","EnumInteractTypes","CLICK","subType","EnumInteractSubTypes","HOME_PAGE_STRIP_TABS","_.camelCase","module","EnumTelemetrymodules","HOME","currentStrip","tabSelected","computeDataOnClick","getTabDataByNewReqTopContent","getTabDataByNewReqPlaylistReadContent","getTabDataByCiosSearch","getTabDataByfilter","tabIndex","currentTab","splitCbpTabsData","getTabsList","all","upcoming","overdue","planDuration","allCompleted","allData","allInCompleted","allCompletedOverDue","allCompletedAll","getSelectedIndex","returnValue","translateLabels","identify","item","tracker","postMethodFilters","postRequestMethod","raiseTelemetry","getRequestMethod","showViewMore","orgList","featuredProvider","featuredProviders","getFullUrl","formedUrl","mdoChannelsBookmarkId","providerDataKey","redirectViewAll","queryParamsData","navigate","bookmarkId","transformAllContentsToWidgets","transformAllTabContentsToWidgets","finalPlaylistData_1","prgData","error_11","firstTab","extContentData","_currentTab","error_13","LoggerService","EventService","UtilityService","Router","HostBinding","WidgetBaseComponent","HttpLoaderFactory","TranslateHttpLoader","ContentStripWithTabsLibModule","SbUiResolverModule","RouterModule","MatToolbarModule","MatTooltipModule","MatListModule","MatSidenavModule","MatCardModule","MatExpansionModule","MatRadioModule","MatChipsModule","MatInputModule","MatFormFieldModule","MatDialogModule","MatSnackBarModule","MatSelectModule","MatDatepickerModule","MatNativeDateModule","MatTableModule","MatCheckboxModule","MatButtonToggleModule","MatTabsModule","MatAutocompleteModule","TranslateModule","forRoot","provide","TranslateLoader","useFactory","deps","entryComponents","SlidersLibComponent","events","currentIndex","slideInterval","reInitiateSlideInterval","interval","currentData","redirectUrl","openInNewTab","open","bannerUrl","pathname","pageUrl","bannerRedirectUrl","pageIdExt","IImageResponsiveUnit","customBreakPoints","xs","l","xl","xxl","ImageResponsiveDirective","breakpointObserver","src","srcBindUrl","currentSize","breakpointSubscription","observe","distinctUntilChanged","breakpoints","setSrc","Directive","BreakpointObserver","ImageResponsiveModule","NavigationDirective","wsUtilsNavigation","routeUrl","onMouseEnter","$event","preventDefault","stopPropagation","HostListener","NavigationModule","MyHammerConfig","buildHammer","Hammer","touchAction","HammerGestureConfig","SlidersLibModule","providers","HAMMER_GESTURE_CONFIG","useClass","PROVIDER_INSIGHTS","TRAINING_DETAILS","ANNOUNCEMENTS_DETAILS","LEARNERS","InsiteDataService","fetchSearchData","fetchAnnouncementsData","fetchTrainingDetails","fetchLearner","channelId","DataPointsComponent","insightSvc","layoutType","fetchDataFromApi","pageLayout","customArray","isDataLoading","objectData","createCustomArray","metrics","getInsiteData","nByn","dataColSpan","organisations","requestType","nudges","nudgeData","orgId","converToIndianSystem","integerPart","decimalPart","lastThree","otherNumbers","formattedIntegerPart","substr","SkeletonLoaderLibComponent","bindingClass","height","width","SkeletonLoaderLibModule","FormsModule","ReactiveFormsModule","DataPointsModule","CalenderComponent","datePipe","showHeader","defaultDays","fullCalendor","days","trainings","currentDate","allMonths","monthsDropdown","currentMonthAndYear","transform","selectedMonth","getDaysInMonth","getFullYear","getMonth","getMonthsDropdownData","getDays","locale","category","contentType",">=","<=","channel","sort_by","lastUpdatedOn","resp","prevData","location_1","formatObject","startTime","convertTo12HourFormat","endTime","formatDate","registrationLink","getKeys","obj","date","timeString","time","hours","minutes","ampm","cDate","counter","initDate","myDate","setDate","getDate","year","month","selectMonth","DatePipe","CalenderDayComponent","webDisplayDate","mobileDisplayDate","openLink","link","fDate","CalenderModule","schemas","CUSTOM_ELEMENTS_SCHEMA","CommonMethodsService","handleCapitalize","str","_str","charAt","IStripUnitCommonData","CommonStripComponent","commonMethodsSvc","dataType","ɵ0$2","CommonStripModule","AnnouncementsComponent","mobileHeight","openDialog","isLoading","announcements","expand","expanded","fetchData","filterCriteriaMap","requestedFields","orderBy","orderDirection","facets","description","list","viewMoreOrLess","openAnnouncements","showMoreOrLess","AnnouncementsModule","TopLearnersComponent","loading","colors","toLocaleString","Number","_error","getRank","rank","getColor","randomIndex","floor","createInititals","initials","TopLearnersModule","ScrollableItemDirective","el","scrollIntoView","blockValue","block","ElementRef","CbpPlanComponent","styleData","contentdata","sliderData","contentEle","localData","downloaUrl","getCurrentIndex","indexValue","getFileName","downloadUrl","at","downloadCBPPlan","xhr","XMLHttpRequest","responseType","onload","blob","Blob","URL","createObjectURL","createElement","download","appendChild","click","removeChild","revokeObjectURL","statusText","onerror","send","ViewChildren","SlidersNgContentLibComponent","loadNgContentData","autoScroll","currentIndexValue","SlidersNgContentLibModule","ScrollableItemModule","CbpPlanModule","ConsumptionModule","ROOT_WIDGET_CONFIG","card","_type","cardResource","CardsComponent","contSvc","triggerTelemetry","isIntranetAllowedSettings","cbPlanInterval","getCbPlanData","getEnrollmentData","isInIntranet","getRedirectUrlData","externalId","cbpListArr","cbPlanMapData","raiseCardClick","CardResourceComponent","CardPortraitComponent","snackBar","isCardLoading","isCardFlipped","acbpConstants","showFlip","defaultThumbnail","logos","defaultContent","sourceLogos","sources","defaultSLogo","defaultSourceLogo","showSnackbar","showIntranetContent","duration","isLiveOrMarkForDeletion","MatSnackBar","PipePublicURL","mainUrl","finalURL","contentHost","contentBucket","Pipe","PipePublicURLModule","ObjectToArrayPipe","_i","ObjectToArrayPipeModule","DisplayContentTypeLibComponent","useTranslation","displayContentType","DEFAULT","displayContentTypeEnum","DisplayContentTypeLibModule","DefaultThumbnailDirective","wsUtilsDefaultThumbnail","isSrcUpdateAttemptedForDefault","srcUrl","updateSrc","DefaultThumbnailModule","PipeDurationTransformPipe","h","defaultDuration","hmsCalculation","duration2","moment.duration","moment.utc","asMilliseconds","duration2H","padStart","dur","space","PipeDurationTransformModule","CardUserComponent","rollup","CardLandscapeComponent","CardWideComponent","ver","version","CardMDOChannelComponent","channelData","emitTelemetry","channelClick","channeldata","redirectTo","orgName","CardWideV2Component","CardKarmaProgramsComponent","randomColorApply","randomColors","setRandomColor","randomIndex1","playListKey","CardKarmaProgramsV2Component","raiseTemeletry","ProviderCardComponent","CardPortraitExtComponent","CardAssessmentComponent","activeResource","daysRemaining","daysPending","daysFinish","startCountdown","updateCountdown","distance","ɵ0$3","ɵ1$2","urls","DOWNLOAD_CERTIFICATE","DOWNLOAD_CERTIFICATE_v2","CertificateService","downloadCertificate","downloadCertificate_v2","CertificateDialogComponent","dialogRef","navUrl","cet","raiseIntreactTelemetry","style","remove","downloadCertPng","uriData","img","Image","canvas","ctx","getContext","drawImage","toDataURL","append","downloadCertPdf","dataImg","pdf","jsPDF","addImage","save","shareCert","raiseShareIntreactTelemetry","action","CERTIFICATE","host","class","MatDialogRef","MAT_DIALOG_DATA","CardProgressPortraitLibComponent","certificateService","dialog","downloadCertificateLoading","certificateData","certData_1","printUri","MatDialog","ContentProgressComponent","progressType","className","customClassName","rendom","role","aria-valuemin","aria-valuemax","[attr.aria-valuenow]","ContentProgressModule","MatProgressBarModule","ɵ0$4","DialogComponentsModule","MatMenuModule","PipeSafeSanitizerModule","CardMdoChannelV1Component","AvatarPhotoLibComponent","size","defaulfColor","randomColor","showBadge","showInitials","randomcolors","photoUrl","datalen","circleColor","change","currentValue","previousValue","firstChange","AvatarPhotoLibModule","MatRippleModule","ɵ0$5","CardsModule","WIDGET_REGISTERED_LIB_MODULES","WIDGET_REGISTRATION_LIB_CONFIG","component","IStripUnitContentData$1","ContentStripWithTabsPillsComponent","tabWithMaxWidgets_1","pillsData","fetchForYouData","pillData","allPills","currenPillsFromMap","pillSelected","pillIndex","resetSelectedPill","selected","currentPillFromMap","pillClicked","getSelectedPillIndex","tabdata","findIndex","pill","countOfWidget_1","HttpLoaderFactory1","ContentStripWithTabsPillsModule","API_POINTS","COMPETENCY_LIST","CERTIFICATE_URL","CompetencyPassbookService","getCompetencyList","payload","fetchCertificate","CompetencyPassbookComponent","competencySvc","cardDisplayCount","dynamicAlignPills","temeletryResponse","loadCometency","loadCompetencyArea","competencyVersion","allcompetencyTheme","competencyStrength","competencyThemeLength","showAllTheme","showAll","getAllCompetencies","showMore","viewMore","getCompetencyArea","addfilter","createdFor","callCompetencySearch","values","partialSum","selectedValue","addFilter","getcompetencyTheme","competencyChange","isDetail","competency","originalCompetencyArray","childEle","competencies_v5.competencyArea","competencyThemeData_1","ele1","ele2","resetViewMore","comp","viewMoreChildren","displayAllTheme","navigateToCompetency","compData","navigateByUrl","PillsComponent","pillClick","dynamicClass","dynamicColor","requiredTitlecase","selectedPill","PillsModule","CompetencyPassbookModule","competency_URL","CompetencyPassbookMdoService","mdoCompetency","CompetencyPassbookMdoComponent","getMdoCompetencies","getMdoCompetency","facet","competencyThemeData","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","params","hideContentStrip","contentStripData","triggerOpenDialog","overflow","onClose","raiseTelemetryInteratEvent","viewMoreText","_.kebabCase","typeOfTelemetry","toLocaleLowerCase","LEARN","raiseCompetencyTelemetry","hideCompetency","showAllContent","_stripData","contentStrip","ActivatedRoute","ɵ0$7","MDOChannelModule","ProvidersV2Component","providerName","getNavitems","navList","enabled","navigation","navOrder","scrollToSection","section","top","offsetTop","columnData","navItem","column","colEle","hideLearnerReview","learnerReview","pageDetails","raiseNavTelemetry","ɵ0$8","ProvidersModule"],"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';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConsumptionService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sb-uic-consumption',\r\n template: `\r\n <p>\r\n consumption works!\r\n </p>\r\n `,\r\n styles: []\r\n})\r\nexport class ConsumptionComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core';\r\nimport {\r\n fromEvent,\r\n Subscription,\r\n timer,\r\n} from 'rxjs';\r\nimport { debounceTime, throttleTime } from 'rxjs/operators';\r\nimport { TFetchStatus } from '../../_constants/misc.constants';\r\nimport { ValueService } from '@sunbird-cb/utils-v2';\r\nimport { NsCommonStrip } from '../common-strip/common-strip.model';\r\nimport { NsContentStripMultiple } from '../../_models/content-strip-multiple.model';\r\n\r\n@Component({\r\n selector: 'sb-uic-horizontal-scroller-v2',\r\n templateUrl: './horizontal-scroller-v2.component.html',\r\n styleUrls: ['./horizontal-scroller-v2.component.scss'],\r\n})\r\n\r\nexport class HorizontalScrollerV2Component implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() loadStatus: TFetchStatus = 'fetching';\r\n @Input() id: string = '';\r\n @Input() onHover = false;\r\n @Input() sliderConfig: any = {\r\n showNavs: true,\r\n showDots: true,\r\n cerificateCardMargin: false,\r\n };\r\n @Output() loadNext = new EventEmitter();\r\n @Input() widgetsLength: any;\r\n @Input() defaultMaxWidgets: any;\r\n @Input() stripConfig: any;\r\n @ViewChild('horizontalScrollElem', { static: true })\r\n horizontalScrollElem: ElementRef | null = null;\r\n\r\n enablePrev = false;\r\n enableNext = false;\r\n activeNav = 0;\r\n cardSubType = 'standard';\r\n bottomDotsArray: any = [];\r\n private scrollObserver: Subscription | null = null;\r\n isMobile = false\r\n private defaultMenuSubscribe: Subscription | null = null\r\n isLtMedium$ = this.valueSvc.isLtMedium$\r\n\r\n constructor(private valueSvc: ValueService) { }\r\n\r\n ngOnInit() {\r\n this.cardSubType = this.stripConfig && this.stripConfig.cardSubType ? this.stripConfig.cardSubType : 'standard';\r\n if (this.horizontalScrollElem) {\r\n const horizontalScrollElem = this.horizontalScrollElem;\r\n this.scrollObserver = fromEvent(\r\n horizontalScrollElem.nativeElement,\r\n 'scroll',\r\n )\r\n .pipe(debounceTime(100), throttleTime(100))\r\n .subscribe(_ => {\r\n this.updateNavigationBtnStatus(horizontalScrollElem\r\n .nativeElement as HTMLElement);\r\n });\r\n setTimeout(() => {\r\n this.getBottomDotsArray();\r\n }, 700);\r\n }\r\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\r\n this.isMobile = isLtMedium\r\n })\r\n }\r\n\r\n ngOnChanges() {\r\n timer(100).subscribe(() => {\r\n if (this.horizontalScrollElem) {\r\n this.updateNavigationBtnStatus(this.horizontalScrollElem\r\n .nativeElement as HTMLElement);\r\n }\r\n });\r\n setTimeout(() => {\r\n this.getBottomDotsArray();\r\n }, 700);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.scrollObserver) {\r\n this.scrollObserver.unsubscribe();\r\n }\r\n if (this.defaultMenuSubscribe) {\r\n this.defaultMenuSubscribe.unsubscribe()\r\n }\r\n }\r\n\r\n showPrev() {\r\n // const elem = this.horizontalScrollElem.nativeElement\r\n // elem.scrollLeft -= 0.20 * elem.clientWidth\r\n if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\r\n behavior: 'smooth',\r\n });\r\n \r\n const elem = this.horizontalScrollElem.nativeElement\r\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\r\n this.activeNav -= 1;\r\n } else {\r\n if(this.sliderConfig.arrowsAlwaysOn) {\r\n if(this.horizontalScrollElem.nativeElement.scrollLeft === 0){\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: elem.scrollWidth,\r\n behavior: 'smooth',\r\n });\r\n this.activeNav = this.bottomDotsArray.length - 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n showNext() {\r\n // const elem = this.horizontalScrollElem.nativeElement\r\n // elem.scrollLeft += 0.20 * elem.clientWidth\r\n if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\r\n behavior: 'smooth',\r\n });\r\n const elem = this.horizontalScrollElem.nativeElement\r\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\r\n this.activeNav += 1;\r\n } else {\r\n if(this.sliderConfig.arrowsAlwaysOn) {\r\n if(this.horizontalScrollElem.nativeElement.scrollLeft !== 0 && elem.clientWidth + elem.scrollLeft >= elem.scrollWidth ){\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n this.activeNav = 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private updateNavigationBtnStatus(elem: HTMLElement) {\r\n this.enablePrev = true;\r\n this.enableNext = true;\r\n if (elem.scrollLeft === 0) {\r\n if(!this.sliderConfig.arrowsAlwaysOn) {\r\n this.enablePrev = false;\r\n }\r\n this.activeNav = 0;\r\n }\r\n // if (elem.scrollWidth === Math.round(elem.clientWidth + elem.scrollLeft)) {\r\n // if (this.loadStatus === 'hasMore') {\r\n // this.loadNext.emit();\r\n // } else {\r\n // if(!this.sliderConfig.arrowsAlwaysOn) {\r\n // this.enableNext = false;\r\n // }\r\n // if (this.bottomDotsArray.length) {\r\n // this.activeNav = this.bottomDotsArray.length - 1;\r\n // }\r\n // }\r\n // }\r\n // if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\r\n // this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth);\r\n // }\r\n\r\n\r\n const widthDiff = Math.abs(elem.scrollWidth - Math.round(elem.clientWidth + elem.scrollLeft))\r\n if (widthDiff === 0 || widthDiff === 1) {\r\n if (this.loadStatus === 'hasMore') {\r\n this.loadNext.emit()\r\n } else {\r\n this.enableNext = false\r\n if (this.bottomDotsArray.length) {\r\n this.activeNav = this.bottomDotsArray.length - 1\r\n }\r\n }\r\n }\r\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\r\n this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth)\r\n }\r\n }\r\n\r\n slideTo(ele: any) {\r\n const diff = ele - this.activeNav;\r\n // if (ele > this.activeNav && ele !== this.activeNav) {\r\n // if (this.horizontalScrollElem) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\r\n // this.horizontalScrollElem.nativeElement.scrollTo({\r\n // left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth*diff),\r\n // behavior: 'smooth',\r\n // })\r\n // }\r\n // this.activeNav = ele\r\n // } else {\r\n // if (this.horizontalScrollElem && ele >= 0 && ele !== this.activeNav) {\r\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\r\n // this.horizontalScrollElem.nativeElement.scrollTo({\r\n // left: this.horizontalScrollElem.nativeElement.scrollLeft - (clientWidth*diff),\r\n // behavior: 'smooth',\r\n // })\r\n // }\r\n // this.activeNav = ele\r\n // }\r\n if (this.horizontalScrollElem) {\r\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\r\n this.horizontalScrollElem.nativeElement.scrollTo({\r\n left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth * diff),\r\n behavior: 'smooth',\r\n });\r\n }\r\n this.activeNav = ele;\r\n }\r\n\r\n getBottomDotsArray() {\r\n if (this.horizontalScrollElem) {\r\n this.bottomDotsArray = [];\r\n let cardWidth;\r\n let arrLength;\r\n if (this.cardSubType !== 'card-wide-v2') {\r\n cardWidth = this.cardSubType === 'standard' ? 245 :\r\n ((document.getElementsByClassName(this.cardSubType) &&\r\n document.getElementsByClassName(this.cardSubType)[0] !== undefined)\r\n ? document.getElementsByClassName(this.cardSubType)[0].clientWidth : 245);\r\n if (document.getElementById(`${this.id}`)) {\r\n const scrollerWidth = document.getElementById(`${this.id}`).clientWidth;\r\n const totalCardsLength = cardWidth * this.widgetsLength;\r\n if (totalCardsLength > scrollerWidth) {\r\n arrLength = Math.round(scrollerWidth / cardWidth);\r\n this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?\r\n this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets;\r\n arrLength = this.defaultMaxWidgets / arrLength;\r\n for (let i = 0; i < arrLength; i += 1) {\r\n this.bottomDotsArray.push(i);\r\n }\r\n }\r\n }\r\n } else {\r\n setTimeout(() => {\r\n this.bottomDotsArray = []\r\n arrLength = document.getElementsByClassName(this.cardSubType).length;\r\n for (let i = 0; i < arrLength; i += 1) {\r\n this.bottomDotsArray.push(i);\r\n }\r\n }, 1000);\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HorizontalScrollerV2Component } from './horizontal-scroller-v2.component';\r\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material';\r\n\r\n@NgModule({\r\n declarations: [HorizontalScrollerV2Component],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n exports: [HorizontalScrollerV2Component],\r\n})\r\nexport class HorizontalScrollerV2Module { }\r\n","export namespace NsContent {\r\n export interface IContinueLearningData extends IContent {\r\n continueData: any;\r\n }\r\n\r\n export interface IContinueLearningDataReq {\r\n request: {\r\n userId: string | undefined,\r\n courseId: string,\r\n contentIds: string[],\r\n batchId: string | undefined | null\r\n fields?: string[]\r\n };\r\n }\r\n\r\n export interface IContent {\r\n platform?: any;\r\n addedOn: string;\r\n appIcon: string;\r\n artifactUrl: string;\r\n averageRating?: any;\r\n // this will be used to content form enrollment user list\r\n batches?: any;\r\n batch?: any;\r\n body?: string;\r\n certificationList?: IRelatedContentMeta[];\r\n certificationStatus?: TCertificationStatus;\r\n certificationSubmissionDate?: string;\r\n certificationUrl: string;\r\n childNodes?: string[];\r\n children: IContent[];\r\n childrenClassifiers?: string[];\r\n clients?: IClient[];\r\n collections?: IContent[];\r\n completionPercentage?: number | null;\r\n completionStatus?: number;\r\n difficultyLevel: string;\r\n contentId: string;\r\n contentType: EContentTypes;\r\n contentUrlAtSource: string;\r\n creatorContacts: ICreator[];\r\n\r\n creatorDetails: ICreator[];\r\n creatorLogo: string;\r\n creatorPosterImage: string;\r\n creatorThumbnail: string;\r\n\r\n curatedTags: string[];\r\n description: string;\r\n displayContentType: EDisplayContentTypes; // For UI\r\n downloadUrl?: string;\r\n duration: number;\r\n enrolledDate?: string;\r\n exclusiveContent?: boolean;\r\n expiryDate?: string;\r\n equivalentCertifications?: IRelatedContentMeta[];\r\n hasAccess: boolean;\r\n hasAssessment?: string;\r\n idealScreenSize?: string;\r\n identifier: string;\r\n introductoryVideo?: string;\r\n introductoryVideoIcon?: string;\r\n learningTrack?: string;\r\n isExternal: boolean;\r\n isIframeSupported: 'Yes' | 'No' | 'Maybe';\r\n isInIntranet?: boolean;\r\n keywords?: string[];\r\n kArtifacts?: IRelatedContentMeta[];\r\n lastContentAccessTime?: string;\r\n lastUpdatedOn: string;\r\n learningMode?: TLearningMode;\r\n learningObjective: string;\r\n labels?: string[];\r\n locale?: string;\r\n hasTranslations?: { identifier: string; locale: string }[];\r\n isTranslationOf?: { identifier: string; locale: string }[];\r\n me_totalSessionsCount: number;\r\n mediaType: string;\r\n mimeType: EMimeTypes;\r\n msArtifactDetails?: IMSArtifactDetails;\r\n mode?: ETagType;\r\n name: string;\r\n nextCertificationAttemptDate?: string;\r\n playgroundInstructions?: string;\r\n playgroundResources?: IResourcePlayground[];\r\n postContents?: IPrePostContent[];\r\n posterImage?: string;\r\n preContents?: IPrePostContent[];\r\n preRequisites: string;\r\n price?: {\r\n currency: string\r\n value: number\r\n };\r\n primaryCategory: EPrimaryCategory;\r\n proctorUrl?: string;\r\n progress?: IMarkAsCompleteProgress;\r\n publishedOn: string;\r\n recentCertificationAttemptScore?: number;\r\n recommendationReasons?: string[];\r\n region?: string[];\r\n registrationUrl?: string;\r\n registrationInstructions?: string;\r\n resourceCategory?: string[];\r\n resourceType: string;\r\n size?: number;\r\n skills: ISkill[];\r\n softwareRequirements?: IResourceDetail[];\r\n sourceName: string;\r\n sourceShortName: string;\r\n sourceIconUrl?: string;\r\n sourceUrl?: string;\r\n ssoEnabled?: boolean;\r\n lastReadContentId?: string;\r\n status:\r\n | 'Draft'\r\n | 'InReview'\r\n | 'QualityReview'\r\n | 'Reviewed'\r\n | 'Processing'\r\n | 'Live'\r\n | 'Deleted'\r\n | 'MarkedForDeletion'\r\n | 'Expired';\r\n subTitle?: string;\r\n subTitles?: ISubtitle[];\r\n studyMaterials?: IRelatedContentMeta[];\r\n systemRequirements?: string[];\r\n tags: ITag[];\r\n topics: IContentTopic[];\r\n totalLikes?: { [key: string]: number };\r\n totalRating?: number;\r\n track: ITrack[];\r\n uniqueLearners?: number;\r\n viewCount?: { [key: string]: number };\r\n reason?: string; // required for Knowledge board\r\n trainingLHubCount?: number; // for LHub trainings\r\n verifiers?: {\r\n // required for External Certifications\r\n name: string\r\n email: string\r\n id: string\r\n }[];\r\n references?: { url: string; title: string }[];\r\n resumePage?: number; // For player WebModule in UI\r\n [key: string]: any;\r\n optionalReading: boolean;\r\n additionalTags?: string[];\r\n }\r\n\r\n export interface IContentResponse {\r\n id: string;\r\n params: any;\r\n responseCode: string;\r\n result: {\r\n content: IContent\r\n };\r\n ts: string;\r\n ver: string;\r\n }\r\n\r\n export interface IBatch {\r\n batchId: string;\r\n createdBy: string;\r\n endDate: string | null;\r\n enrollmentType: string;\r\n identifier: string;\r\n name: string;\r\n startDate: string;\r\n status: number;\r\n cert_templates?: null;\r\n collectionId: string;\r\n courseId: string;\r\n createdDate: string;\r\n createdFor: string[];\r\n description?: null;\r\n enrollmentEndDate: string | null;\r\n id: string;\r\n mentors?: string[] | null;\r\n tandc?: null;\r\n updatedDate?: string | null;\r\n }\r\n\r\n export interface IBatchListResponse {\r\n content?: IBatch[];\r\n count?: number;\r\n enrolled?: boolean;\r\n workFlow?: {\r\n wfInitiated?: boolean\r\n batch?: any\r\n wfItem?: any\r\n };\r\n }\r\n\r\n export interface ICourse {\r\n active: true;\r\n addedBy: string;\r\n batch: IBatch;\r\n batchId: string;\r\n certificates: [];\r\n collectionId: string;\r\n completedOn: string | null;\r\n completionPercentage: number | null;\r\n completionStatus?: number;\r\n content: IContent;\r\n contentId: string;\r\n contentStatus: any;\r\n courseId: string;\r\n courseLogoUrl: string;\r\n courseName: string;\r\n dateTime: number;\r\n description: string;\r\n enrolledDate: string;\r\n issuedCertificates: [];\r\n lastContentAccessTime?: string;\r\n lastReadContentId?: string;\r\n lastReadContentStatus: string | null;\r\n leafNodesCount: number;\r\n progress: number;\r\n status: number;\r\n userId: string;\r\n }\r\n\r\n export interface IContentMinimal {\r\n appIcon: string;\r\n artifactUrl: string;\r\n difficultyLevel: string;\r\n contentType: EContentTypes;\r\n description: string;\r\n displayContentType?: EDisplayContentTypes;\r\n duration: number;\r\n identifier: string;\r\n hasAccess?: boolean;\r\n isInIntranet?: boolean;\r\n learningMode?: TLearningMode;\r\n mimeType: EMimeTypes;\r\n name: string;\r\n creatorDetails: ICreator[];\r\n creatorContacts: ICreator[];\r\n posterImage: string;\r\n primaryCategory: EPrimaryCategory;\r\n resourceType?: string;\r\n totalRating?: number;\r\n }\r\n\r\n export interface ICollectionHierarchyResponse {\r\n data: IContent;\r\n hasMore: boolean;\r\n totalContents: number;\r\n }\r\n\r\n export interface IRelatedContentMeta {\r\n identifier: string;\r\n name: string;\r\n }\r\n\r\n type TCertificationStatus = 'ongoing' | 'passed' | 'canAttempt' | 'cannotAttempt';\r\n export type TLearningMode = 'Self-Paced' | 'Instructor-Led' | 'Open' | 'Closed';\r\n\r\n interface IMarkAsCompleteProgress {\r\n progressStatus: 'open' | 'started' | 'completed';\r\n showMarkAsComplete: boolean;\r\n markAsCompleteReason: string;\r\n progressSupported: boolean;\r\n progress: number | null;\r\n }\r\n\r\n interface ITag {\r\n id: string;\r\n type: string;\r\n value: string;\r\n }\r\n interface IMSArtifactDetails {\r\n channelId: string;\r\n videoId: string;\r\n }\r\n interface IClient {\r\n displayName: string;\r\n id: string;\r\n name: string;\r\n }\r\n interface ISubtitle {\r\n srclang: string;\r\n label: string;\r\n url: string;\r\n }\r\n interface IPrePostContent {\r\n identifier: string;\r\n name: string;\r\n }\r\n interface IResourceDetail {\r\n title?: string;\r\n url?: string;\r\n }\r\n interface IResourcePlayground {\r\n appIcon: string;\r\n artifactUrl: string;\r\n identifier: string;\r\n name: string;\r\n }\r\n interface ITrack {\r\n id: string;\r\n name: string;\r\n status: string;\r\n visibility: string;\r\n }\r\n interface ISkill {\r\n id: string;\r\n category: string;\r\n skill: string;\r\n name: string;\r\n }\r\n export interface ICreator {\r\n id: string;\r\n name: string;\r\n email: string;\r\n }\r\n export interface IContentTopic {\r\n identifier: string;\r\n name: string;\r\n }\r\n // API Based\r\n\r\n export interface IContact {\r\n id: string;\r\n name: string;\r\n email: string;\r\n }\r\n\r\n export interface IViewerContinueLearningRequest {\r\n resourceId: string;\r\n contextPathId: string;\r\n data: string;\r\n dateAccessed: number;\r\n contextType?: string;\r\n }\r\n /**\r\n * @deprecated Enum EContentTypes should not be used in future\r\n */\r\n export enum EContentTypes {\r\n PROGRAMV2 = 'Program',\r\n PROGRAM = 'Learning Path',\r\n CHANNEL = 'Channel',\r\n COURSE = 'Course',\r\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n MODULE = 'CourseUnit',\r\n RESOURCE = 'Resource',\r\n }\r\n export enum EPrimaryCategory {\r\n PROGRAM = 'Program',\r\n COURSE = 'Course',\r\n MODULE = 'Course Unit',\r\n RESOURCE = 'Learning Resource',\r\n GOALS = 'GOALS',\r\n PLAYLIST = 'PLAYLIST',\r\n PRACTICE_RESOURCE = 'Practice Question Set',\r\n FINAL_ASSESSMENT = 'Course Assessment',\r\n COMP_ASSESSMENT = 'Competency Assessment',\r\n FTB_QUESTION = 'FTB Question',\r\n MTF_QUESTION = 'MTF Question',\r\n MULTIPLE_CHOICE_QUESTION = 'Multiple Choice Question',\r\n SINGLE_CHOICE_QUESTION = 'Single Choice Question',\r\n MANDATORY_COURSE_GOAL = 'Mandatory Course Goal',\r\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\r\n BLENDED_PROGRAM = 'Blended Program',\r\n OFFLINE_SESSION = 'Offline Session',\r\n CURATED_PROGRAM = 'Curated Program',\r\n // following will not be available soon\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n /**\r\n * @deprecated The type should not be used\r\n */\r\n CHANNEL = 'Channel',\r\n }\r\n\r\n export enum ECourseCategory {\r\n INVITE_ONLY_PROGRAM = 'Invite-Only Program',\r\n MODERATED_PROGRAM = 'Moderated Program',\r\n BLENDED_PROGRAM = 'Blended Program',\r\n CURATED_PROGRAM = 'Curated Program',\r\n COURSE = 'Course',\r\n MODERATED_COURSE = 'Moderated Course',\r\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\r\n MODERATED_ASSESSEMENT = 'Moderated Assessment',\r\n }\r\n\r\n export enum WFBlendedProgramStatus {\r\n INITIATE = 'INITIATE',\r\n SEND_FOR_MDO_APPROVAL = 'SEND_FOR_MDO_APPROVAL',\r\n SEND_FOR_PC_APPROVAL = 'SEND_FOR_PC_APPROVAL',\r\n APPROVED = 'APPROVED',\r\n REJECTED = 'REJECTED',\r\n WITHDRAWN = 'WITHDRAWN',\r\n REMOVED = 'REMOVED',\r\n WITHDRAW = 'WITHDRAW',\r\n }\r\n export enum WFBlendedProgramApprovalTypes {\r\n ONE_STEP_PC = 'oneStepPCApproval',\r\n ONE_STEP_MDO = 'oneStepMDOApproval',\r\n TWO_STEP_MDO_PC = 'twoStepMDOAndPCApproval',\r\n TWO_STEP_PC_MDO = 'twoStepPCAndMDOApproval',\r\n }\r\n\r\n export const WFSTATUS_MSG_MAPPING: any = {\r\n INITIATE: '',\r\n SEND_FOR_MDO_APPROVAL: 'BatchEnrollL1Msg',\r\n SEND_FOR_PC_APPROVAL: 'BatchEnrollL2Msg',\r\n APPROVED: 'BatchEnrollApprovedMsg',\r\n REJECTED: 'BatchEnrollRejectedMsg',\r\n WITHDRAWN: 'BatchEnrollWithdrawMsg',\r\n REMOVED: 'BatchEnrollRemoveMsg',\r\n EXPIRED: 'BatchListExpiredMsg',\r\n };\r\n\r\n export enum EResourcePrimaryCategories {\r\n LEARNING_RESOURCE = 'Learning Resource',\r\n PRACTICE_RESOURCE = 'Practice Question Set',\r\n FINAL_ASSESSMENT = 'Course Assessment',\r\n COMP_ASSESSMENT = 'Competency Assessment',\r\n OFFLINE_SESSION = 'Offline Session',\r\n }\r\n\r\n export enum EMiscPlayerSupportedCollectionTypes {\r\n PLAYLIST = 'Playlist',\r\n }\r\n export const PLAYER_SUPPORTED_COLLECTION_TYPES: string[] = [\r\n EPrimaryCategory.COURSE,\r\n EPrimaryCategory.MODULE,\r\n EPrimaryCategory.PROGRAM,\r\n EPrimaryCategory.CURATED_PROGRAM,\r\n EPrimaryCategory.BLENDED_PROGRAM,\r\n EPrimaryCategory.STANDALONE_ASSESSMENT,\r\n EMiscPlayerSupportedCollectionTypes.PLAYLIST,\r\n ];\r\n export const KB_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\r\n EPrimaryCategory.COURSE,\r\n EPrimaryCategory.MODULE,\r\n EPrimaryCategory.PROGRAM,\r\n EPrimaryCategory.RESOURCE,\r\n ];\r\n export const PLAYLIST_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\r\n EPrimaryCategory.COURSE,\r\n EPrimaryCategory.MODULE,\r\n EPrimaryCategory.PROGRAM,\r\n EPrimaryCategory.RESOURCE,\r\n ];\r\n export enum EMimeTypes {\r\n COLLECTION = 'application/vnd.ekstep.content-collection',\r\n ZIP = 'application/vnd.ekstep.html-archive',\r\n ZIP2 = 'application/vnd.ekstep.ecml-archive',\r\n HTML = 'application/html',\r\n HTML_TEXT = 'text/html',\r\n ILP_FP = 'application/ilpfp',\r\n IAP = 'application/iap-assessment',\r\n M4A = 'audio/m4a',\r\n MP3 = 'audio/mpeg',\r\n MP4 = 'video/mp4',\r\n M3U8 = 'application/x-mpegURL',\r\n INTERACTION = 'video/interactive',\r\n PDF = 'application/pdf',\r\n QUIZ = 'application/quiz',\r\n DRAG_DROP = 'application/drag-drop',\r\n HTML_PICKER = 'application/htmlpicker',\r\n WEB_MODULE = 'application/web-module',\r\n WEB_MODULE_EXERCISE = 'application/web-module-exercise',\r\n YOUTUBE = 'video/x-youtube',\r\n HANDS_ON = 'application/integrated-hands-on',\r\n RDBMS_HANDS_ON = 'application/rdbms',\r\n CLASS_DIAGRAM = 'application/class-diagram',\r\n CHANNEL = 'application/channel',\r\n COLLECTION_RESOURCE = 'resource/collection',\r\n APPLICATION_JSON = 'application/json',\r\n PRACTICE_RESOURCE = 'application/vnd.sunbird.questionset',\r\n FINAL_ASSESSMENT = 'application/vnd.sunbird.questionset',\r\n OFFLINE_SESSION = 'application/offline',\r\n // Added on UI Only\r\n CERTIFICATION = 'application/certification',\r\n PLAYLIST = 'application/playlist',\r\n TEXT_WEB = 'text/x-url',\r\n SURVEY = 'application/survey',\r\n QUESTION_SET = 'application/vnd.sunbird.questionset',\r\n QUESTION = 'application/vnd.sunbird.question',\r\n UNKNOWN = 'application/unknown',\r\n }\r\n export enum EDisplayContentTypes {\r\n ASSESSMENT = 'ASSESSMENT',\r\n STANDALONE_ASSESSMENT = 'STANDALONE ASSESSMENT',\r\n PRACTICE_RESOURCE = 'Practice Question Set',\r\n FINAL_ASSESSMENT = 'Course Assessment',\r\n AUDIO = 'AUDIO',\r\n CERTIFICATION = 'CERTIFICATION',\r\n CHANNEL = 'Channel',\r\n CLASS_DIAGRAM = 'CLASS_DIAGRAM',\r\n COURSE = 'COURSE',\r\n DEFAULT = 'DEFAULT',\r\n DRAG_DROP = 'DRAG_DROP',\r\n EXTERNAL_CERTIFICATION = 'EXTERNAL_CERTIFICATION',\r\n EXTERNAL_COURSE = 'EXTERNAL_COURSE',\r\n GOALS = 'GOALS',\r\n HANDS_ON = 'HANDS_ON',\r\n IAP = 'IAP',\r\n INSTRUCTOR_LED = 'INSTRUCTOR_LED',\r\n INTERACTIVE_VIDEO = 'INTERACTIVE_VIDEO',\r\n KNOWLEDGE_ARTIFACT = 'KNOWLEDGE_ARTIFACT',\r\n MODULE = 'MODULE',\r\n PDF = 'PDF',\r\n SURVEY = 'SURVEY',\r\n PLAYLIST = 'PLAYLIST',\r\n PROGRAM = 'PROGRAM',\r\n QUIZ = 'QUIZ',\r\n RESOURCE = 'RESOURCE',\r\n RDBMS_HANDS_ON = 'RDBMS_HANDS_ON',\r\n VIDEO = 'VIDEO',\r\n WEB_MODULE = 'WEB_MODULE',\r\n WEB_PAGE = 'WEB_PAGE',\r\n YOUTUBE = 'YOUTUBE',\r\n LINK = 'LINK',\r\n KNOWLEDGE_BOARD = 'Knowledge Board',\r\n LEARNING_JOURNEY = 'Learning Journeys',\r\n BLENDED_PROGRAM = 'BLENDED PROGRAM',\r\n CURATED_PROGRAM = 'CURATED PROGRAM',\r\n }\r\n // for UI\r\n export enum EFilterCategory {\r\n ALL = 'ALL',\r\n LEARN = 'LEARN',\r\n PRACTICE = 'PRACTICE',\r\n ASSESS = 'ASSESS',\r\n }\r\n\r\n // for UI\r\n export enum ETagType {\r\n NEWLY_ADDED = 'NEWLY ADDED',\r\n }\r\n\r\n export const UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS: string[] = [\r\n // this is comment now for enabling links in the toc page for enrolled users\r\n // EMimeTypes.QUIZ,\r\n // EMimeTypes.APPLICATION_JSON,\r\n // EMimeTypes.WEB_MODULE_EXERCISE,\r\n\r\n ];\r\n export const PUBLIC_SUPPORTED_CONTENT_TYPES: EMimeTypes[] = [\r\n EMimeTypes.APPLICATION_JSON,\r\n EMimeTypes.FINAL_ASSESSMENT,\r\n EMimeTypes.HTML,\r\n EMimeTypes.HTML_TEXT,\r\n EMimeTypes.ZIP,\r\n EMimeTypes.ZIP2,\r\n EMimeTypes.M4A,\r\n EMimeTypes.MP3,\r\n EMimeTypes.MP4,\r\n EMimeTypes.PDF,\r\n EMimeTypes.YOUTUBE,\r\n EMimeTypes.TEXT_WEB,\r\n EMimeTypes.SURVEY,\r\n ];\r\n}\r\n","import { NsContent } from '../_models/widget-content.model';\r\n\r\nexport const VIEWER_ROUTE_FROM_MIME = (mimeType: NsContent.EMimeTypes) => {\r\n switch (mimeType) {\r\n case NsContent.EMimeTypes.MP3:\r\n return 'audio';\r\n case NsContent.EMimeTypes.M4A:\r\n return 'audio-native';\r\n case NsContent.EMimeTypes.COLLECTION:\r\n return 'html';\r\n case NsContent.EMimeTypes.CHANNEL:\r\n // case 'application/json' as any:\r\n // return 'channel'\r\n case NsContent.EMimeTypes.CERTIFICATION:\r\n return 'certification';\r\n case NsContent.EMimeTypes.HTML_TEXT:\r\n case NsContent.EMimeTypes.HTML:\r\n case NsContent.EMimeTypes.ZIP:\r\n if (window.location.href.includes('mobile/html')) {\r\n return 'mobile/html';\r\n }\r\n return 'html';\r\n case NsContent.EMimeTypes.TEXT_WEB:\r\n return 'youtube';\r\n case NsContent.EMimeTypes.SURVEY:\r\n return 'survey';\r\n case NsContent.EMimeTypes.IAP:\r\n return 'iap';\r\n case NsContent.EMimeTypes.ILP_FP:\r\n return 'ilp-fp';\r\n case NsContent.EMimeTypes.PDF:\r\n return 'pdf';\r\n case NsContent.EMimeTypes.MP4:\r\n case NsContent.EMimeTypes.M3U8:\r\n return 'video';\r\n case NsContent.EMimeTypes.YOUTUBE:\r\n return 'youtube';\r\n // return 'html'\r\n case NsContent.EMimeTypes.WEB_MODULE:\r\n return 'web-module';\r\n case NsContent.EMimeTypes.WEB_MODULE_EXERCISE:\r\n return 'web-module';\r\n case NsContent.EMimeTypes.CLASS_DIAGRAM:\r\n return 'class-diagram';\r\n case NsContent.EMimeTypes.HANDS_ON:\r\n return 'hands-on';\r\n case NsContent.EMimeTypes.RDBMS_HANDS_ON:\r\n return 'rdbms-hands-on';\r\n case NsContent.EMimeTypes.HTML_PICKER:\r\n return 'html-picker';\r\n case NsContent.EMimeTypes.QUIZ:\r\n case NsContent.EMimeTypes.APPLICATION_JSON:\r\n return 'quiz';\r\n case NsContent.EMimeTypes.PRACTICE_RESOURCE:\r\n return 'practice';\r\n case NsContent.EMimeTypes.COLLECTION_RESOURCE:\r\n return 'resource-collection';\r\n case NsContent.EMimeTypes.OFFLINE_SESSION:\r\n return 'offline-session';\r\n default:\r\n return 'html';\r\n }\r\n};\r\n\r\nexport function viewerRouteGenerator(\r\n id: string,\r\n mimeType: NsContent.EMimeTypes,\r\n collectionId?: string,\r\n collectionType?: string,\r\n forPreview = false,\r\n primaryCategory?: string,\r\n batchId?: string,\r\n courseName?: string,\r\n): { url: string; queryParams: { [key: string]: any } } {\r\n let collId = collectionId;\r\n let collType = collectionType;\r\n if (collType && !NsContent.PLAYER_SUPPORTED_COLLECTION_TYPES.includes(collType)) {\r\n collId = undefined;\r\n collType = undefined;\r\n }\r\n const url = `/viewer/${VIEWER_ROUTE_FROM_MIME(mimeType)}/${id}`;\r\n // tslint:disable-next-line\r\n // console.log(url,'========>Route from MIME TYPE<==========')\r\n const forcreator = window.location.href.includes('editMode=true');\r\n let queryParams = {};\r\n if (primaryCategory) {\r\n queryParams = {\r\n primaryCategory,\r\n };\r\n }\r\n if (collectionId && collectionType) {\r\n queryParams = { ...queryParams, collectionId: collId, collectionType: collType };\r\n }\r\n if (batchId) {\r\n queryParams = { ...queryParams, batchId };\r\n }\r\n if (courseName) {\r\n queryParams = { ...queryParams, courseName };\r\n }\r\n if (forPreview) {\r\n queryParams = { ...queryParams, preview: true };\r\n }\r\n if (forcreator) {\r\n queryParams = { ...queryParams, editMode: true };\r\n }\r\n return {\r\n queryParams,\r\n url,\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ConfigurationsService } from '@sunbird-cb/utils-v2';\r\nimport { Observable, of, EMPTY, BehaviorSubject, Subject } from 'rxjs';\r\nimport { catchError, retry, map, shareReplay } from 'rxjs/operators';\r\nimport { NsContentStripMultiple } from '../_models/content-strip-multiple.model';\r\nimport { NsContent } from '../_models/widget-content.model';\r\nimport { NSSearch } from '../_models/widget-search.model';\r\n// tslint:disable\r\nimport * as _ from 'lodash'\r\nimport { viewerRouteGenerator } from './viewer-route-util'\r\nimport * as moment_ from 'moment';\r\nconst moment = moment_;\r\n// tslint:enable\r\n\r\n// TODO: move this in some common place\r\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\r\n\r\nconst API_END_POINTS = {\r\n CONTENT: `${PROTECTED_SLAG_V8}/content`,\r\n AUTHORING_CONTENT: `/api/course/v1/hierarchy`,\r\n CONTENT_LIKES: `${PROTECTED_SLAG_V8}/content/likeCount`,\r\n SET_S3_COOKIE: `${PROTECTED_SLAG_V8}/content/setCookie`,\r\n SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8}/content/setImageCookie`,\r\n FETCH_MANIFEST: `${PROTECTED_SLAG_V8}/content/getWebModuleManifest`,\r\n FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8}/content/getWebModuleFiles`,\r\n MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8}/content/multiple`,\r\n CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8}/content/searchV5`,\r\n CONTENT_SEARCH_V6: `/apis/proxies/v8/sunbirdigot/search`,\r\n TRENDING_CONTENT_SEARCH: `apis/proxies/v8/trending/content/search`,\r\n CONTENT_SEARCH_RELATED_CBP_V6: `/apis/proxies/v8/sunbirdigot/search`,\r\n CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8}/content/searchRegionRecommendation`,\r\n CONTENT_HISTORY: `${PROTECTED_SLAG_V8}/user/history`,\r\n CONTENT_HISTORYV2: `/apis/proxies/v8/read/content-progres`,\r\n COURSE_BATCH_LIST: `/apis/proxies/v8/learner/course/v1/batch/list`,\r\n COURSE_BATCH: `/apis/proxies/v8/course/v1/batch/read`,\r\n AUTO_ASSIGN_BATCH: `/apis/protected/v8/cohorts/user/autoenrollment/`,\r\n AUTO_ASSIGN_CURATED_BATCH: `/apis/proxies/v8/curatedprogram/v1/enrol`,\r\n AUTO_ASSIGN_OPEN_PROGRAM: `/apis/proxies/v8/openprogram/v1/enrol`,\r\n USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8}/user/history/continue`,\r\n CONTENT_RATING: `${PROTECTED_SLAG_V8}/user/rating`,\r\n COLLECTION_HIERARCHY: (type: string, id: string) =>\r\n `${PROTECTED_SLAG_V8}/content/collection/${type}/${id}`,\r\n REGISTRATION_STATUS: `${PROTECTED_SLAG_V8}/admin/userRegistration/checkUserRegistrationContent`,\r\n MARK_AS_COMPLETE_META: (contentId: string) => `${PROTECTED_SLAG_V8}/user/progress/${contentId}`,\r\n ENROLL_BATCH: `/apis/proxies/v8/learner/course/v1/enrol`,\r\n ENROLL_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/enrol`,\r\n WITHDRAW_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/unenrol`,\r\n BLENDED_USER_WF: `/apis/proxies/v8/workflow/blendedprogram/user/search`,\r\n BLENDED_USER_COUNT: `apis/proxies/v8/workflow/blendedprogram/enrol/status/count`,\r\n CERT_ADD_TEMPLATE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/template/add`,\r\n CERT_ISSUE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/issue`,\r\n CERT_DOWNLOAD: (certId: any) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,\r\n READ_KARMAPOINTS: `/apis/proxies/v8/karmapoints/read`,\r\n CONTENT_READ: (contentId: any) => `/apis/proxies/v8/action/content/v3/read/${contentId}`,\r\n READ_COURSE_KARMAPOINTS: '/apis/proxies/v8/karmapoints/user/course/read',\r\n CLAIM_KARMAPOINTS: '/apis/proxies/v8/claimkarmapoints',\r\n USER_KARMA_POINTS: '/apis/proxies/v8/user/totalkarmapoints',\r\n AGGREGATION_SEARCH: '/apis/proxies/v8/content/aggregation/search',\r\n FEATURE_SEARCH: '/apis/proxies/v8/featured/content/search',\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WidgetContentService {\r\n constructor(\r\n private http: HttpClient,\r\n private configSvc: ConfigurationsService,\r\n ) {\r\n }\r\n\r\n tocConfigData: any = new BehaviorSubject<any>({});\r\n tocConfigData$ = this.tocConfigData.asObservable();\r\n\r\n private telemetryData: any = new Subject<any>()\r\n public telemetryData$ = this.telemetryData.asObservable()\r\n currentMetaData!: NsContent.IContent;\r\n currentContentReadMetaData!: NsContent.IContent;\r\n currentBatchEnrollmentList!: NsContent.ICourse[];\r\n programChildCourseResumeData = new BehaviorSubject<any>({});\r\n programChildCourseResumeData$ = this.programChildCourseResumeData.asObservable();\r\n\r\n changeTelemetryData(message: string) {\r\n this.telemetryData.next(message);\r\n }\r\n isResource(primaryCategory: string) {\r\n if (primaryCategory) {\r\n const isResource = (primaryCategory === NsContent.EResourcePrimaryCategories.LEARNING_RESOURCE) ||\r\n (primaryCategory === NsContent.EResourcePrimaryCategories.PRACTICE_RESOURCE) ||\r\n (primaryCategory === NsContent.EResourcePrimaryCategories.FINAL_ASSESSMENT) ||\r\n (primaryCategory === NsContent.EResourcePrimaryCategories.COMP_ASSESSMENT) ||\r\n (primaryCategory === NsContent.EResourcePrimaryCategories.OFFLINE_SESSION);\r\n return isResource;\r\n }\r\n return false;\r\n }\r\n\r\n fetchMarkAsCompleteMeta(identifier: string): Promise<any> {\r\n // tslint:disable-next-line\r\n const url = API_END_POINTS.MARK_AS_COMPLETE_META(identifier)\r\n // return this.http.get(url).toPromise()\r\n if (url) { }\r\n return of().toPromise();\r\n }\r\n\r\n updateTocConfig(data: any) {\r\n this.tocConfigData.next(data);\r\n }\r\n\r\n fetchContent(\r\n contentId: string,\r\n hierarchyType: 'all' | 'minimal' | 'detail' = 'detail',\r\n _additionalFields: string[] = [],\r\n primaryCategory?: string | null,\r\n ): Observable<NsContent.IContent> {\r\n // const url = `${API_END_POINTS.CONTENT}/${contentId}?hierarchyType=${hierarchyType}`\r\n let url = '';\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\r\n if (primaryCategory && this.isResource(primaryCategory)) {\r\n if (!forPreview) {\r\n url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;\r\n } else {\r\n url = `/api/content/v1/read/${contentId}`;\r\n }\r\n } else {\r\n if (!forPreview) {\r\n url = `/apis/proxies/v8/action/content/v3/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\r\n } else {\r\n const forcreator = window.location.href.includes('editMode=true');\r\n if (forcreator) {\r\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\r\n } else {\r\n url = `/api/course/v1/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\r\n }\r\n }\r\n }\r\n // return this.http\r\n // .post<NsContent.IContent>(url, { additionalFields })\r\n // .pipe(retry(1))\r\n return this.http\r\n .get<NsContent.IContent>(url)\r\n .pipe(shareReplay(1));\r\n // if (apiData && apiData.result) {\r\n // return apiData.result.content\r\n // }\r\n }\r\n fetchAuthoringContent(contentId: string): Observable<NsContent.IContent> {\r\n const forcreator = window.location.href.includes('editMode=true');\r\n let url = '';\r\n if (forcreator) {\r\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\r\n } else {\r\n url = `${API_END_POINTS.AUTHORING_CONTENT}/${contentId}?hierarchyType=detail`;\r\n }\r\n return this.http.get<NsContent.IContent>(url).pipe(shareReplay(1), r => r);\r\n }\r\n fetchMultipleContent(ids: string[]): Observable<NsContent.IContent[]> {\r\n return this.http.get<NsContent.IContent[]>(\r\n `${API_END_POINTS.MULTIPLE_CONTENT}/${ids.join(',')}`,\r\n );\r\n }\r\n fetchCollectionHierarchy(type: string, id: string, pageNumber: number = 0, pageSize: number = 1) {\r\n return this.http.get<NsContent.ICollectionHierarchyResponse>(\r\n `${API_END_POINTS.COLLECTION_HIERARCHY(\r\n type,\r\n id,\r\n )}?pageNumber=${pageNumber}&pageSize=${pageSize}`,\r\n );\r\n }\r\n\r\n fetchBlendedCourse() {\r\n\r\n }\r\n\r\n fetchCourseBatches(req: any): Observable<NsContent.IBatchListResponse> {\r\n return this.http\r\n .post<NsContent.IBatchListResponse>(API_END_POINTS.COURSE_BATCH_LIST, req)\r\n .pipe(\r\n retry(1),\r\n map(\r\n (data: any) => data.result.response\r\n )\r\n );\r\n }\r\n\r\n // fetch individual batch\r\n fetchCourseBatch(batchId: string): Observable<NsContent.IContinueLearningData> {\r\n return this.http.get<NsContent.IContinueLearningData>(\r\n `${API_END_POINTS.COURSE_BATCH}/${batchId}`,\r\n );\r\n }\r\n\r\n autoAssignBatchApi(identifier: any): Observable<NsContent.IBatchListResponse> {\r\n return this.http.get<NsContent.IBatchListResponse>(`${API_END_POINTS.AUTO_ASSIGN_BATCH}${identifier}`)\r\n .pipe(\r\n retry(1),\r\n map(\r\n (data: any) => data.result.response\r\n )\r\n );\r\n }\r\n\r\n autoAssignCuratedBatchApi(request: any, programType: any): Observable<NsContent.IBatchListResponse> {\r\n const url = programType === NsContent.ECourseCategory.MODERATED_PROGRAM ?\r\n API_END_POINTS.AUTO_ASSIGN_OPEN_PROGRAM : API_END_POINTS.AUTO_ASSIGN_CURATED_BATCH;\r\n return this.http.post<NsContent.IBatchListResponse>(`${url}`, request)\r\n .pipe(\r\n retry(1),\r\n map(\r\n (data: any) => data.result.response\r\n )\r\n );\r\n }\r\n\r\n enrollUserToBatch(req: any) {\r\n return this.http\r\n .post(API_END_POINTS.ENROLL_BATCH, req)\r\n .toPromise();\r\n }\r\n\r\n enrollAndUnenrollUserToBatchWF(req: any, type: any) {\r\n const url: any = type === 'WITHDRAW' ? API_END_POINTS.WITHDRAW_BATCH_WF : API_END_POINTS.ENROLL_BATCH_WF;\r\n return this.http\r\n .post(url, req)\r\n .toPromise();\r\n }\r\n\r\n fetchBlendedUserWF(req: any) {\r\n return this.http\r\n .post(API_END_POINTS.BLENDED_USER_WF, req)\r\n .toPromise();\r\n }\r\n\r\n fetchBlendedUserCOUNT(req: any) {\r\n return this.http\r\n .post(API_END_POINTS.BLENDED_USER_COUNT, req)\r\n .toPromise();\r\n }\r\n\r\n fetchContentLikes(contentIds: { content_id: string[] }) {\r\n return this.http\r\n .post<{ [identifier: string]: number }>(API_END_POINTS.CONTENT_LIKES, contentIds)\r\n .toPromise();\r\n }\r\n fetchContentRatings(contentIds: { contentIds: string[] }) {\r\n if (contentIds) { }\r\n // return this.http\r\n // .post(`${API_END_POINTS.CONTENT_RATING}/rating`, contentIds)\r\n // .toPromise()\r\n return of().toPromise();\r\n }\r\n\r\n fetchContentHistory(contentId: string): Observable<NsContent.IContinueLearningData> {\r\n return this.http.get<NsContent.IContinueLearningData>(\r\n `${API_END_POINTS.CONTENT_HISTORY}/${contentId}`,\r\n );\r\n }\r\n\r\n fetchContentHistoryV2(req: NsContent.IContinueLearningDataReq): Observable<NsContent.IContinueLearningData> {\r\n req.request.fields = ['progressdetails'];\r\n const data = this.http.post<NsContent.IContinueLearningData>(\r\n `${API_END_POINTS.CONTENT_HISTORYV2}/${req.request.courseId}`, req\r\n );\r\n data.subscribe((subscribeData: any) => {\r\n this.programChildCourseResumeData.next({ resumeData: subscribeData.result.contentList, courseId: req.request.courseId });\r\n });\r\n return data;\r\n }\r\n\r\n async continueLearning(id: string, collectionId?: string, collectionType?: string): Promise<any> {\r\n return new Promise(async resolve => {\r\n if (collectionType &&\r\n collectionType.toLowerCase() === 'playlist') {\r\n const reqBody = {\r\n contextPathId: collectionId ? collectionId : id,\r\n resourceId: id,\r\n data: JSON.stringify({\r\n timestamp: Date.now(),\r\n contextFullPath: [collectionId, id],\r\n }),\r\n dateAccessed: Date.now(),\r\n contextType: 'playlist',\r\n };\r\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\r\n resolve(true);\r\n }\r\n );\r\n } else {\r\n const reqBody = {\r\n contextPathId: collectionId ? collectionId : id,\r\n resourceId: id,\r\n data: JSON.stringify({ timestamp: Date.now() }),\r\n dateAccessed: Date.now(),\r\n };\r\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\r\n resolve(true);\r\n });\r\n }\r\n });\r\n }\r\n saveContinueLearning(content: NsContent.IViewerContinueLearningRequest): Observable<any> {\r\n // const url = API_END_POINTS.USER_CONTINUE_LEARNING\r\n // return this.http.post<any>(url, content)\r\n if (content) {\r\n\r\n }\r\n return of() as any;\r\n }\r\n\r\n setS3Cookie(\r\n _contentId: string,\r\n // _path: string,\r\n ): Observable<any> {\r\n // return this.http\r\n // .post(API_END_POINTS.SET_S3_COOKIE, { contentId })\r\n // .pipe(catchError(_err => of(true)))\r\n\r\n return EMPTY;\r\n }\r\n\r\n setS3ImageCookie(): Observable<any> {\r\n return this.http.post(API_END_POINTS.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)));\r\n }\r\n\r\n fetchManifest(url: string): Observable<any> {\r\n return this.http.post(API_END_POINTS.FETCH_MANIFEST, { url });\r\n }\r\n fetchWebModuleContent(url: string): Observable<any> {\r\n return this.http.get(`${API_END_POINTS.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`);\r\n }\r\n search(req: NSSearch.ISearchRequest): Observable<NSSearch.ISearchApiResult> {\r\n req.query = req.query || '';\r\n return this.http.post<NSSearch.ISearchApiResult>(API_END_POINTS.CONTENT_SEARCH_V5, {\r\n request: req,\r\n });\r\n }\r\n searchRegionRecommendation(\r\n req: NSSearch.ISearchOrgRegionRecommendationRequest,\r\n ): Observable<NsContentStripMultiple.IContentStripResponseApi> {\r\n req.query = req.query || '';\r\n req.preLabelValue =\r\n (req.preLabelValue || '') +\r\n ((this.configSvc.userProfile && this.configSvc.userProfile.country) || '');\r\n req.filters = {\r\n ...req.filters,\r\n labels: [req.preLabelValue || ''],\r\n };\r\n return this.http.post<NsContentStripMultiple.IContentStripResponseApi>(\r\n API_END_POINTS.CONTENT_SEARCH_REGION_RECOMMENDATION,\r\n { request: req },\r\n );\r\n }\r\n searchV6(req: NSSearch.ISearchV6Request): Observable<NSSearch.ISearchV6ApiResultV2> {\r\n const apiPath = _.get(req, 'api.path');\r\n req.query = req.query || '';\r\n if (apiPath) {\r\n return this.http.get<NSSearch.ISearchV6ApiResultV2>(apiPath);\r\n }\r\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_V6, req);\r\n }\r\n\r\n searchRelatedCBPV6(req: NSSearch.ISearchV6RequestV2): Observable<NSSearch.ISearchV6ApiResultV2> {\r\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_RELATED_CBP_V6, req);\r\n }\r\n\r\n fetchContentRating(contentId: string): Observable<{ rating: number }> {\r\n return this.http.get<{ rating: number }>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\r\n }\r\n deleteContentRating(contentId: string): Observable<any> {\r\n return this.http.delete(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\r\n }\r\n addContentRating(contentId: string, data: { rating: number }): Observable<any> {\r\n return this.http.post<any>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`, data);\r\n }\r\n\r\n getFirstChildInHierarchy(content: NsContent.IContent): NsContent.IContent {\r\n if (!(content.children || []).length) {\r\n return content;\r\n }\r\n if (\r\n (content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM &&\r\n !(content.artifactUrl && content.artifactUrl.length)) ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.MANDATORY_COURSE_GOAL ||\r\n (content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM &&\r\n !(content.artifactUrl && content.artifactUrl.length)) ||\r\n (content.primaryCategory === NsContent.EPrimaryCategory.MODULE &&\r\n !(content.artifactUrl && content.artifactUrl.length))\r\n ) {\r\n const child = content.children[0];\r\n return this.getFirstChildInHierarchy(child);\r\n }\r\n if (\r\n content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\r\n content.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION\r\n ) {\r\n return content;\r\n }\r\n const firstChild = content.children[0];\r\n const resultContent = this.getFirstChildInHierarchy(firstChild);\r\n return resultContent;\r\n }\r\n\r\n getRegistrationStatus(source: string): Promise<{ hasAccess: boolean; registrationUrl?: string }> {\r\n return this.http.get<any>(`${API_END_POINTS.REGISTRATION_STATUS}/${source}`).toPromise();\r\n }\r\n\r\n fetchConfig(url: string) {\r\n return this.http.get<any>(url);\r\n }\r\n\r\n addCertTemplate(body: any) {\r\n return this.http.patch<any>(`${API_END_POINTS.CERT_ADD_TEMPLATE}`, body);\r\n }\r\n\r\n issueCert(body: any) {\r\n return this.http.post<any>(`${API_END_POINTS.CERT_ISSUE}`, body);\r\n }\r\n downloadCert(certId: any) {\r\n return this.http.get<any>(`${API_END_POINTS.CERT_DOWNLOAD(certId)}`);\r\n }\r\n\r\n trendingContentSearch(req: any): Observable<any> {\r\n req.query = req.query || '';\r\n return this.http.post<any>(API_END_POINTS.TRENDING_CONTENT_SEARCH, req);\r\n }\r\n\r\n getKarmaPoitns(limit: number, offset: any) {\r\n return this.http.post(API_END_POINTS.READ_KARMAPOINTS, { limit, offset }).pipe(catchError(_err => of(true)));\r\n }\r\n fetchProgramContent(contentId: string[]): Observable<NsContent.IContent[]> {\r\n let url = '';\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\r\n if (!forPreview) {\r\n return this.http.get<NsContent.IContent[]>(\r\n API_END_POINTS.CONTENT_READ(contentId),\r\n );\r\n }\r\n url = `/api/content/v1/read/${contentId}`;\r\n return this.http.get<NsContent.IContent[]>(url);\r\n // return this.http.get<NsContent.IContent[]>(API_END_POINTS.CONTENT_READ(contentId))\r\n }\r\n\r\n getCourseKarmaPoints(request: any) {\r\n return this.http.post<any>(API_END_POINTS.READ_COURSE_KARMAPOINTS, request);\r\n }\r\n\r\n claimKarmapoints(request: any) {\r\n return this.http.post<any>(API_END_POINTS.CLAIM_KARMAPOINTS, request);\r\n }\r\n\r\n userKarmaPoints() {\r\n return this.http.post<any>(API_END_POINTS.USER_KARMA_POINTS, {});\r\n }\r\n\r\n getEnrolledData(doId: string) {\r\n const enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}');\r\n const enrolledCourseData = enrollmentMapData[doId];\r\n return enrolledCourseData;\r\n }\r\n\r\n async getResourseLink(content: any) {\r\n const enrolledCourseData: any = this.getEnrolledData(content.identifier);\r\n if (enrolledCourseData) {\r\n if (enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.BLENDED_PROGRAM ||\r\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.INVITE_ONLY_PROGRAM ||\r\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.MODERATED_PROGRAM ||\r\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\r\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM) {\r\n if (!this.isBatchInProgress(enrolledCourseData.batch)) {\r\n return this.gotoTocPage(content);\r\n }\r\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\r\n return data;\r\n } {\r\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\r\n return data;\r\n }\r\n\r\n }\r\n return this.gotoTocPage(content);\r\n\r\n }\r\n async checkForDataToFormUrl(content: any, enrollData: any) {\r\n let urlData: any;\r\n if (enrollData.completionPercentage === 100) {\r\n return this.gotoTocPage(enrollData);\r\n }\r\n if (enrollData.lrcProgressDetails && enrollData.lrcProgressDetails.mimeType) {\r\n const modifyEnrollData = {\r\n ...enrollData,\r\n identifier: enrollData.collectionId,\r\n primaryCategory: enrollData.content.primaryCategory,\r\n name: enrollData.content.name,\r\n };\r\n if (modifyEnrollData.lastReadContentId) {\r\n return this.getResourseDataWithData(modifyEnrollData,\r\n enrollData.lastReadContentId, enrollData.lrcProgressDetails.mimeType);\r\n }\r\n if (modifyEnrollData.firstChildId) {\r\n return this.getResourseDataWithData(modifyEnrollData,\r\n enrollData.firstChildId,\r\n enrollData.lrcProgressDetails.mimeType);\r\n }\r\n }\r\n if (enrollData.firstChildId || enrollData.lastReadContentId) {\r\n const doId = enrollData.firstChildId || enrollData.lastReadContentId;\r\n const responseData = await this.fetchProgramContent(doId).toPromise().then(async (res: any) => {\r\n if (res && res.result && res.result.content) {\r\n const contentData: any = res.result.content;\r\n const modifyEnrollData = {\r\n ...enrollData,\r\n identifier: enrollData.collectionId,\r\n primaryCategory: enrollData.content.primaryCategory,\r\n name: enrollData.content.name,\r\n };\r\n urlData = this.getResourseDataWithData(modifyEnrollData, contentData.identifier, contentData.mimeType);\r\n if (urlData) {\r\n return urlData;\r\n }\r\n }\r\n });\r\n return responseData ? responseData : this.gotoTocPage(content);\r\n }\r\n return this.gotoTocPage(content);\r\n\r\n }\r\n\r\n getResourseDataWithData(content: any, resourseId: any, mimeType: any) {\r\n if (content) {\r\n const url = viewerRouteGenerator(\r\n resourseId,\r\n mimeType,\r\n content.identifier,\r\n 'Course',\r\n false,\r\n 'Learning Resource',\r\n content.batchId,\r\n content.name,\r\n );\r\n return url;\r\n }\r\n return this.gotoTocPage(content);\r\n }\r\n gotoTocPage(content: any) {\r\n const urlData: any = {\r\n url: `/app/toc/${content.identifier ? content.identifier : content.collectionId}/overview`,\r\n queryParams: { batchId: content.batchId },\r\n };\r\n if (content.endDate) {\r\n urlData.queryParams = { ...urlData.queryParams, planType: 'cbPlan', endDate: content.endDate };\r\n }\r\n return urlData;\r\n }\r\n isBatchInProgress(batchData: any) {\r\n // if (this.content && this.content['batches']) {\r\n // const batches = this.content['batches'] as NsContent.IBatch\r\n if (batchData && batchData.endDate) {\r\n const now = moment().format('YYYY-MM-DD');\r\n const startDate = moment(batchData.startDate).format('YYYY-MM-DD');\r\n const endDate = batchData.endDate ? moment(batchData.endDate).format('YYYY-MM-DD') : now;\r\n return (\r\n // batch.status &&\r\n moment(startDate).isSameOrBefore(now)\r\n && moment(endDate).isSameOrAfter(now)\r\n );\r\n } return true;\r\n }\r\n postApiMethod(apiUrl: any, req: any): Observable<NsContent.IContent> {\r\n return this.http.post<NsContent.IContent>(apiUrl, req);\r\n }\r\n getApiMethod(apiUrl: any): Observable<NsContent.IContent> {\r\n // req.query = req.query || '';\r\n return this.http.get<NsContent.IContent>(apiUrl);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\r\nimport { IPortalUrls, IUserPreference, NsAppsConfig, NsInstanceConfig, NsPage, NsUser } from '@sunbird-cb/utils-v2';\r\nimport { NSProfileDataV3 } from '../_models/profile-v3.models';\r\n// const instanceConfigPath: string | null = window.location.host\r\n// const locationHost: string | null = window.location.host\r\n\r\n// if (!environment.production && Boolean(environment.sitePath)) {\r\n// locationHost = environment.sitePath\r\n// instanceConfigPath = environment.sitePath\r\n// }\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfigurationsService {\r\n // update as the single source of truth\r\n constructor() {\r\n // @Inject('env') env: any\r\n // if (!env.production && Boolean(env.sitePath)) {\r\n // locationHost = env.sitePath\r\n // instanceConfigPath = env.sitePath\r\n // }\r\n }\r\n appSetup = true;\r\n // The url the user tried to access while landing in the app before accepting tnc\r\n userUrl = '';\r\n baseUrl = `assets/configurations`;\r\n sitePath = `assets/configurations`;\r\n hostPath = (window.location.host).replace(':', '_');\r\n\r\n userRoles: Set<string> | null = null;\r\n userGroups: Set<string> | null = null;\r\n restrictedFeatures: Set<string> | null = null;\r\n restrictedWidgets: Set<string> | null = null;\r\n instanceConfig: NsInstanceConfig.IConfig | null = null;\r\n appsConfig: NsAppsConfig.IAppsConfig | null = null;\r\n rootOrg: string | null = null;\r\n courseContentPath?: string;\r\n org: string[] | null = null;\r\n activeOrg: string | null = '';\r\n isProduction = false;\r\n hasAcceptedTnc = false;\r\n profileDetailsStatus = false;\r\n isActive = true;\r\n userPreference: IUserPreference | null = null;\r\n userProfile: NsUser.IUserProfile | null = null;\r\n userProfileV2: NsUser.IUserProfile | null = null;\r\n nodebbUserProfile: NsUser.INodebbUserProfile | null = null;\r\n // created to store complete user details sent by pid\r\n unMappedUser: any;\r\n isAuthenticated = false;\r\n isNewUser = false;\r\n portalUrls: IPortalUrls | undefined;\r\n positions: any;\r\n overrideThemeChanges: any;\r\n profileTimelyNudges: any;\r\n\r\n // pinnedApps\r\n pinnedApps = new BehaviorSubject<Set<string>>(new Set());\r\n\r\n // Notifier\r\n prefChangeNotifier = new ReplaySubject<Partial<IUserPreference>>(1);\r\n tourGuideNotifier = new ReplaySubject<boolean>();\r\n authChangeNotifier = new ReplaySubject<boolean>(1);\r\n\r\n private updateProfile = new BehaviorSubject(false);\r\n updateProfileObservable = this.updateProfile.asObservable();\r\n\r\n updateTourGuide = new BehaviorSubject(true);\r\n updateTourGuideObservable = this.updateTourGuide.asObservable();\r\n\r\n // platform rating\r\n updatePlatformRating = new BehaviorSubject({ bottom: '120px' });\r\n updatePlatformRatingObservable$ = this.updatePlatformRating.asObservable();\r\n\r\n languageTranslationFlag = new Subject();\r\n\r\n // Preference Related Values\r\n activeThemeObject: NsInstanceConfig.ITheme | null = null;\r\n activeFontObject: NsInstanceConfig.IFontSize | null = null;\r\n isDarkMode = false;\r\n isIntranetAllowed = false;\r\n isRTL = false;\r\n activeLocale: NsInstanceConfig.ILocalsConfig | null = null;\r\n activeLocaleGroup = '';\r\n completedActivity: string[] | null = null;\r\n completedTour = false;\r\n profileSettings = ['profilePicture', 'learningTime', 'learningPoints'];\r\n\r\n primaryNavBar: Partial<NsPage.INavBackground> = {\r\n color: 'primary',\r\n };\r\n pageNavBar: Partial<NsPage.INavBackground> = {\r\n color: 'primary',\r\n };\r\n primaryNavBarConfig: NsInstanceConfig.IPrimaryNavbarConfig | null = null;\r\n /* for temp Fix */\r\n // setBaseUrl = (sitePath: string) => `assets/configurations/${(sitePath).replace(':', '_')}`\r\n // setSitePath = (sitePath: string) => `assets/configurations/${(sitePath).replace(\r\n // ':',\r\n // '_',\r\n // )}`\r\n // setHostPath = (sitePath: string) => (sitePath).replace(':', '_')\r\n welcomeTabs: NSProfileDataV3.IProfileTab | null = null;\r\n\r\n // variable setting for csJwtToken\r\n cstoken = '';\r\n\r\n changeNavBarFullView = new Subject();\r\n openExploreMenuForMWeb = new Subject();\r\n updateGlobalProfile(state: boolean) {\r\n this.updateProfile.next(state);\r\n }\r\n updateTourGuideMethod(state: boolean) {\r\n this.updateTourGuide.next(state);\r\n }\r\n\r\n updatePlatformRatingMethod(state: any) {\r\n this.updatePlatformRating.next(state);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ConfigurationsService } from './configurations.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class MultilingualTranslationsService {\r\n selectedLang = '';\r\n // website lang change\r\n languageSelected = new BehaviorSubject(true);\r\n languageSelectedObservable = this.languageSelected.asObservable();\r\n editProfileDetails = '/apis/proxies/v8/user/v1/extPatch';\r\n\r\n constructor(private translate: TranslateService, private http: HttpClient, private configSvc: ConfigurationsService) {\r\n // this.getLanguage()\r\n }\r\n\r\n getLanguage() {\r\n if (this.configSvc.unMappedUser) {\r\n if (this.configSvc.unMappedUser.profileDetails &&\r\n this.configSvc.unMappedUser.profileDetails.additionalProperties &&\r\n this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang) {\r\n const lang = this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang;\r\n this.translate.use(lang);\r\n localStorage.setItem('websiteLanguage', lang);\r\n } else {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n // this.translate.setDefaultLang('en')\r\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\r\n lang = lang.replace(/\\\"/g, '');\r\n this.translate.use(lang);\r\n } else {\r\n this.translate.setDefaultLang('en');\r\n localStorage.setItem('websiteLanguage', 'en');\r\n }\r\n }\r\n } else {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n // this.translate.setDefaultLang('en')\r\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\r\n lang = lang.replace(/\\\"/g, '');\r\n this.translate.use(lang);\r\n }\r\n }\r\n }\r\n\r\n translateLabelWithoutspace(label: string, type: any, subtype: any) {\r\n let nlabel = label;\r\n nlabel = nlabel && nlabel.replace(/\\s/g, '');\r\n if (subtype) {\r\n // tslint:disable-next-line: prefer-template\r\n const translationKey = type + '.' + nlabel + subtype;\r\n return this.translate.instant(translationKey);\r\n }\r\n // tslint:disable-next-line: prefer-template\r\n const translationKeyn = type + '.' + nlabel;\r\n return this.translate.instant(translationKeyn);\r\n }\r\n\r\n translateLabel(label: string, type: any, subtype: any) {\r\n if(label) {\r\n let nlabel = label;\r\n \r\n \r\n nlabel = nlabel && nlabel.toLowerCase() ;\r\n const sl = nlabel.split(' ');\r\n sl.forEach((w: any, index: any) => {\r\n if (index !== 0) {\r\n sl[index] = w[0].toUpperCase() + w.slice(1);\r\n }\r\n });\r\n nlabel = sl.join('');\r\n nlabel = nlabel.replace(/\\s/g, '');\r\n if (subtype) {\r\n // tslint:disable-next-line: prefer-template\r\n const translationKey = type + '.' + nlabel + subtype;\r\n return this.translate.instant(translationKey);\r\n }\r\n // tslint:disable-next-line: prefer-template\r\n const translationKeyn = type + '.' + nlabel;\r\n return this.translate.instant(translationKeyn);\r\n } \r\n return label\r\n }\r\n\r\n translateActualLabel(label: string, type: any, subtype: any) {\r\n let nlabel = label;\r\n const sl = nlabel.split(' ');\r\n sl.forEach((w: any, index: any) => {\r\n if (index !== 0) {\r\n sl[index] = w[0].toUpperCase() + w.slice(1);\r\n }\r\n });\r\n nlabel = sl.join('');\r\n nlabel = nlabel.replace(/\\s/g, '');\r\n if (subtype) {\r\n // tslint:disable-next-line: prefer-template\r\n const translationKey = type + '.' + nlabel + subtype;\r\n return this.translate.instant(translationKey);\r\n }\r\n // tslint:disable-next-line: prefer-template\r\n const translationKeyn = type + '.' + nlabel;\r\n return this.translate.instant(translationKeyn);\r\n }\r\n\r\n editProfileDetailsAPI(data: any) {\r\n return this.http.post<any>(this.editProfileDetails, data);\r\n }\r\n\r\n updatelanguageSelected(state: any, lang: any, userid: any) {\r\n this.languageSelected.next(state);\r\n this.translate.use(lang);\r\n this.selectedLang = lang;\r\n\r\n if (userid) {\r\n const reqUpdates = {\r\n request: {\r\n userId: userid,\r\n profileDetails: {\r\n additionalProperties: {\r\n webPortalLang: this.selectedLang,\r\n },\r\n },\r\n },\r\n };\r\n this.editProfileDetailsAPI(reqUpdates).subscribe();\r\n }\r\n }\r\n}\r\n","import { NsContent } from './widget-content.model';\r\n\r\nexport namespace NsCardContent {\r\n export interface ICard {\r\n content: NsContent.IContent;\r\n cardSubType: TCardSubType;\r\n context: { pageSection: string; position?: number };\r\n intranetMode?: 'greyOut' | 'hide';\r\n deletedMode?: 'greyOut' | 'hide';\r\n likes?: number;\r\n contentTags?: IContentTags;\r\n stateData: any;\r\n }\r\n\r\n export interface IContentTags {\r\n daysSpan?: number;\r\n excludeContentType?: NsContent.EContentTypes[];\r\n excludeMimeType?: string[];\r\n tag: string;\r\n criteriaField?: string;\r\n }\r\n\r\n export interface ICompetency extends ICard {\r\n competencyArea: '';\r\n competencyObject: {};\r\n }\r\n\r\n export type TCardSubType =\r\n | 'standard'\r\n | 'minimal'\r\n | 'space-saving'\r\n | 'card-user-details'\r\n | 'basic-info'\r\n | 'basic-details'\r\n | 'card-description-back'\r\n | 'network-card';\r\n\r\n export enum EContentStatus {\r\n LIVE = 'Live',\r\n EXPIRED = 'Expired',\r\n DELETED = 'Deleted',\r\n MARK_FOR_DELETION = 'MarkedForDeletion',\r\n }\r\n\r\n export enum ACBPConst {\r\n UPCOMING = 'upcoming',\r\n ALL = 'All',\r\n OVERDUE = 'overdue',\r\n SUCCESS = 'success',\r\n }\r\n\r\n export enum IGOTConst {\r\n COMPETENCIES = 'competencies_v5',\r\n RETIRED = 'Retired',\r\n }\r\n\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { IUserGroupDetails } from '../_models/widget-user.model';\r\nimport { NsContent } from '../_models/widget-content.model';\r\nimport 'rxjs/add/observable/of'\r\nimport * as dayjs_ from 'dayjs';\r\nconst dayjs = dayjs_\r\n// import { environment } from 'src/environments/environment'\r\nimport { NsCardContent } from '../_models/card-content-v2.model';\r\nimport * as lodash from 'lodash';\r\n\r\n\r\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\r\nconst API_END_POINTS = {\r\n FETCH_USER_GROUPS: (userId: string) =>\r\n `${PROTECTED_SLAG_V8}/user/group/fetchUserGroup?userId=${userId}`,\r\n FETCH_CPB_PLANS: `/apis/proxies/v8/user/v1/cbplan`,\r\n FETCH_USER_ENROLLMENT_LIST: (userId: string | undefined) =>\r\n // tslint:disable-next-line: max-line-length\r\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`,\r\n FETCH_USER_ENROLLMENT_LIST_PROFILE: (userId: string | undefined) =>\r\n // tslint:disable-next-line: max-line-length\r\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`,\r\n // tslint:disable-next-line: max-line-length\r\n FETCH_USER_ENROLLMENT_LIST_V2: (userId: string | undefined, orgdetails: string, licenseDetails: string, fields: string, batchDetails: string) =>\r\n // tslint:disable-next-line: max-line-length\r\n `apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=${orgdetails}&licenseDetails=${licenseDetails}&fields=${fields},courseCategory,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=${batchDetails}`,\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WidgetUserService {\r\n environment: any;\r\n constructor(\r\n @Inject('environment') environment: any,\r\n private http: HttpClient) {\r\n this.environment = environment;\r\n }\r\n\r\n handleError(error: ErrorEvent) {\r\n let errorMessage = ''\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = `Error: ${error.error.message}`\r\n }\r\n return throwError(errorMessage)\r\n }\r\n\r\n fetchUserGroupDetails(userId: string): Observable<IUserGroupDetails[]> {\r\n return this.http\r\n .get<IUserGroupDetails[]>(API_END_POINTS.FETCH_USER_GROUPS(userId))\r\n .pipe(catchError(this.handleError))\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n fetchUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\r\n let path = ''\r\n if (queryParams) {\r\n // tslint:disable-next-line: max-line-length\r\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails)\r\n } else {\r\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST(userId)\r\n }\r\n const headers = new HttpHeaders({\r\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\r\n Pragma: 'no-cache',\r\n Expires: '0',\r\n })\r\n if (this.checkStorageData('enrollmentService', 'enrollmentData')) {\r\n const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\r\n (data: any) => {\r\n\r\n const coursesData: any = []\r\n if (data && data.result && data.result.courses) {\r\n data.result.courses.forEach((content: any) => {\r\n if (content.contentStatus) {\r\n delete content.contentStatus\r\n }\r\n coursesData.push(content)\r\n })\r\n this.storeUserEnrollmentInfo(data.result.userCourseEnrolmentInfo,\r\n data.result.courses.length)\r\n data.result.courses = coursesData\r\n if (data.result.courses.length < 200) {\r\n localStorage.removeItem('enrollmentData')\r\n this.setTime('enrollmentService')\r\n localStorage.setItem('enrollmentData', JSON.stringify(data.result))\r\n this.mapEnrollmentData(data.result)\r\n return data.result\r\n }\r\n }\r\n this.mapEnrollmentData(data.result)\r\n return data.result\r\n }\r\n )\r\n )\r\n return result\r\n }\r\n return this.getData('enrollmentData')\r\n\r\n }\r\n\r\n // tslint:disable-next-line: max-line-length\r\n fetchProfileUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\r\n let path = ''\r\n if (queryParams) {\r\n // tslint:disable-next-line: max-line-length\r\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails)\r\n } else {\r\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_PROFILE(userId)\r\n }\r\n const headers = new HttpHeaders({\r\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\r\n Pragma: 'no-cache',\r\n Expires: '0',\r\n })\r\n return this.http\r\n .get(path, { headers })\r\n .pipe(\r\n catchError(this.handleError),\r\n map(\r\n (data: any) => data.result\r\n )\r\n )\r\n // if (this.checkStorageData('enrollmentService')) {\r\n // const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\r\n // (data: any) => {\r\n // localStorage.setItem('enrollmentData', JSON.stringify(data.result))\r\n // this.mapEnrollmentData(data.result)\r\n // return data.result\r\n // }\r\n // )\r\n // )\r\n // this.setTime('enrollmentService')\r\n // return result\r\n // }\r\n // return this.getData('enrollmentData')\r\n }\r\n\r\n checkStorageData(key: any, dataKey: any) {\r\n const checkTime = localStorage.getItem('timeCheck')\r\n if (checkTime) {\r\n const parsedData = JSON.parse(checkTime)\r\n if (parsedData[key]) {\r\n const date = dayjs()\r\n const diffMin = date.diff(parsedData[key], 'minute')\r\n const timeCheck = this.environment.apiCache || 0\r\n if (diffMin >= timeCheck) {\r\n return true\r\n }\r\n return localStorage.getItem(dataKey) ? false : true\r\n }\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n getData(key: any): Observable<any> {\r\n return Observable.of(JSON.parse(localStorage.getItem(key) || '{}'))\r\n }\r\n getSavedData(key: any): Observable<any> {\r\n return JSON.parse(localStorage.getItem(key) || '')\r\n }\r\n\r\n setTime(key: any) {\r\n const checkTime = localStorage.getItem('timeCheck')\r\n if (checkTime) {\r\n const parsedData = JSON.parse(checkTime)\r\n parsedData[key] = new Date().getTime()\r\n localStorage.setItem('timeCheck', JSON.stringify(parsedData))\r\n } else {\r\n const data: any = {}\r\n data[key] = new Date().getTime()\r\n localStorage.setItem('timeCheck', JSON.stringify(data))\r\n }\r\n }\r\n\r\n resetTime(key: any) {\r\n const checkTime = localStorage.getItem('timeCheck')\r\n if (checkTime) {\r\n const parsedData = JSON.parse(checkTime)\r\n if (parsedData[key]) {\r\n delete parsedData[key]\r\n localStorage.setItem('timeCheck', JSON.stringify(parsedData))\r\n }\r\n }\r\n }\r\n\r\n fetchCbpPlanList() {\r\n\r\n // let data = JSON.parse(localStorage.getItem('cbpData')|| '')\r\n // if(!data) {\r\n // this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\r\n // (data: any) => {\r\n // const courseData = this.mapData(data.result)\r\n // return courseData\r\n // }\r\n // )\r\n // )\r\n // } else {\r\n // return this.getData('cbpData')\r\n\r\n // }\r\n if (this.checkStorageData('cbpService', 'cbpData')) {\r\n const result: any = this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\r\n async (data: any) => {\r\n return await this.mapData(data.result)\r\n }\r\n )\r\n )\r\n this.setTime('cbpService')\r\n return result\r\n }\r\n return this.getData('cbpData')\r\n }\r\n\r\n async mapData(data: any) {\r\n const contentNew: any = []\r\n const todayDate = dayjs().format('YYYY-MM-DD')\r\n\r\n const enrollList: any = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\r\n\r\n if (data && data.count) {\r\n data.content.forEach((c: any) => {\r\n c.contentList.forEach((childData: any) => {\r\n const childEnrollData = enrollList[childData.identifier]\r\n const endDate = dayjs(c.endDate).format('YYYY-MM-DD')\r\n const daysCount = dayjs(endDate).diff(todayDate, 'day')\r\n childData['planDuration'] = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29\r\n ? NsCardContent.ACBPConst.SUCCESS : NsCardContent.ACBPConst.UPCOMING\r\n childData['endDate'] = c.endDate\r\n childData['parentId'] = c.id\r\n childData['planType'] = 'cbPlan'\r\n if (childData.status !== NsCardContent.IGOTConst.RETIRED) {\r\n contentNew.push(childData)\r\n } else {\r\n if (childEnrollData && childEnrollData.status === 2) {\r\n contentNew.push(childData)\r\n }\r\n }\r\n\r\n const competencyArea: any = []\r\n const competencyTheme: any = []\r\n const competencyThemeType: any = []\r\n const competencySubTheme: any = []\r\n const competencyAreaId: any = []\r\n const competencyThemeId: any = []\r\n const competencySubThemeId: any = []\r\n childData['contentStatus'] = 0\r\n if (childEnrollData) {\r\n childData['contentStatus'] = childEnrollData.status\r\n }\r\n if (childData.competencies_v5) {\r\n childData.competencies_v5.forEach((element: any) => {\r\n if (!competencyArea.includes(element.competencyArea)) {\r\n competencyArea.push(element.competencyArea)\r\n competencyAreaId.push(element.competencyAreaId)\r\n }\r\n if (!competencyTheme.includes(element.competencyTheme)) {\r\n competencyTheme.push(element.competencyTheme)\r\n competencyThemeId.push(element.competencyThemeId)\r\n }\r\n if (!competencyThemeType.includes(element.competencyThemeType)) {\r\n competencyThemeType.push(element.competencyThemeType)\r\n }\r\n if (!competencySubTheme.includes(element.competencySubTheme)) {\r\n competencySubTheme.push(element.competencySubTheme)\r\n competencySubThemeId.push(element.competencySubThemeId)\r\n }\r\n })\r\n }\r\n\r\n childData['competencyArea'] = competencyArea\r\n childData['competencyTheme'] = competencyTheme\r\n childData['competencyThemeType'] = competencyThemeType\r\n childData['competencySubTheme'] = competencySubTheme\r\n childData['competencyAreaId'] = competencyAreaId\r\n childData['competencyThemeId'] = competencyThemeId\r\n childData['competencySubThemeId'] = competencySubThemeId\r\n })\r\n })\r\n if (contentNew.length > 1) {\r\n const sortedData: any = contentNew.sort((a: any, b: any) => {\r\n const firstDate: any = new Date(a.endDate)\r\n const secondDate: any = new Date(b.endDate)\r\n\r\n return secondDate > firstDate ? 1 : -1\r\n })\r\n const uniqueUsersByID = lodash.uniqBy(sortedData, 'identifier')\r\n const sortedByEndDate = lodash.orderBy(uniqueUsersByID, ['endDate'], ['asc'])\r\n const sortedByStatus = lodash.orderBy(sortedByEndDate, ['contentStatus'], ['asc'])\r\n localStorage.setItem('cbpData', JSON.stringify(sortedByStatus))\r\n return sortedByStatus\r\n }\r\n localStorage.setItem('cbpData', JSON.stringify(contentNew))\r\n return contentNew\r\n }\r\n localStorage.setItem('cbpData', JSON.stringify([]))\r\n return []\r\n }\r\n\r\n mapEnrollmentData(courseData: any) {\r\n const enrollData: any = {}\r\n if (courseData && courseData.courses.length) {\r\n courseData.courses.forEach((data: any) => {\r\n enrollData[data.collectionId] = data\r\n })\r\n }\r\n localStorage.removeItem('enrollmentMapData')\r\n localStorage.setItem('enrollmentMapData', JSON.stringify(enrollData))\r\n }\r\n storeUserEnrollmentInfo(enrollmentData: any, enrolledCourseCount: number) {\r\n const userData = {\r\n enrolledCourseCount,\r\n userCourseEnrolmentInfo: enrollmentData,\r\n }\r\n localStorage.removeItem('userEnrollmentCount')\r\n localStorage.setItem('userEnrollmentCount', JSON.stringify(userData))\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\r\nimport { NsContentStripWithTabs } from './content-strip-with-tabs-lib.model';\r\n// import { HttpClient } from '@angular/common/http'\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { NsContent } from '../../_models/widget-content.model';\r\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\r\nimport {\r\n TFetchStatus,\r\n LoggerService,\r\n EventService,\r\n ConfigurationsService,\r\n UtilityService,\r\n WsEvents,\r\n} from '@sunbird-cb/utils-v2';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { WidgetUserService } from '../../_services/widget-user.service';\r\n// import { environment } from 'src/environments/environment'\r\n// tslint:disable-next-line\r\nimport * as _ from 'lodash'\r\nimport { MatTabChangeEvent } from '@angular/material';\r\nimport { NsCardContent } from '../../_models/card-content-v2.model';\r\nimport { ITodayEvents } from '../../_models/event';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Router } from '@angular/router';\r\n\r\ninterface IStripUnitContentData {\r\n key: string;\r\n canHideStrip: boolean;\r\n mode?: string;\r\n showStrip: boolean;\r\n disableTranslate: boolean;\r\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\r\n stripTitle: string;\r\n stripTitleLink?: {\r\n link: {\r\n queryParams: string\r\n },\r\n icon: string,\r\n queryParams: string\r\n };\r\n sliderConfig?: {\r\n showNavs: boolean,\r\n showDots: boolean,\r\n maxWidgets?: number\r\n cerificateCardMargin?: boolean\r\n };\r\n stripConfig: any;\r\n tabsType?: string;\r\n tabs?: NsContentStripWithTabs.IContentStripTab[] | undefined;\r\n stripName?: string;\r\n stripLogo?: string;\r\n description?: string;\r\n stripInfo?: NsContentStripWithTabs.IStripInfo;\r\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n showOnNoData: boolean;\r\n showOnLoader: boolean;\r\n showOnError: boolean;\r\n loaderWidgets?: any;\r\n stripBackground?: string;\r\n secondaryHeading?: any;\r\n viewMoreUrl: any;\r\n request?: any\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'sb-uic-content-strip-with-tabs',\r\n templateUrl: './content-strip-with-tabs-lib.component.html',\r\n styleUrls: ['./content-strip-with-tabs-lib.component.scss'],\r\n})\r\nexport class ContentStripWithTabsLibComponent extends WidgetBaseComponent\r\n implements\r\n OnInit,\r\n OnDestroy,\r\n NsWidgetResolver.IWidgetData<NsContentStripWithTabs.IContentStripMultiple> {\r\n @Input() widgetData!: NsContentStripWithTabs.IContentStripMultiple;\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n @Output() viewAllResponse = new EventEmitter<any>()\r\n @Output() telemtryResponse = new EventEmitter<any>()\r\n @Input() providerId: any = ''\r\n @Input() emitViewAll: boolean = false\r\n @Input() channnelName: any = ''\r\n @HostBinding('id')\r\n public id = `ws-strip-miltiple_${Math.random()}`;\r\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\r\n stripsKeyOrder: string[] = [];\r\n showAccordionData = true;\r\n showParentLoader = false;\r\n showParentError = false;\r\n showParentNoData = false;\r\n errorDataCount = 0;\r\n noDataCount = 0;\r\n successDataCount = 0;\r\n contentAvailable = true;\r\n baseUrl = this.configSvc.sitePath || '';\r\n veifiedKarmayogi = false;\r\n environment!: any;\r\n changeEventSubscription: Subscription | null = null;\r\n defaultMaxWidgets = 12;\r\n enrollInterval: any;\r\n todaysEvents: any = [];\r\n enrollmentMapData: any\r\n\r\n constructor(\r\n // private contentStripSvc: ContentStripNewMultipleService,\r\n @Inject('environment') environment: any,\r\n private contentSvc: WidgetContentService,\r\n private loggerSvc: LoggerService,\r\n private eventSvc: EventService,\r\n private configSvc: ConfigurationsService,\r\n public utilitySvc: UtilityService,\r\n // private http: HttpClient,\r\n // private searchServSvc: SearchServService,\r\n public router: Router,\r\n private userSvc: WidgetUserService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService\r\n ) {\r\n super();\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en');\r\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\r\n lang = lang.replace(/\\\"/g, '');\r\n this.translate.use(lang);\r\n }\r\n this.environment = environment\r\n }\r\n\r\n ngOnInit() {\r\n // const url = window.location.href\r\n this.initData();\r\n this.contentSvc.telemetryData$.subscribe((data: any) => {\r\n this.telemtryResponse.emit(data)\r\n })\r\n\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.changeEventSubscription) {\r\n this.changeEventSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n showAccordion(key: string) {\r\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\r\n return this.showAccordionData;\r\n }\r\n return true;\r\n }\r\n\r\n setHiddenForStrip(key: string) {\r\n this.stripsResultDataMap[key].showStrip = false;\r\n sessionStorage.setItem(`cstrip_${key}`, '1');\r\n }\r\n private getIfStripHidden(key: string): boolean {\r\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\r\n return Boolean(storageItem !== '1');\r\n }\r\n\r\n private initData() {\r\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\r\n if (this.widgetData.loader && this.widgetData.strips.length) {\r\n this.showParentLoader = true;\r\n }\r\n // Fetch the data\r\n for (const strip of this.widgetData.strips) {\r\n if (this.checkForEmptyWidget(strip)) {\r\n this.fetchStripFromRequestData(strip, false);\r\n } else {\r\n this.processStrip(strip, [], 'done', true, null);\r\n }\r\n }\r\n // Subscription for changes\r\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\r\n .map(strip => ({\r\n key: strip.key,\r\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\r\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\r\n }))\r\n .filter(({ key, type, from }) => key && type && from);\r\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\r\n this.changeEventSubscription = this.eventSvc.events$\r\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\r\n .subscribe(event => {\r\n keyAndEvent\r\n .filter(e => e.type === event.eventType && e.from === event.from)\r\n .map(e => e.key)\r\n .forEach(k => this.fetchStripFromKey(k, false));\r\n });\r\n }\r\n\r\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\r\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\r\n if (stripData) {\r\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\r\n }\r\n }\r\n\r\n isStripShowing(data: any) {\r\n let count = 0;\r\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\r\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\r\n data.widgets.forEach((key: any) => {\r\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\r\n count = count + 1;\r\n }\r\n });\r\n if (count > 0) {\r\n data.showStrip = true;\r\n } else {\r\n data.showStrip = false;\r\n }\r\n }\r\n // console.log('data.key', data, data.key, data.widgets);\r\n return data.showStrip;\r\n }\r\n\r\n get isMobile() {\r\n return this.utilitySvc.isMobile || false;\r\n }\r\n\r\n getdata(data: IStripUnitContentData) {\r\n if (data.stripInfo) {\r\n return data.stripInfo.widget;\r\n }\r\n return {};\r\n\r\n }\r\n checkCondition(wData: NsContentStripWithTabs.IContentStripMultiple, data: IStripUnitContentData) {\r\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\r\n return !wData.strips[0].stripConfig.hideShowAll;\r\n }\r\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\r\n }\r\n checkVisible(data: IStripUnitContentData) {\r\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\r\n }\r\n\r\n getContineuLearningLenth(data: IStripUnitContentData) {\r\n return data.widgets ? data.widgets.length : 0;\r\n }\r\n getLength(data: IStripUnitContentData) {\r\n if (!data.tabs || !data.tabs.length) {\r\n return data.widgets ? data.widgets.length : 0;\r\n } {\r\n // if tabs are there check if each tab has widgets and get the tab with max widgets\r\n const tabWithMaxWidgets = data.tabs.reduce(\r\n (prev, current) => {\r\n if (!prev.widgets && !current.widgets) {\r\n return current;\r\n }\r\n if (prev.widgets && current.widgets) {\r\n return (prev.widgets.length > current.widgets.length) ? prev : current;\r\n }\r\n if (current.widgets && !prev.widgets) {\r\n return current;\r\n }\r\n if (!current.widgets && prev.widgets) {\r\n return prev;\r\n }\r\n return current;\r\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\r\n // tslint:disable-next-line: align\r\n }, data.tabs[0]);\r\n // if tabs has atleast 1 widgets then strip will show or else not\r\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\r\n }\r\n }\r\n\r\n private getFiltersFromArray(v6filters: any) {\r\n const filters: any = {};\r\n if (v6filters.constructor === Array) {\r\n v6filters.forEach(((f: any) => {\r\n Object.keys(f).forEach(key => {\r\n filters[key] = f[key];\r\n });\r\n }));\r\n return filters;\r\n }\r\n return v6filters;\r\n }\r\n\r\n private transformSearchV6FiltersV2(v6filters: any) {\r\n const filters: any = {};\r\n if (v6filters.constructor === Array) {\r\n v6filters.forEach(((f: any) => {\r\n Object.keys(f).forEach(key => {\r\n filters[key] = f[key];\r\n });\r\n }));\r\n return filters;\r\n }\r\n return v6filters;\r\n }\r\n\r\n checkForDateFilters(filters: any) {\r\n let userData: any;\r\n if (this.configSvc.userProfile) {\r\n userData = this.configSvc.userProfile;\r\n }\r\n\r\n if (filters && filters.hasOwnProperty('batches.endDate')) {\r\n // tslint:disable-next-line\r\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\r\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\r\n // tslint:disable-next-line\r\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\r\n } else if (filters.organisation &&\r\n filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n if (this.providerId) {\r\n filters.organisation = this.providerId;\r\n } else {\r\n filters.organisation = userData && userData.rootOrgId;\r\n\r\n if (filters && filters.hasOwnProperty('designation')) {\r\n filters.designation = userData.professionalDetails.length > 0 ?\r\n userData.professionalDetails[0].designation : '';\r\n }\r\n }\r\n\r\n }\r\n return filters;\r\n }\r\n\r\n private fetchStripFromRequestData(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n calculateParentStatus = true,\r\n ) {\r\n // setting initial values\r\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\r\n this.processStrip(strip, [], 'fetching', false, null);\r\n this.fetchFromEnrollmentList(strip, calculateParentStatus);\r\n this.fetchFromSearchV6(strip, calculateParentStatus);\r\n this.fetchFromTrendingContent(strip, calculateParentStatus);\r\n this.fetchAllCbpPlans(strip, calculateParentStatus);\r\n this.fetchAllTopContent(strip, calculateParentStatus);\r\n this.fetchAllFeaturedContent(strip, calculateParentStatus);\r\n this.fetchAllBookMarkData(strip, calculateParentStatus);\r\n this.fetchAllPlaylistSearch(strip, calculateParentStatus);\r\n this.fetchPlaylistReadData(strip, calculateParentStatus);\r\n this.fetchCiosContentData(strip, calculateParentStatus);\r\n\r\n // this.enrollInterval = setInterval(() => {\r\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\r\n // }, 1000)\r\n }\r\n\r\n fetchFromEnrollmentList(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) {\r\n let userId = '';\r\n let content: NsContent.IContent[];\r\n let contentNew: NsContent.IContent[];\r\n let tabResults: any[] = [];\r\n const queryParams = _.get(strip.request.enrollmentList, 'queryParams');\r\n // if (queryParams && queryParams.batchDetails) {\r\n // if (!queryParams.batchDetails.includes('&retiredCoursesEnabled=true')) {\r\n // queryParams.batchDetails += '&retiredCoursesEnabled=true'\r\n // }\r\n // }\r\n if (this.configSvc.userProfile) {\r\n userId = this.configSvc.userProfile.userId;\r\n }\r\n // this.userSvc.resetTime('enrollmentService')\r\n // tslint:disable-next-line: deprecation\r\n this.userSvc.fetchUserBatchList(userId, queryParams).subscribe(\r\n (result: any) => {\r\n const courses = result && result.courses;\r\n const showViewMore = Boolean(\r\n courses.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: (strip.viewMoreUrl && strip.viewMoreUrl.path) || '',\r\n queryParams: {\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n strip.request && strip.request.searchV6 && strip.request.searchV6.filters\r\n ? JSON.stringify(\r\n // this.searchServSvc.transformSearchV6Filters(\r\n strip.request.searchV6.filters\r\n // ),\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n if (courses && courses.length) {\r\n content = courses.map((c: any) => {\r\n const contentTemp: NsContent.IContent = c.content;\r\n contentTemp.completionPercentage = c.completionPercentage || c.progress || 0;\r\n contentTemp.completionStatus = c.completionStatus || c.status || 0;\r\n contentTemp.enrolledDate = c.enrolledDate || '';\r\n contentTemp.lastContentAccessTime = c.lastContentAccessTime || '';\r\n contentTemp.lastReadContentStatus = c.lastReadContentStatus || '';\r\n contentTemp.lastReadContentId = c.lastReadContentId || '';\r\n contentTemp.lrcProgressDetails = c.lrcProgressDetails || '';\r\n contentTemp.issuedCertificates = c.issuedCertificates || [];\r\n contentTemp.batchId = c.batchId || '';\r\n return contentTemp;\r\n });\r\n }\r\n // To filter content with completionPercentage > 0,\r\n // so that only those content will show in home page\r\n // continue learing strip\r\n // if (content && content.length) {\r\n // contentNew = content.filter((c: any) => {\r\n // /** commented as both are 0 after enrolll */\r\n // if (c.completionPercentage && c.completionPercentage > 0) {\r\n // return c\r\n // }\r\n // })\r\n // }\r\n\r\n // To sort in descending order of the enrolled date\r\n contentNew = (content || []).sort((a: any, b: any) => {\r\n const dateA: any = new Date(a.lastContentAccessTime || 0);\r\n const dateB: any = new Date(b.lastContentAccessTime || 0);\r\n return dateB - dateA;\r\n });\r\n\r\n if (strip.tabs && strip.tabs.length) {\r\n tabResults = this.splitEnrollmentTabsData(contentNew, strip);\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(contentNew, strip),\r\n 'done',\r\n calculateParentStatus,\r\n viewMoreUrl,\r\n tabResults\r\n );\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(contentNew, strip),\r\n 'done',\r\n calculateParentStatus,\r\n viewMoreUrl,\r\n );\r\n }\r\n },\r\n () => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n );\r\n }\r\n }\r\n\r\n splitEnrollmentTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\r\n const tabResults: any[] = [];\r\n const splitData = this.getInprogressAndCompleted(\r\n contentNew,\r\n (e: any) => e.completionStatus === 1 || e.completionPercentage < 100,\r\n strip,\r\n );\r\n\r\n if (strip.tabs && strip.tabs.length) {\r\n for (let i = 0; i < strip.tabs.length; i += 1) {\r\n if (strip.tabs[i]) {\r\n tabResults.push(\r\n {\r\n ...strip.tabs[i],\r\n fetchTabStatus: 'done',\r\n ...(splitData.find(itmInner => {\r\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\r\n return itmInner;\r\n }\r\n return undefined;\r\n })),\r\n }\r\n );\r\n }\r\n }\r\n }\r\n return tabResults;\r\n }\r\n\r\n getInprogressAndCompleted(array: NsContent.IContent[],\r\n customFilter: any,\r\n strip: NsContentStripWithTabs.IContentStripUnit) {\r\n const inprogress: any[] = []\r\n const completed: any[] = []\r\n // array.forEach((e: any, idx: number, arr: any[]) => (customFilter(e, idx, arr) ? inprogress : completed).push(e))\r\n array.forEach((e, idx, arr) => {\r\n const status = e.status ? (e.status as string).toLowerCase() : ''\r\n const statusRetired = status === 'retired'\r\n if (customFilter(e, idx, arr)) {\r\n if (!statusRetired) {\r\n inprogress.push(e)\r\n }\r\n } else {\r\n completed.push(e)\r\n }\r\n })\r\n // Sort the completed array with 'Live' status first and 'Retired' status second\r\n completed.sort((a: any, b: any) => {\r\n const statusA = a.status ? a.status.toLowerCase() : ''\r\n const statusB = b.status ? b.status.toLowerCase() : ''\r\n if (statusA === 'live' && statusB !== 'live') {\r\n return -1\r\n }\r\n if (statusA !== 'live' && statusB === 'live') {\r\n return 1\r\n }\r\n if (statusA === 'retired' && statusB !== 'retired') {\r\n return 1\r\n }\r\n if (statusA !== 'retired' && statusB === 'retired') {\r\n return -1\r\n }\r\n return 0\r\n })\r\n return [\r\n { value: 'inprogress', widgets: this.transformContentsToWidgets(inprogress, strip) },\r\n { value: 'completed', widgets: this.transformContentsToWidgets(completed, strip) }];\r\n }\r\n\r\n async fetchFromSearchV6(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\r\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\r\n // if (this.configSvc.activeLocale) {\r\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\r\n // } else {\r\n // strip.request.searchV6.locale = ['en']\r\n // }\r\n // }\r\n let originalFilters: any = [];\r\n // tslint:disable:no-console\r\n console.log(originalFilters);\r\n if (strip.request &&\r\n strip.request.searchV6 &&\r\n strip.request.searchV6.request &&\r\n strip.request.searchV6.request.filters) {\r\n originalFilters = strip.request.searchV6.request.filters;\r\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\r\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\r\n strip.request.searchV6.request.filters,\r\n );\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n\r\n this.getTabDataByNewReqSearchV6(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.content) {\r\n if (strip.key === 'scheduledAssessment') {\r\n this.enrollInterval = setInterval(() => {\r\n this.checkInvitOnlyAssessments(response.results.result.content, strip, calculateParentStatus, response.viewMoreUrl)\r\n\r\n // tslint:disable-next-line\r\n }, 1000)\r\n\r\n\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(response.results.result.content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n }\r\n\r\n } else if (response.results.result.Event) {\r\n this.processStrip(\r\n strip,\r\n this.transformEventsToWidgets(response.results.result.Event, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n checkInvitOnlyAssessments(content: any, strip: any, calculateParentStatus: any, viewMoreUrl: any) {\r\n if (localStorage.getItem('enrollmentMapData')) {\r\n this.enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\r\n let filteredArray: any = []\r\n let now = new Date().getTime()\r\n content.forEach((data: any) => {\r\n if (this.enrollmentMapData[data.identifier]) {\r\n if(this.enrollmentMapData[data.identifier].status !== 2 && this.enrollmentMapData[data.identifier].batch) {\r\n const enrollData = this.enrollmentMapData[data.identifier].batch\r\n let endDate:any = new Date(enrollData.endDate).getTime()\r\n // let endDate:any = '2024-07-7T00:00:00.000Z'\r\n let timeDuration = endDate - now\r\n if(timeDuration > 0 ) {\r\n data['batch'] = this.enrollmentMapData[data.identifier].batch\r\n data['completionPercentage'] = this.enrollmentMapData[data.identifier].completionPercentage\r\n filteredArray.push(data)\r\n }\r\n }\r\n \r\n }\r\n })\r\n filteredArray = filteredArray.sort((a: any, b: any) => {\r\n const dateA: any = new Date(a.batch.startDate || 0)\r\n const dateB: any = new Date(b.batch.startDate || 0)\r\n return dateA - dateB\r\n })\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(filteredArray, strip),\r\n 'done',\r\n calculateParentStatus,\r\n viewMoreUrl,\r\n );\r\n clearInterval(this.enrollInterval)\r\n }\r\n }\r\n\r\n async searchV6Request(strip: NsContentStripWithTabs.IContentStripUnit,\r\n request: NsContentStripWithTabs.IContentStripUnit['request'],\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request.searchV6) {\r\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\r\n const showViewMore = Boolean(\r\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n request &&\r\n request.searchV6 &&\r\n request.searchV6.request &&\r\n request.searchV6.request.filters\r\n ? JSON.stringify(\r\n this.transformSearchV6FiltersV2(\r\n originalFilters,\r\n )\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\r\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\r\n // }\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n async fetchFromTrendingContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) {\r\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\r\n // if (this.configSvc.activeLocale) {\r\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\r\n // } else {\r\n // strip.request.searchV6.locale = ['en']\r\n // }\r\n // }\r\n let originalFilters: any = [];\r\n // tslint:disable:no-console\r\n console.log(originalFilters);\r\n if (strip.request &&\r\n strip.request.trendingSearch &&\r\n strip.request.trendingSearch.request &&\r\n strip.request.trendingSearch.request.filters) {\r\n originalFilters = strip.request.trendingSearch.request.filters;\r\n strip.request.trendingSearch.request.filters = this.checkForDateFilters(strip.request.trendingSearch.request.filters);\r\n strip.request.trendingSearch.request.filters = this.getFiltersFromArray(\r\n strip.request.trendingSearch.request.filters,\r\n );\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n\r\n this.getTabDataByNewReqTrending(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.trendingSearchRequest(strip, strip.request, calculateParentStatus);\r\n if (response && response.results && response.results.response) {\r\n const content = response.results.response[strip.request.trendingSearch.responseKey] || [];\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl || '',\r\n );\r\n if (!content.length) {\r\n this.emptyResponse.emit(true)\r\n }\r\n } else {\r\n this.emptyResponse.emit(true)\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n this.emptyResponse.emit(true)\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async trendingSearchRequest(strip: NsContentStripWithTabs.IContentStripUnit,\r\n request: NsContentStripWithTabs.IContentStripUnit['request'],\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request.trendingSearch) {\r\n // check for the request if it has dynamic values]\r\n if (request.trendingSearch.request.filters.organisation &&\r\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n let userRootOrgId;\r\n if (this.configSvc.userProfile) {\r\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\r\n }\r\n request.trendingSearch.request.filters.organisation = userRootOrgId;\r\n }\r\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\r\n const showViewMore = Boolean(\r\n results.result &&\r\n strip.request &&\r\n results.result[strip.request.trendingSearch.responseKey] &&\r\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\r\n strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n request &&\r\n request.trendingSearch &&\r\n request.trendingSearch.request &&\r\n request.trendingSearch.request.filters\r\n ? JSON.stringify(\r\n this.transformSearchV6FiltersV2(\r\n originalFilters,\r\n )\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n let proccesedResult: any = []\r\n if (results && results.response && results.response.certifications) {\r\n results.response.certifications.map((result: any) => {\r\n if (result.source === this.channnelName) {\r\n proccesedResult.push(result)\r\n }\r\n })\r\n }\r\n results = { response: { certifications: proccesedResult } }\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n if (error.error && error.error.status === 400) {\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n toggleInfo(data: IStripUnitContentData) {\r\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\r\n if (stripInfo) {\r\n if (stripInfo.mode !== 'below') {\r\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\r\n stripInfo.mode = 'below';\r\n }\r\n if (stripInfo.mode === 'below') {\r\n this.stripsResultDataMap[data.key].stripInfo = {\r\n ...stripInfo,\r\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\r\n };\r\n }\r\n }\r\n }\r\n\r\n private transformContentsToWidgets(\r\n contents: NsContent.IContent[],\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n\r\n private transformEventsToWidgets(\r\n contents: ITodayEvents[],\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n ) {\r\n this.eventSvc.setEventListData(contents);\r\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\r\n widgetType: 'card',\r\n widgetSubType: 'eventHubCard',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'eventHubCard',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n private transformSkeletonToWidgets(\r\n strip: any\r\n ) {\r\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n },\r\n }));\r\n }\r\n\r\n private async processStrip(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\r\n fetchStatus: TFetchStatus,\r\n calculateParentStatus = true,\r\n _viewMoreUrl: any,\r\n tabsResults?: NsContentStripWithTabs.IContentStripTab[] | undefined,\r\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\r\n ) {\r\n const stripData = {\r\n viewMoreUrl: strip.viewMoreUrl,\r\n key: strip.key,\r\n canHideStrip: Boolean(strip.canHideStrip),\r\n showStrip: this.getIfStripHidden(strip.key),\r\n noDataWidget: strip.noDataWidget,\r\n errorWidget: strip.errorWidget,\r\n stripInfo: strip.info,\r\n stripTitle: strip.title,\r\n stripTitleLink: strip.stripTitleLink,\r\n disableTranslate: strip.disableTranslate,\r\n sliderConfig: strip.sliderConfig,\r\n tabs: tabsResults ? tabsResults : strip.tabs,\r\n tabsType: strip.tabsType ? strip.tabsType : '',\r\n stripName: strip.name,\r\n mode: strip.mode,\r\n stripConfig: strip.stripConfig,\r\n stripBackground: strip.stripBackground,\r\n secondaryHeading: strip.secondaryHeading,\r\n loaderWidgets: strip.loaderWidgets || [],\r\n widgets:\r\n fetchStatus === 'done'\r\n ? [\r\n ...(strip.preWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ...results,\r\n ...(strip.postWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ]\r\n : [],\r\n showOnNoData: Boolean(\r\n strip.noDataWidget &&\r\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\r\n fetchStatus === 'done',\r\n ),\r\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\r\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\r\n };\r\n // const stripData = this.stripsResultDataMap[strip.key]\r\n this.stripsResultDataMap = {\r\n ...this.stripsResultDataMap,\r\n [strip.key]: stripData,\r\n };\r\n if (!tabsResults) {\r\n if (\r\n calculateParentStatus &&\r\n (fetchStatus === 'done' || fetchStatus === 'error') &&\r\n stripData.widgets\r\n ) {\r\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\r\n }\r\n if (calculateParentStatus && !(results && results.length > 0)) {\r\n this.contentAvailable = false;\r\n } else if (results && results.length > 0) {\r\n this.contentAvailable = true;\r\n }\r\n } else {\r\n this.contentAvailable = true;\r\n }\r\n }\r\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\r\n if (fetchStatus === 'done' && !stripWidgetsCount) {\r\n this.noDataCount += 1;\r\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\r\n this.successDataCount += 1;\r\n } else if (fetchStatus === 'error') {\r\n this.errorDataCount += 1;\r\n }\r\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\r\n const totalCount = this.widgetData.strips.length;\r\n if (this.successDataCount > 0 && settledCount < totalCount) {\r\n return;\r\n }\r\n this.showParentLoader = settledCount !== totalCount;\r\n this.showParentNoData =\r\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\r\n this.showParentError = this.errorDataCount === totalCount;\r\n }\r\n checkForEmptyWidget(strip: NsContentStripWithTabs.IContentStripUnit): boolean {\r\n if (\r\n strip.request &&\r\n ((strip.request.api && Object.keys(strip.request.api).length) ||\r\n (strip.request.search && Object.keys(strip.request.search).length) ||\r\n (strip.request.searchRegionRecommendation &&\r\n Object.keys(strip.request.searchRegionRecommendation).length) ||\r\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\r\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\r\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\r\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) ||\r\n (strip.request.topContent && Object.keys(strip.request.topContent).length) ||\r\n (strip.request.featureContent && Object.keys(strip.request.featureContent).length) ||\r\n (strip.request.bookmarkRead && Object.keys(strip.request.bookmarkRead).length) ||\r\n (strip.request.playlistSearch && Object.keys(strip.request.playlistSearch).length) ||\r\n (strip.request.playlistRead && Object.keys(strip.request.playlistRead).length) ||\r\n (strip.request.ciosContent && Object.keys(strip.request.ciosContent).length)\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitContentData, stripKey: string) {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'inprogress';\r\n stripMap.tabs[tabEvent.index].tabLoading = true;\r\n stripMap.showOnLoader = true;\r\n }\r\n const data: WsEvents.ITelemetryTabData = {\r\n label: `${tabEvent.tab.textLabel}`,\r\n index: tabEvent.index,\r\n };\r\n this.eventSvc.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\r\n id: `${_.camelCase(data.label)}-tab`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.HOME,\r\n }\r\n );\r\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\r\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\r\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\r\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\r\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\r\n tabSelected: currentTabFromMap.label,\r\n };\r\n }\r\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick) {\r\n if (currentTabFromMap.requestRequired && currentTabFromMap.request) {\r\n // call API to get tab data and process\r\n // this.processStrip(currentStrip, [], 'fetching', true, null)\r\n if (currentTabFromMap.request.searchV6) {\r\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, currentTabFromMap, true);\r\n } else if (currentTabFromMap.request.trendingSearch) {\r\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, currentTabFromMap, true);\r\n } else if (currentTabFromMap.request.topContent) {\r\n this.getTabDataByNewReqTopContent(currentStrip, tabEvent.index, currentTabFromMap, true);\r\n } else if (currentTabFromMap.request.playlistRead) {\r\n this.getTabDataByNewReqPlaylistReadContent(currentStrip, tabEvent.index, currentTabFromMap, true);\r\n } else if (currentTabFromMap.request.ciosContent) {\r\n this.getTabDataByCiosSearch(currentStrip, tabEvent.index, currentTabFromMap, true)\r\n }\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n stripMap.tabs[tabEvent.index].tabLoading = false;\r\n }\r\n } else {\r\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\r\n setTimeout(() => {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n stripMap.tabs[tabEvent.index].tabLoading = false;\r\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\r\n stripMap.showOnLoader = false;\r\n }\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n\r\n async getTabDataByNewReqSearchV6(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\r\n if (response && response.results) {\r\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n async getTabDataByNewReqTrending(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\r\n if (response && response.results && response.results.response) {\r\n const content = response.results.response[currentTab.value] || [];\r\n const widgets = this.transformContentsToWidgets(content, strip);\r\n // console.log('currentTab --- widgets', widgets)\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n // console.log('tabResults -++++***--', tabResults)\r\n // console.log('calling after-- ')\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n\r\n getTabDataByfilter(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n // tslint:disable:no-console\r\n console.log('strip -- ', strip);\r\n // tslint:disable:no-console\r\n console.log('currentTab -- ', currentTab);\r\n // tslint:disable:no-console\r\n console.log('calculateParentStatus-- ', calculateParentStatus);\r\n // TODO: Write logic for individual filter if passed in config\r\n // add switch case based on config key passed\r\n }\r\n\r\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\r\n\r\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\r\n\r\n let courses: NsContent.IContent[];\r\n let tabResults: any[] = [];\r\n const response = await this.userSvc.fetchCbpPlanList().toPromise();\r\n if (response) {\r\n courses = response;\r\n if (strip.tabs && strip.tabs.length) {\r\n tabResults = this.splitCbpTabsData(courses, strip);\r\n await this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(courses, strip),\r\n 'done',\r\n calculateParentStatus,\r\n '',\r\n tabResults\r\n );\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(courses, strip),\r\n 'done',\r\n calculateParentStatus,\r\n 'viewMoreUrl',\r\n );\r\n }\r\n }\r\n // this.userSvc.fetchCbpPlanList().subscribe( async (res: any) => {\r\n // if (res) {\r\n // console.log(res,'===============================>')\r\n // courses = res\r\n // if (strip.tabs && strip.tabs.length) {\r\n // tabResults = this.splitCbpTabsData(courses, strip)\r\n // await this.processStrip(\r\n // strip,\r\n // this.transformContentsToWidgets(courses, strip),\r\n // 'done',\r\n // calculateParentStatus,\r\n // '',\r\n // tabResults\r\n // )\r\n // } else {\r\n // this.processStrip(\r\n // strip,\r\n // this.transformContentsToWidgets(courses, strip),\r\n // 'done',\r\n // calculateParentStatus,\r\n // 'viewMoreUrl',\r\n // )\r\n // }\r\n // }\r\n // }, (_err: any) => {\r\n\r\n // })\r\n\r\n clearInterval(this.enrollInterval);\r\n }\r\n }\r\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\r\n const tabResults: any[] = [];\r\n const splitData = this.getTabsList(\r\n contentNew,\r\n strip,\r\n );\r\n if (strip.tabs && strip.tabs.length) {\r\n for (let i = 0; i < strip.tabs.length; i += 1) {\r\n if (strip.tabs[i]) {\r\n tabResults.push(\r\n {\r\n ...strip.tabs[i],\r\n fetchTabStatus: 'done',\r\n ...(splitData.find(itmInner => {\r\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\r\n return itmInner;\r\n }\r\n return undefined;\r\n })),\r\n }\r\n );\r\n }\r\n }\r\n }\r\n return tabResults;\r\n }\r\n\r\n getTabsList(array: NsContent.IContent[],\r\n strip: NsContentStripWithTabs.IContentStripUnit) {\r\n let all: any[] = [];\r\n let upcoming: any[] = [];\r\n let overdue: any[] = [];\r\n array.forEach((e: any) => {\r\n all.push(e);\r\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n overdue.push(e);\r\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\r\n upcoming.push(e);\r\n }\r\n });\r\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\r\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\r\n\r\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\r\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\r\n\r\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\r\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n }\r\n });\r\n\r\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\r\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n }\r\n });\r\n\r\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\r\n\r\n overdue = overdue.filter((data: any): any => {\r\n return data.contentStatus < 2;\r\n });\r\n\r\n overdue = overdue.sort((a: any, b: any): any => {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n });\r\n\r\n upcoming = upcoming.filter((data: any): any => {\r\n return data.contentStatus < 2;\r\n });\r\n // this.getSelectedIndex(1)\r\n return [\r\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\r\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\r\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\r\n }\r\n\r\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\r\n let returnValue = 0;\r\n if (key === 'cbpPlan') {\r\n if (stripsResultDataMap.tabs.length) {\r\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\r\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\r\n }\r\n }\r\n return returnValue;\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateLabel(label, type, '');\r\n }\r\n\r\n identify(index: number, item: any) {\r\n if (index >= 0) { }\r\n return item;\r\n }\r\n tracker(index: number, item: any) {\r\n if (index >= 0) { }\r\n return _.get(item, 'widgetData.content.identifier')\r\n }\r\n\r\n async fetchAllTopContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.topContent && Object.keys(strip.request.topContent).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.topContent &&\r\n strip.request.topContent.request &&\r\n strip.request.topContent.request.filters) {\r\n originalFilters = strip.request.topContent.request.filters;\r\n strip.request.topContent.request.filters = this.postMethodFilters(strip.request.topContent.request.filters);\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n\r\n this.getTabDataByNewReqTopContent(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.postRequestMethod(strip, strip.request.topContent, strip.request.apiUrl, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.content && response.results.result.content.length) {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(response.results.result.content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async fetchAllFeaturedContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.featureContent && Object.keys(strip.request.featureContent).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.featureContent &&\r\n strip.request.featureContent.request &&\r\n strip.request.featureContent.request.filters) {\r\n originalFilters = strip.request.featureContent.request.filters;\r\n strip.request.featureContent.request.filters = this.postMethodFilters(strip.request.featureContent.request.filters);\r\n }\r\n try {\r\n const response = await this.postRequestMethod(strip, strip.request.featureContent, strip.request.apiUrl, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.content && response.results.result.content.length) {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(response.results.result.content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n\r\n\r\n async getTabDataByNewReqTopContent(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n if (currentTab.request &&\r\n currentTab.request.topContent &&\r\n currentTab.request.topContent.request &&\r\n currentTab.request.topContent.request.filters) {\r\n currentTab.request.topContent.request.filters = this.postMethodFilters(currentTab.request.topContent.request.filters);\r\n }\r\n try {\r\n // const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\r\n const response = await this.postRequestMethod(strip, currentTab.request.topContent, currentTab.request.apiUrl, calculateParentStatus);\r\n if (response.results && response.results.result) {\r\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n raiseTelemetry(stripData: any) {\r\n this.telemtryResponse.emit(stripData)\r\n }\r\n\r\n async postRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\r\n request: NsContentStripWithTabs.IContentStripUnit['request'],\r\n apiUrl: string,\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request) {\r\n this.contentSvc.postApiMethod(apiUrl, request).subscribe(results => {\r\n if (results.result && results.result.content) {\r\n const showViewMore = Boolean(\r\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f: {},\r\n },\r\n }\r\n : null;\r\n resolve({ results, viewMoreUrl });\r\n } else if (results && results.data) {\r\n const showViewMore = Boolean(\r\n results.data && results.data.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f: {},\r\n },\r\n }\r\n : null;\r\n resolve({ results, viewMoreUrl });\r\n } else if (results.result && results.result.data) {\r\n const showViewMore = Boolean(\r\n results.data && results.result.data && results.result.data.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f: {},\r\n },\r\n }\r\n : null;\r\n resolve({ results, viewMoreUrl });\r\n }\r\n\r\n }, (error: any) => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n async getRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\r\n request: NsContentStripWithTabs.IContentStripUnit['request'],\r\n apiUrl: string,\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request) {\r\n this.contentSvc.getApiMethod(apiUrl).subscribe(results => {\r\n let showViewMore: any\r\n if(results.result.data){\r\n showViewMore = Boolean(\r\n results.result.data && results.result.data.orgList.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n } else if(results.result.content){\r\n let featuredProvider = JSON.parse(results.result.content.featuredProviders || '[]')\r\n showViewMore = Boolean(\r\n featuredProvider && featuredProvider.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n }\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n }\r\n : null;\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n postMethodFilters(filters: any) {\r\n if (filters.organisation &&\r\n filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n filters.organisation = filters.organisation.replace('<orgID>', this.providerId)\r\n }\r\n return filters\r\n }\r\n getFullUrl(apiUrl: any, id: string) {\r\n let formedUrl: string = apiUrl\r\n if (apiUrl.indexOf('<bookmarkId>') >= 0) {\r\n formedUrl = apiUrl.replace('<bookmarkId>', this.environment.mdoChannelsBookmarkId)\r\n } else if (apiUrl.indexOf('<playlistKey>') >= 0 && apiUrl.indexOf('<orgID>') >= 0) {\r\n formedUrl = apiUrl.replace('<playlistKey>', this.providerId + id) \r\n formedUrl = formedUrl.replace('<orgID>', this.providerId) \r\n } else if(apiUrl.indexOf('<doId>') >= 0) {\r\n formedUrl = apiUrl.replace('<doId>', this.environment.providerDataKey) \r\n } \r\n return formedUrl\r\n }\r\n\r\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\r\n if (this.emitViewAll) {\r\n this.viewAllResponse.emit(stripData)\r\n } else {\r\n this.router.navigate([path], { queryParams: queryParamsData })\r\n }\r\n }\r\n\r\n async fetchAllBookMarkData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.bookmarkRead && Object.keys(strip.request.bookmarkRead).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.bookmarkRead &&\r\n strip.request.bookmarkRead.bookmarkId) {\r\n strip.request.apiUrl = this.getFullUrl(strip.request.apiUrl, strip.request.bookmarkRead.bookmarkId);\r\n }\r\n try {\r\n const response = await this.getRequestMethod(strip, strip.request.bookmarkRead, strip.request.apiUrl, calculateParentStatus);\r\n let content = response.results.result.data.orgList\r\n if (response) {\r\n this.processStrip(\r\n strip,\r\n this.transformAllContentsToWidgets(content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response,\r\n );\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n\r\n private transformAllContentsToWidgets(\r\n contents: any,\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n\r\n private transformAllTabContentsToWidgets(\r\n contents: any,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: currentTab.stripConfig && currentTab.stripConfig.cardSubType,\r\n cardCustomeClass: currentTab.customeClass ? currentTab.customeClass : '',\r\n context: { pageSection: currentTab.value, position: idx },\r\n intranetMode: currentTab.stripConfig && currentTab.stripConfig.intranetMode,\r\n deletedMode: currentTab.stripConfig && currentTab.stripConfig.deletedMode,\r\n contentTags: currentTab.stripConfig && currentTab.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n\r\n async fetchAllPlaylistSearch(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.playlistSearch && Object.keys(strip.request.playlistSearch).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.playlistSearch &&\r\n strip.request.playlistSearch.request &&\r\n strip.request.playlistSearch.request.filters) {\r\n originalFilters = strip.request.playlistSearch.request.filters;\r\n strip.request.playlistSearch.request.filters = this.postMethodFilters(strip.request.playlistSearch.request.filters);\r\n }\r\n try {\r\n const response = await this.postRequestMethod(strip, strip.request.playlistSearch.request, strip.request.apiUrl, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.data && response.results.result.data.length) {\r\n let finalPlaylistData: any = []\r\n let programData: any = response.results.result.data\r\n programData.forEach((prgData: any) => {\r\n if (prgData.children && prgData.children.length) {\r\n finalPlaylistData.push(prgData)\r\n }\r\n })\r\n if (finalPlaylistData.length) {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(finalPlaylistData, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.emptyResponse.emit(true)\r\n }\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n\r\n async fetchPlaylistReadData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.playlistRead && Object.keys(strip.request.playlistRead).length) {\r\n let originalFilters: any = [];\r\n if (strip.request &&\r\n strip.request.playlistRead &&\r\n strip.request.playlistRead.type) {\r\n strip.request.apiUrl = this.getFullUrl(strip.request.apiUrl, strip.request.playlistRead.type);\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n\r\n this.getTabDataByNewReqPlaylistReadContent(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.getRequestMethod(strip, strip.request.playlistRead, strip.request.apiUrl, calculateParentStatus);\r\n \r\n if (response && response.results.result.content) { \r\n let content = response.results.result.content\r\n if(strip.key === 'providers'){\r\n let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\r\n this.processStrip(\r\n strip,\r\n this.transformAllContentsToWidgets(featuredProviders, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response,\r\n );\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformAllContentsToWidgets(content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response,\r\n );\r\n }\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n async getTabDataByNewReqPlaylistReadContent(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n if (currentTab.request &&\r\n currentTab.request.playlistRead &&\r\n currentTab.request.playlistRead.type) {\r\n currentTab.request.apiUrl = this.getFullUrl(currentTab.request.apiUrl, currentTab.request.playlistRead.type);\r\n }\r\n try {\r\n const response = await this.getRequestMethod(strip, currentTab.request.playlistRead, currentTab.request.apiUrl, calculateParentStatus);\r\n // if (response && response.results.result.content) { \r\n // let content = response.results.result.content\r\n // if(strip.key === 'providers'){\r\n // let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\r\n // this.processStrip(\r\n // strip,\r\n // this.transformAllContentsToWidgets(featuredProviders, strip),\r\n // 'done',\r\n // calculateParentStatus,\r\n // response,\r\n // );\r\n // } else {\r\n // this.processStrip(\r\n // strip,\r\n // this.transformAllContentsToWidgets(content, strip),\r\n // 'done',\r\n // calculateParentStatus,\r\n // response,\r\n // );\r\n // }\r\n // } else {\r\n // this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n // this.emptyResponse.emit(true)\r\n // }\r\n if (response.results && response.results.result) {\r\n let content = response.results.result.content\r\n let widgets = []\r\n if(currentTab.value === 'providers'){\r\n let featuredProviders : any = JSON.parse(content.featuredProviders|| '[]')\r\n widgets = this.transformAllTabContentsToWidgets(featuredProviders, currentTab)\r\n } else {\r\n widgets = this.transformAllTabContentsToWidgets(content, currentTab)\r\n }\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults);\r\n }\r\n } catch (error) {\r\n console.error('Error:', error)\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs && this.stripsResultDataMap[strip.key].tabs.length) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults)\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n }\r\n\r\n async fetchCiosContentData(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip && strip.request.ciosContent && Object.keys(strip.request.ciosContent).length) {\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired && firstTab.value === 'extCourse') {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n this.getTabDataByCiosSearch(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n if (firstTab.requestRequired && firstTab.value === 'providers') {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\r\n this.getTabDataByNewReqPlaylistReadContent(strip, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n } else {\r\n try {\r\n const response = await this.postRequestMethod(strip, strip.request.ciosContent, strip.request.apiUrl, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.data && response.results.data.length) {\r\n let extContentData: any = response.results.data\r\n if (extContentData.length) {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(extContentData, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.emptyResponse.emit(true)\r\n }\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n \r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n this.emptyResponse.emit(true)\r\n }\r\n } catch (error) {\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async getTabDataByCiosSearch(\r\n strip: NsContentStripWithTabs.IContentStripUnit,\r\n tabIndex: number,\r\n _currentTab: NsContentStripWithTabs.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.contentSvc.postApiMethod(strip.request.apiUrl,strip.request.ciosContent).toPromise();;\r\n if (response && response.data && response.data.length) {\r\n const widgets = this.transformContentsToWidgets(response.data, strip);\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults);\r\n }\r\n } catch (error) {\r\n console.error('Error:', error)\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs && this.stripsResultDataMap[strip.key].tabs.length) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null, tabResults)\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\r\n\r\nimport {\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule} from '@angular/material';\r\nimport { ContentStripWithTabsLibComponent } from './content-strip-with-tabs-lib.component';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\r\n\r\n// tslint:disable-next-line:function-name\r\nexport function HttpLoaderFactory(http: HttpClient) {\r\n return new TranslateHttpLoader(http);\r\n}\r\n\r\n@NgModule({\r\n declarations: [ContentStripWithTabsLibComponent],\r\n imports: [\r\n SbUiResolverModule,\r\n CommonModule,\r\n RouterModule,\r\n HorizontalScrollerV2Module,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule,\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 ],\r\n entryComponents: [ContentStripWithTabsLibComponent],\r\n exports: [ContentStripWithTabsLibComponent],\r\n})\r\nexport class ContentStripWithTabsLibModule { }\r\n","import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core'\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\r\nimport { ICarousel, ICarouselStyle } from './sliders.model'\r\nimport { Subscription, interval } from 'rxjs'\r\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\r\n\r\n@Component({\r\n selector: 'sb-uic-sliders',\r\n templateUrl: './sliders.component.html',\r\n styleUrls: ['./sliders.component.scss'],\r\n})\r\nexport class SlidersLibComponent extends WidgetBaseComponent\r\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\r\n @Input() widgetData!: ICarousel[]\r\n @Input() styleData!: ICarouselStyle\r\n @Input() title: any = ''\r\n @Input() type: any\r\n @HostBinding('id')\r\n public id = `banner_${Math.random()}`\r\n private defaultMenuSubscribe: Subscription | null = null\r\n isLtMedium$ = this.valueSvc.isLtMedium$\r\n currentIndex = 0\r\n slideInterval: Subscription | null = null\r\n isMobile = false\r\n\r\n constructor(\r\n private events: EventService,\r\n private valueSvc: ValueService\r\n ) {\r\n super()\r\n }\r\n\r\n ngOnInit() {\r\n this.reInitiateSlideInterval()\r\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\r\n this.isMobile = isLtMedium\r\n })\r\n }\r\n reInitiateSlideInterval() {\r\n if (this.widgetData && this.widgetData.length > 1) {\r\n try {\r\n if (this.slideInterval) {\r\n this.slideInterval.unsubscribe()\r\n }\r\n } catch (e) {\r\n } finally {\r\n this.slideInterval = interval(8000).subscribe(() => {\r\n if (this.currentIndex === this.widgetData.length - 1) {\r\n this.currentIndex = 0\r\n } else {\r\n this.currentIndex += 1\r\n }\r\n })\r\n }\r\n }\r\n }\r\n slideTo(index: number) {\r\n if (index >= 0 && index < this.widgetData.length) {\r\n this.currentIndex = index\r\n } else if (index === this.widgetData.length) {\r\n this.currentIndex = 0\r\n } else {\r\n this.currentIndex = this.widgetData.length + index\r\n }\r\n this.reInitiateSlideInterval()\r\n }\r\n\r\n get isOpenInNewTab() {\r\n const currentData = this.widgetData[this.currentIndex]\r\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\r\n return true\r\n } return false\r\n }\r\n\r\n openInNewTab() {\r\n const currentData = this.widgetData[this.currentIndex]\r\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\r\n window.open(currentData.redirectUrl)\r\n }\r\n }\r\n raiseTelemetry(bannerUrl: string | undefined) {\r\n this.openInNewTab()\r\n const path = window.location.pathname.replace('/', '')\r\n const url = path + window.location.search\r\n\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'banner',\r\n },\r\n {\r\n pageUrl: url,\r\n bannerRedirectUrl: bannerUrl,\r\n },\r\n {\r\n pageIdExt: 'banner',\r\n module: WsEvents.EnumTelemetrymodules.CONTENT,\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.defaultMenuSubscribe) {\r\n this.defaultMenuSubscribe.unsubscribe()\r\n }\r\n }\r\n}\r\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'\r\nimport { CommonModule } from '@angular/common'\r\nimport { SlidersLibComponent } from './sliders.component'\r\nimport { RouterModule } from '@angular/router'\r\nimport { ImageResponsiveModule } from './../../_directives/image-responsive/image-responsive.module'\r\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\r\n/* tslint:disable */\r\nimport Hammer from 'hammerjs'\r\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\r\n/* tslint:enable */\r\nexport class MyHammerConfig extends HammerGestureConfig {\r\n buildHammer(element: HTMLElement) {\r\n const mc = new Hammer(element, {\r\n touchAction: 'pan-y',\r\n })\r\n return mc\r\n }\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\n@NgModule({\r\n declarations: [SlidersLibComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n NavigationModule,\r\n ImageResponsiveModule,\r\n ],\r\n exports: [SlidersLibComponent],\r\n entryComponents: [SlidersLibComponent],\r\n providers: [\r\n {\r\n provide: HAMMER_GESTURE_CONFIG,\r\n useClass: MyHammerConfig,\r\n },\r\n ],\r\n})\r\nexport class SlidersLibModule { }\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nconst API_END_POINTS = {\r\n PROVIDER_INSIGHTS: `/apis/proxies/v8/microsite/read/insights`,\r\n TRAINING_DETAILS: `apis/proxies/v8/sunbirdigot/search`,\r\n ANNOUNCEMENTS_DETAILS: `apis/proxies/v8/announcements/v1/search`,\r\n LEARNERS: `apis/proxies/v8/halloffame/top/learners`\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InsiteDataService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) {}\r\n fetchSearchData(request: any): Observable<any> {\r\n return this.http.post<any>(API_END_POINTS.PROVIDER_INSIGHTS, request)\r\n }\r\n\r\n fetchAnnouncementsData(request: any): Observable<any> {\r\n return this.http.post<any>(API_END_POINTS.ANNOUNCEMENTS_DETAILS, request)\r\n }\r\n\r\n\r\n fetchTrainingDetails(request: any): Observable<any> {\r\n return this.http.post<any>(API_END_POINTS.TRAINING_DETAILS, request)\r\n }\r\n\r\n fetchLearner(channelId: any): Observable<any> {\r\n return this.http.get(`${API_END_POINTS.LEARNERS}/${channelId}`)\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-data-points',\r\n templateUrl: './data-points.component.html',\r\n styleUrls: ['./data-points.component.css']\r\n})\r\nexport class DataPointsComponent implements OnInit {\r\n @Input() objectData: any\r\n @Input() layoutType: string = ''\r\n @Input() fetchDataFromApi: boolean = false\r\n @Input() providerId : any = ''\r\n @Input() pageLayout: any = ''\r\n customArray: any[][] = []\r\n isDataLoading: boolean = false\r\n \r\n constructor(public insightSvc: InsiteDataService) { }\r\n\r\n ngOnInit() {\r\n if (this.objectData && this.layoutType === 'gridLayout') {\r\n this.customArray = this.createCustomArray(this.objectData.metrics)\r\n }\r\n if(this.fetchDataFromApi) {\r\n this.isDataLoading = true\r\n this.getInsiteData()\r\n }\r\n } \r\n\r\n createCustomArray(arr: any[]): any[][] {\r\n const nByn: any[][] = []\r\n for (let i = 0; i < arr.length; i += this.objectData.dataColSpan) {\r\n nByn.push(arr.slice(i, i + this.objectData.dataColSpan))\r\n }\r\n return nByn \r\n }\r\n\r\n getInsiteData(){\r\n let request: any = {}\r\n request = {\r\n \"request\": {\r\n \"filters\": {\r\n \"organisations\": [\r\n this.providerId\r\n ]\r\n }\r\n }\r\n }\r\n if (this.pageLayout && this.pageLayout === 'mdo') {\r\n request = {\r\n \"request\": {\r\n \"filters\": {\r\n \"requestType\": \"MDO_INSIGHT\",\r\n \"organisations\": [\r\n this.providerId\r\n ]\r\n }\r\n }\r\n }\r\n }\r\n this.insightSvc.fetchSearchData(request).subscribe((res: any)=> {\r\n if(res && res.result && res.result.response && res.result.response.nudges && res.result.response.nudges.length) {\r\n res.result.response.nudges.forEach((nudgeData: any) => {\r\n if(this.providerId && this.providerId === nudgeData.orgId) {\r\n this.objectData = nudgeData.data\r\n }\r\n })\r\n }\r\n this.isDataLoading = false\r\n })\r\n\r\n }\r\n\r\n converToIndianSystem(value: any) {\r\n if (value) {\r\n let numStr = value.toString()\r\n let [integerPart, decimalPart] = numStr.split('.')\r\n let lastThree = integerPart.slice(-3);\r\n let otherNumbers = integerPart.slice(0, -3);\r\n if (otherNumbers !== '') {\r\n lastThree = ',' + lastThree;\r\n }\r\n let formattedIntegerPart = otherNumbers.replace(/\\B(?=(\\d{2})+(?!\\d))/g, ',') + lastThree;\r\n const result = decimalPart ? `${formattedIntegerPart}.${decimalPart.substr(0,2)}` : formattedIntegerPart;\r\n return result\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core'\r\n\r\n@Component({\r\n selector: 'sb-uic-skeleton-loader',\r\n templateUrl: './skeleton-loader-lib.component.html',\r\n styleUrls: ['./skeleton-loader-lib.component.scss'],\r\n})\r\nexport class SkeletonLoaderLibComponent implements OnInit {\r\n\r\n @Input() bindingClass = ''\r\n @Input() height = ''\r\n @Input() width = ''\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { SkeletonLoaderLibComponent } from './skeleton-loader-lib.component'\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\r\nimport { MatDialogModule, MatIconModule } from '@angular/material'\r\n\r\n@NgModule({\r\n declarations: [SkeletonLoaderLibComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatDialogModule,\r\n MatIconModule,\r\n ],\r\n exports: [\r\n SkeletonLoaderLibComponent,\r\n ],\r\n entryComponents: [SkeletonLoaderLibComponent],\r\n})\r\nexport class SkeletonLoaderLibModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DataPointsComponent } from './data-points.component';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [DataPointsComponent],\r\n imports: [\r\n CommonModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [DataPointsComponent],\r\n providers:[InsiteDataService]\r\n})\r\nexport class DataPointsModule { }\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n \r\n} from '@angular/core';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-calender',\r\n templateUrl: './calender.component.html',\r\n styleUrls: ['./calender.component.scss']\r\n})\r\nexport class CalenderComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() layoutType: any\r\n @Input() fetchDataFromApi: boolean = false\r\n @Input() showHeader: boolean = false\r\n @Input() defaultDays: number = 3\r\n @Input() providerId: any\r\n @Input() fullCalendor: boolean = false\r\n days = []\r\n trainings: any = {}\r\n currentMonthAndYear: any\r\n isDataLoading: boolean = false\r\n currentDate: any = new Date()\r\n endDate: any\r\n startDate: any\r\n allMonths = [\"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ]\r\n monthsDropdown: any = []\r\n selectedMonth: any\r\n constructor(private datePipe: DatePipe, public insightSvc: InsiteDataService) { }\r\n\r\n ngOnInit() {\r\n this.currentMonthAndYear = this.datePipe.transform(this.currentDate, 'MMMM y')\r\n this.selectedMonth = this.datePipe.transform(this.currentDate, 'LLLL yyyy')\r\n if (this.fullCalendor) {\r\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\r\n this.getMonthsDropdownData()\r\n }\r\n if (!this.fullCalendor) {\r\n this.days = this.getDays(this.currentDate, +this.defaultDays)\r\n }\r\n this.startDate = this.days[0]\r\n this.endDate = this.days[this.days.length - 1]\r\n if(this.fetchDataFromApi) {\r\n this.isDataLoading = true\r\n this.getInsiteData()\r\n }\r\n }\r\n getInsiteData() {\r\n let request = {\r\n \"locale\": [\r\n \"en\"\r\n ],\r\n \"query\": \"\",\r\n \"request\": {\r\n \"query\": \"\",\r\n \"filters\": {\r\n \"category\": [\r\n \"Calendar\"\r\n ],\r\n \"status\": [\r\n \"Live\",\r\n \"Retired\"\r\n ],\r\n \"contentType\": \"Event\",\r\n \"startDate\": {\r\n \">=\": this.startDate,\r\n \"<=\": this.endDate\r\n // \">=\": \"2024-01-15\",\r\n // \"<\": \"2024-05-31\"\r\n },\r\n \"channel\": [this.providerId]\r\n },\r\n \"sort_by\": {\r\n \"lastUpdatedOn\": \"desc\"\r\n }\r\n }\r\n }\r\n this.insightSvc.fetchTrainingDetails(request).subscribe((res: any)=> {\r\n if (res && res.result && res.result.Event) {\r\n res.result.Event.forEach((resp: any) => {\r\n if (this.trainings[resp.startDate]) {\r\n let prevData = this.trainings[resp.startDate]\r\n let location = resp.eventType\r\n if (resp.location && location !== \"Online\") {\r\n const jsonResp = JSON.parse(resp.location)\r\n location = jsonResp['address']\r\n }\r\n const formatObject = {\r\n location: location,\r\n startTime: this.convertTo12HourFormat(resp.startTime),\r\n endTime: this.convertTo12HourFormat(resp.endTime),\r\n title: resp.name,\r\n startDate: this.formatDate(resp.startDate),\r\n endDate: this.formatDate(resp.endDate),\r\n registrationLink: resp.registrationLink,\r\n }\r\n prevData.push(formatObject)\r\n this.trainings[resp.startDate] = prevData\r\n }\r\n })\r\n }\r\n this.isDataLoading = false\r\n })\r\n }\r\n\r\n getKeys(obj: any): string[] {\r\n return Object.keys(obj);\r\n }\r\n\r\n formatDate(date: any) {\r\n let formatDate = new Date(date)\r\n return this.datePipe.transform(formatDate, 'E, dd LLL')\r\n }\r\n\r\n convertTo12HourFormat(timeString: string): string {\r\n const time = timeString.split(\":\")\r\n let hours = +time[0]\r\n const minutes = +time[1]\r\n const ampm = hours >= 12 ? 'PM' : 'AM'\r\n hours = hours % 12\r\n hours = hours ? hours : 12\r\n const strHours = hours < 10 ? '0' + hours : hours.toString()\r\n const strMinutes = minutes < 10 ? '0' + minutes : minutes.toString()\r\n return `${strHours}:${strMinutes} ${ampm}`\r\n }\r\n\r\n getDays(cDate: any, counter: number) {\r\n const days: any = []\r\n let initDate: any = new Date(cDate)\r\n initDate = this.datePipe.transform(initDate, 'y-MM-dd')\r\n days.push(initDate)\r\n this.trainings[initDate] = []\r\n while (counter > 0) {\r\n let myDate: any = new Date(cDate)\r\n myDate = myDate.setDate(myDate.getDate() + 1)\r\n cDate = myDate\r\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\r\n days.push(myDate)\r\n this.trainings[myDate] = []\r\n counter = counter - 1\r\n }\r\n return days\r\n }\r\n\r\n getDaysInMonth(year: number, month: number): Date[] {\r\n const date = new Date(year, month, 1)\r\n const days: any = []\r\n this.trainings = {}\r\n while (date.getMonth() === month) {\r\n let myDate: any = new Date(date)\r\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\r\n days.push(myDate)\r\n this.trainings[myDate] = []\r\n date.setDate(date.getDate() + 1)\r\n }\r\n return days\r\n }\r\n\r\n getMonthsDropdownData() {\r\n this.allMonths.forEach((month: any) => {\r\n this.monthsDropdown.push(`${month} ${this.currentDate.getFullYear()}`)\r\n })\r\n }\r\n\r\n selectMonth(event: any) {\r\n const selectedMonth: any = new Date(event)\r\n this.currentDate = selectedMonth\r\n this.days = []\r\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\r\n this.startDate = this.days[0]\r\n this.endDate = this.days[this.days.length - 1]\r\n this.isDataLoading = true\r\n this.getInsiteData()\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sb-uic-calender-day',\r\n templateUrl: './calender-day.component.html',\r\n styleUrls: ['./calender-day.component.scss']\r\n})\r\nexport class CalenderDayComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() layoutType: any\r\n @Input() day: any\r\n @Input() dataLoading: boolean\r\n @Input() rowId: any\r\n @Input() eventDate: any\r\n webDisplayDate: string = \"\"\r\n mobileDisplayDate: string = \"\"\r\n currentDate: any = new Date()\r\n\r\n constructor(private datePipe: DatePipe) { }\r\n\r\n ngOnInit() {\r\n this.currentDate = this.datePipe.transform(this.currentDate, 'y-MM-dd')\r\n }\r\n\r\n openLink(link: string) {\r\n window.open(link, \"_blank\")\r\n }\r\n\r\n formatDate(date: any, type: string) {\r\n let fDate = new Date(date)\r\n if (type === 'web') {\r\n return this.datePipe.transform(fDate, 'E, dd LLL')\r\n }\r\n if (type === 'mob') {\r\n return this.datePipe.transform(fDate, 'E dd LLL')\r\n }\r\n }\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { CalenderComponent } from './calender.component';\r\nimport { MatIconModule, MatSelectModule } from '@angular/material';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { CalenderDayComponent } from './calender-day/calender-day.component';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n declarations: [CalenderComponent, CalenderDayComponent],\r\n exports: [CalenderComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers:[DatePipe, InsiteDataService],\r\n})\r\nexport class CalenderModule {}","import { Injectable } from '@angular/core';\r\nimport { NsContent } from '../_models/widget-content.model';\r\nimport { NsContentStripWithTabs } from '../_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model';\r\nimport { NsCommonStrip } from '../_common/common-strip/common-strip.model'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonMethodsService {\r\n\r\n constructor() { }\r\n\r\n transformContentsToWidgets(\r\n contents: NsContent.IContent[],\r\n strip: NsContentStripWithTabs.IContentStripUnit | NsCommonStrip.ICommonStripUnit,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n transformSkeletonToWidgets(\r\n strip: any\r\n ) {\r\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n },\r\n }));\r\n }\r\n\r\n handleCapitalize(str: string, type?: string): string {\r\n let returnValue = ''\r\n if (str) {\r\n if (type === 'name') {\r\n returnValue = str.split(' ').map(_str => {\r\n return _str.charAt(0).toUpperCase() + _str.slice(1)\r\n }).join(' ')\r\n } else {\r\n\r\n returnValue = str && (str.charAt(0).toUpperCase() + str.slice(1))\r\n }\r\n }\r\n return returnValue\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject } from '@angular/core';\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\r\nimport { NsCommonStrip } from './common-strip.model';\r\n// import { HttpClient } from '@angular/common/http'\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { NsContent } from '../../_models/widget-content.model';\r\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\r\nimport {\r\n TFetchStatus,\r\n LoggerService,\r\n EventService,\r\n ConfigurationsService,\r\n UtilityService,\r\n} from '@sunbird-cb/utils-v2';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { WidgetUserService } from '../../_services/widget-user.service';\r\n// import { environment } from 'src/environments/environment'\r\n// tslint:disable-next-line\r\nimport * as _ from 'lodash'\r\nimport { MatTabChangeEvent } from '@angular/material';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CommonMethodsService } from '../../_services/common-methods.service';\r\n\r\n\r\ninterface IStripUnitCommonData {\r\n key: string;\r\n canHideStrip: boolean;\r\n mode?: string;\r\n showStrip: boolean;\r\n disableTranslate: boolean;\r\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\r\n stripTitle: string;\r\n stripTitleLink?: {\r\n link: {\r\n queryParams: string\r\n },\r\n icon: string,\r\n queryParams: string\r\n };\r\n sliderConfig?: {\r\n showNavs: boolean,\r\n showDots: boolean,\r\n maxWidgets?: number\r\n cerificateCardMargin?: boolean\r\n };\r\n stripConfig: any;\r\n tabs?: NsCommonStrip.ICommonStripTab[] | undefined;\r\n stripName?: string;\r\n stripLogo?: string;\r\n description?: string;\r\n stripInfo?: NsCommonStrip.IStripInfo;\r\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n showOnNoData: boolean;\r\n showOnLoader: boolean;\r\n showOnError: boolean;\r\n loaderWidgets?: any;\r\n stripBackground?: string;\r\n secondaryHeading?: any;\r\n viewMoreUrl: any;\r\n}\r\n\r\n@Component({\r\n selector: 'sb-uic-common-strip',\r\n templateUrl: './common-strip.component.html',\r\n styleUrls: ['./common-strip.component.scss']\r\n})\r\nexport class CommonStripComponent extends WidgetBaseComponent\r\nimplements\r\nOnInit,\r\nOnDestroy,\r\nNsWidgetResolver.IWidgetData<NsCommonStrip.ICommonStrip> {\r\n @Input() widgetData!: NsCommonStrip.ICommonStrip;\r\n @HostBinding('id')\r\n public id = `ws-strip-miltiple_${Math.random()}`;\r\n stripsResultDataMap: { [key: string]: IStripUnitCommonData } = {};\r\n stripsKeyOrder: string[] = [];\r\n showAccordionData = true;\r\n showParentLoader = false;\r\n showParentError = false;\r\n showParentNoData = false;\r\n errorDataCount = 0;\r\n noDataCount = 0;\r\n successDataCount = 0;\r\n contentAvailable = true;\r\n baseUrl = this.configSvc.sitePath || '';\r\n veifiedKarmayogi = false;\r\n environment!: any;\r\n changeEventSubscription: Subscription | null = null;\r\n defaultMaxWidgets = 12;\r\n enrollInterval: any;\r\n todaysEvents: any = [];\r\n\r\n constructor(\r\n @Inject('environment') environment: any,\r\n private contentSvc: WidgetContentService,\r\n private loggerSvc: LoggerService,\r\n private eventSvc: EventService,\r\n private configSvc: ConfigurationsService,\r\n public utilitySvc: UtilityService,\r\n // private http: HttpClient,\r\n // private searchServSvc: SearchServService,\r\n private userSvc: WidgetUserService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private commonMethodsSvc: CommonMethodsService\r\n ) {\r\n super();\r\n this.environment = environment\r\n }\r\n\r\n ngOnInit() {\r\n // const url = window.location.href\r\n this.initData();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.changeEventSubscription) {\r\n this.changeEventSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n showAccordion(key: string) {\r\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\r\n return this.showAccordionData;\r\n }\r\n return true;\r\n }\r\n\r\n setHiddenForStrip(key: string) {\r\n this.stripsResultDataMap[key].showStrip = false;\r\n sessionStorage.setItem(`cstrip_${key}`, '1');\r\n }\r\n private getIfStripHidden(key: string): boolean {\r\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\r\n return Boolean(storageItem !== '1');\r\n }\r\n\r\n private initData() {\r\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\r\n if (this.widgetData.loader && this.widgetData.strips.length) {\r\n this.showParentLoader = true;\r\n }\r\n // null check if in case no strips key in config\r\n if(this.widgetData && this.widgetData.strips) {\r\n // Fetch the data\r\n for (const strip of this.widgetData.strips) {\r\n this.processStrip(strip, [], 'fetching', false, null);\r\n if(strip.dataType === 'in-hand' && this.widgetData[strip.dataKey]){\r\n this.processStrip(\r\n strip,\r\n this.commonMethodsSvc.transformContentsToWidgets(this.widgetData[strip.dataKey], strip),\r\n 'done',\r\n true,\r\n strip.viewMoreUrl || '',\r\n );\r\n } else {\r\n if (this.checkForEmptyWidget(strip)) {\r\n // this.fetchStripFromRequestData(strip, false);\r\n } else {\r\n this.processStrip(strip, [], 'done', true, null);\r\n }\r\n }\r\n }\r\n }\r\n // Subscription for changes\r\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\r\n .map(strip => ({\r\n key: strip.key,\r\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\r\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\r\n }))\r\n .filter(({ key, type, from }) => key && type && from);\r\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\r\n this.changeEventSubscription = this.eventSvc.events$\r\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\r\n .subscribe(event => {\r\n keyAndEvent\r\n .filter(e => e.type === event.eventType && e.from === event.from)\r\n .map(e => e.key)\r\n .forEach(k => this.fetchStripFromKey(k, false));\r\n });\r\n }\r\n\r\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\r\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\r\n if (stripData) {\r\n // this.fetchStripFromRequestData(stripData, calculateParentStatus);\r\n }\r\n }\r\n\r\n isStripShowing(data: any) {\r\n let count = 0;\r\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\r\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\r\n data.widgets.forEach((key: any) => {\r\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\r\n count = count + 1;\r\n }\r\n });\r\n if (count > 0) {\r\n data.showStrip = true;\r\n } else {\r\n data.showStrip = false;\r\n }\r\n }\r\n return data.showStrip;\r\n }\r\n\r\n get isMobile() {\r\n return this.utilitySvc.isMobile || false;\r\n }\r\n\r\n getdata(data: IStripUnitCommonData) {\r\n if (data.stripInfo) {\r\n return data.stripInfo.widget;\r\n }\r\n return {};\r\n\r\n }\r\n checkCondition(wData: NsCommonStrip.ICommonStrip, data: IStripUnitCommonData) {\r\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\r\n return !wData.strips[0].stripConfig.hideShowAll;\r\n }\r\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\r\n }\r\n checkVisible(data: IStripUnitCommonData) {\r\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\r\n }\r\n\r\n getContineuLearningLenth(data: IStripUnitCommonData) {\r\n return data.widgets ? data.widgets.length : 0;\r\n }\r\n getLength(data: IStripUnitCommonData) {\r\n if (!data.tabs || !data.tabs.length) {\r\n return data.widgets ? data.widgets.length : 0;\r\n } {\r\n // if tabs are there check if each tab has widgets and get the tab with max widgets\r\n const tabWithMaxWidgets = data.tabs.reduce(\r\n (prev, current) => {\r\n if (!prev.widgets && !current.widgets) {\r\n return current;\r\n }\r\n if (prev.widgets && current.widgets) {\r\n return (prev.widgets.length > current.widgets.length) ? prev : current;\r\n }\r\n if (current.widgets && !prev.widgets) {\r\n return current;\r\n }\r\n if (!current.widgets && prev.widgets) {\r\n return prev;\r\n }\r\n return current;\r\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\r\n // tslint:disable-next-line: align\r\n }, data.tabs[0]);\r\n // if tabs has atleast 1 widgets then strip will show or else not\r\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\r\n }\r\n }\r\n \r\n private async processStrip(\r\n strip: NsCommonStrip.ICommonStripUnit,\r\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\r\n fetchStatus: TFetchStatus,\r\n calculateParentStatus = true,\r\n _viewMoreUrl: any,\r\n tabsResults?: NsCommonStrip.ICommonStripTab[] | undefined,\r\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\r\n ) {\r\n const stripData = {\r\n viewMoreUrl: strip.viewMoreUrl,\r\n key: strip.key,\r\n canHideStrip: Boolean(strip.canHideStrip),\r\n showStrip: this.getIfStripHidden(strip.key),\r\n noDataWidget: strip.noDataWidget,\r\n errorWidget: strip.errorWidget,\r\n stripInfo: strip.info,\r\n stripTitle: strip.title,\r\n stripTitleLink: strip.stripTitleLink,\r\n dataType: strip.dataType,\r\n dataKey: strip.dataKey,\r\n disableTranslate: strip.disableTranslate,\r\n sliderConfig: strip.sliderConfig,\r\n tabs: tabsResults ? tabsResults : strip.tabs,\r\n stripName: strip.name,\r\n mode: strip.mode,\r\n stripConfig: strip.stripConfig,\r\n stripBackground: strip.stripBackground,\r\n secondaryHeading: strip.secondaryHeading,\r\n loaderWidgets: strip.loaderWidgets || [],\r\n widgets:\r\n fetchStatus === 'done'\r\n ? [\r\n ...(strip.preWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ...results,\r\n ...(strip.postWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ]\r\n : [],\r\n showOnNoData: Boolean(\r\n strip.noDataWidget &&\r\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\r\n fetchStatus === 'done',\r\n ),\r\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\r\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\r\n };\r\n // const stripData = this.stripsResultDataMap[strip.key]\r\n this.stripsResultDataMap = {\r\n ...this.stripsResultDataMap,\r\n [strip.key]: stripData,\r\n };\r\n if (!tabsResults) {\r\n if (\r\n calculateParentStatus &&\r\n (fetchStatus === 'done' || fetchStatus === 'error') &&\r\n stripData.widgets\r\n ) {\r\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\r\n }\r\n if (calculateParentStatus && !(results && results.length > 0)) {\r\n this.contentAvailable = false;\r\n } else if (results && results.length > 0) {\r\n this.contentAvailable = true;\r\n }\r\n } else {\r\n this.contentAvailable = true;\r\n }\r\n }\r\n\r\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\r\n let returnValue = 0;\r\n if (key === 'cbpPlan') {\r\n if (stripsResultDataMap.tabs.length) {\r\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\r\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\r\n }\r\n }\r\n return returnValue;\r\n }\r\n \r\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\r\n if (fetchStatus === 'done' && !stripWidgetsCount) {\r\n this.noDataCount += 1;\r\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\r\n this.successDataCount += 1;\r\n } else if (fetchStatus === 'error') {\r\n this.errorDataCount += 1;\r\n }\r\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\r\n const totalCount = this.widgetData.strips.length;\r\n if (this.successDataCount > 0 && settledCount < totalCount) {\r\n return;\r\n }\r\n this.showParentLoader = settledCount !== totalCount;\r\n this.showParentNoData =\r\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\r\n this.showParentError = this.errorDataCount === totalCount;\r\n }\r\n checkForEmptyWidget(strip: NsCommonStrip.ICommonStripUnit): boolean {\r\n if (\r\n strip.request &&\r\n ((strip.request.api && Object.keys(strip.request.api).length) ||\r\n (strip.request.search && Object.keys(strip.request.search).length) ||\r\n (strip.request.searchRegionRecommendation &&\r\n Object.keys(strip.request.searchRegionRecommendation).length) ||\r\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\r\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\r\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\r\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length)\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitCommonData, stripKey: string) {\r\n\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateLabel(label, type, '');\r\n }\r\n\r\n identify(index: number, item: any) {\r\n if (index >= 0) { }\r\n return item;\r\n }\r\n tracker(index: number, item: any) {\r\n if (index >= 0) { }\r\n return _.get(item, 'widgetData.content.identifier')\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CommonStripComponent } from './common-strip.component';\r\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\r\nimport {\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule} from '@angular/material';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\r\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\r\n\r\n@NgModule({\r\n declarations: [CommonStripComponent],\r\n imports: [\r\n SbUiResolverModule,\r\n CommonModule,\r\n RouterModule,\r\n HorizontalScrollerV2Module,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule,\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 ],\r\n exports: [CommonStripComponent]\r\n})\r\nexport class CommonStripModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-announcements',\r\n templateUrl: './announcements.component.html',\r\n styleUrls: ['./announcements.component.scss']\r\n})\r\nexport class AnnouncementsComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() layoutType: any\r\n @Input() mobileHeight: boolean = false\r\n @Input() fetchDataFromApi: boolean = false\r\n @Input() channelId: any\r\n @Output() openDialog = new EventEmitter<any>()\r\n isLoading: boolean = false\r\n announcements: any = []\r\n expand = false\r\n expanded: boolean = false\r\n\r\n constructor(public insightSvc: InsiteDataService) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.fetchDataFromApi) {\r\n this.isLoading = true\r\n this.fetchData()\r\n }\r\n }\r\n\r\n fetchData() {\r\n let request = {\r\n filterCriteriaMap: {\r\n channel: [this.channelId],\r\n //channel: [\"01381906916850892825\"],\r\n },\r\n requestedFields: [\r\n \"name\",\r\n \"description\",\r\n \"createdOn\",\r\n \"updatedOn\",\r\n \"category\"\r\n ],\r\n orderBy: \"createdOn\",\r\n orderDirection: \"ASC\",\r\n facets: [\r\n \"channel\"\r\n ],\r\n pageSize: this.objectData.pageSize\r\n }\r\n this.insightSvc.fetchAnnouncementsData(request).subscribe((res: any)=> {\r\n if(res && res.result && res.result.data) {\r\n res.result.data.forEach((resp: any) => {\r\n this.announcements.push({\r\n value: resp.description,\r\n expanded: false\r\n })\r\n })\r\n }\r\n if (this.announcements.length > 3) {\r\n this.expand = true\r\n }\r\n this.objectData.list = this.announcements\r\n this.isLoading = false\r\n }, error => {\r\n console.log(error)\r\n this.objectData.list = []\r\n this.isLoading = false\r\n })\r\n }\r\n\r\n viewMoreOrLess(item: any) {\r\n if (item.value.length > 152) {\r\n item.expanded = !item.expanded\r\n }\r\n }\r\n\r\n openAnnouncements() {\r\n this.openDialog.emit(true)\r\n }\r\n\r\n showMoreOrLess() {\r\n this.expanded = !this.expanded\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { AnnouncementsComponent } from './announcements.component';\r\nimport { MatIconModule } from '@angular/material';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AnnouncementsComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [AnnouncementsComponent],\r\n})\r\nexport class AnnouncementsModule { }","import { Component, Input, OnInit } from '@angular/core';\r\nimport * as moment_ from 'moment';\r\nimport { InsiteDataService } from '../../_services/insite-data.service';\r\nconst moment = moment_;\r\n@Component({\r\n selector: 'sb-uic-top-learners',\r\n templateUrl: './top-learners.component.html',\r\n styleUrls: ['./top-learners.component.scss']\r\n})\r\nexport class TopLearnersComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() channelId: any\r\n @Input() channnelName: any\r\n loading: boolean = false\r\n month: string = ''\r\n results: any = []\r\n\r\n colors: any = [\r\n '#EB7181', // red\r\n '#306933', // green\r\n '#000000', // black\r\n '#3670B2', // blue\r\n '#4E9E87',\r\n '#7E4C8D',\r\n '#EB7181', // red\r\n '#306933', // green\r\n '#000000', // black\r\n '#3670B2', // blue\r\n ]\r\n\r\n constructor(public insightSvc: InsiteDataService,) { }\r\n\r\n ngOnInit() {\r\n this.getData()\r\n this.month = new Date().toLocaleString('default', { month: 'long' })\r\n }\r\n\r\n getData() {\r\n this.loading = true\r\n this.insightSvc.fetchLearner(this.channelId).subscribe((res: any)=> {\r\n if (res && res.result && res.result.result && res.result.result.length) {\r\n this.results = res.result.result\r\n this.month = moment().month(Number(res.result.result[0].month) - 1).format('MMMM')\r\n }\r\n this.loading = false\r\n }, (_error: any) => {\r\n // tslint:disable-next-line: align\r\n this.loading = false\r\n })\r\n }\r\n\r\n getRank(rank: number) {\r\n if (rank === 1) {\r\n return \"1st\"\r\n } \r\n if (rank === 2) {\r\n return \"2nd\"\r\n } \r\n if (rank === 3) {\r\n return \"3rd\"\r\n } else {\r\n return `${rank}th`\r\n } \r\n }\r\n\r\n getColor() {\r\n let circleColor = ''\r\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\r\n circleColor = this.colors[randomIndex]\r\n return circleColor\r\n }\r\n\r\n createInititals(name: string) {\r\n let initials = ''\r\n const array = name.toString().split(' ')\r\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\r\n initials += array[0].charAt(0)\r\n initials += array[1].charAt(0)\r\n } else {\r\n for (let i = 0; i < name.length; i += 1) {\r\n if (name.charAt(i) === ' ') {\r\n continue\r\n }\r\n if (name.charAt(i) === name.charAt(i)) {\r\n initials += name.charAt(i)\r\n\r\n if (initials.length === 2) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n return initials.toUpperCase()\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TopLearnersComponent } from './top-learners.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { MatTooltipModule } from '@angular/material';\r\n\r\n@NgModule({\r\n declarations: [TopLearnersComponent],\r\n imports: [\r\n CommonModule,\r\n SkeletonLoaderLibModule,\r\n MatTooltipModule\r\n ],\r\n exports: [TopLearnersComponent],\r\n})\r\nexport class TopLearnersModule { }","import { Directive, Input, ElementRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sbUicScrollableItem]'\r\n})\r\nexport class ScrollableItemDirective {\r\n\r\n @Input('sbUicScrollableItem') public key: string\r\n constructor(private el: ElementRef<HTMLElement>) {}\r\n\r\n public scrollIntoView(blockValue: any) {\r\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: blockValue });\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { ScrollableItemDirective } from '../../_directives/scrollable-item/scrollable-item.directive';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-cbp-plan',\r\n templateUrl: './cbp-plan.component.html',\r\n styleUrls: ['./cbp-plan.component.scss']\r\n})\r\nexport class CbpPlanComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() layoutType: any\r\n @Input() mobileHeight: boolean = false\r\n @Input() fetchDataFromApi: boolean = false\r\n @Input() channelId: any\r\n @Output() openDialog = new EventEmitter<any>()\r\n isLoading: boolean = false\r\n currentIndex = 0\r\n styleData: any = {}\r\n contentdata: any = []\r\n\r\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\r\n constructor(private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService) { }\r\n\r\n ngOnInit() {\r\n this.styleData = this.objectData && this.objectData.sliderData && this.objectData.sliderData.styleData\r\n if (this.objectData && this.objectData.list) {\r\n this.objectData.list.forEach((contentEle: any) => {\r\n let localData = {}\r\n localData['title'] = contentEle.title\r\n localData['downloaUrl'] = contentEle.downloaUrl\r\n localData['cardSubType'] = \"card-wide-lib\"\r\n localData['cardCustomeClass'] = \"\"\r\n this.contentdata.push(localData)\r\n })\r\n }\r\n }\r\n\r\n getCurrentIndex(indexValue: any) {\r\n this.currentIndex = indexValue\r\n }\r\n\r\n getFileName(item: any) {\r\n console.log(item.downloadUrl)\r\n return item.downloadUrl.split(\"/\").at(-1)\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateActualLabel(label, type, '');\r\n }\r\n\r\n downloadCBPPlan(item: any) {\r\n const downloadUrl = item.downloaUrl\r\n const xhr = new XMLHttpRequest()\r\n xhr.open('GET', downloadUrl, true)\r\n xhr.responseType = 'blob'\r\n\r\n xhr.onload = function() {\r\n if (xhr.status === 200) {\r\n const blob = new Blob([xhr.response], { type: 'application/pdf' })\r\n const url = window.URL.createObjectURL(blob)\r\n const a = document.createElement('a')\r\n a.href = url\r\n a.download = downloadUrl.split(\"/\").at(-1)\r\n document.body.appendChild(a)\r\n a.click()\r\n document.body.removeChild(a)\r\n window.URL.revokeObjectURL(url)\r\n } else {\r\n console.error('Error downloading the PDF', xhr.statusText)\r\n }\r\n }\r\n xhr.onerror = function() {\r\n console.error('Network error')\r\n }\r\n xhr.send()\r\n }\r\n}\r\n","import { Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core'\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\r\nimport { ICarousel, ICarouselStyle } from './sliders-ng-content.model'\r\nimport { Subscription, interval } from 'rxjs'\r\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\r\n\r\n@Component({\r\n selector: 'sb-uic-sliders-ng-content',\r\n templateUrl: './sliders-ng-content.component.html',\r\n styleUrls: ['./sliders-ng-content.component.scss'],\r\n})\r\nexport class SlidersNgContentLibComponent extends WidgetBaseComponent\r\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\r\n @Input() widgetData!: ICarousel[]\r\n @Input() styleData!: ICarouselStyle\r\n @Input() title: any = ''\r\n @Input() loadNgContentData: boolean = false\r\n @Input() autoScroll: boolean = false\r\n @Output() currentIndexValue = new EventEmitter<any>()\r\n \r\n @HostBinding('id')\r\n public id = `banner_${Math.random()}`\r\n private defaultMenuSubscribe: Subscription | null = null\r\n isLtMedium$ = this.valueSvc.isLtMedium$\r\n @Input() currentIndex = 0\r\n slideInterval: Subscription | null = null\r\n isMobile = false\r\n\r\n constructor(\r\n private events: EventService,\r\n private valueSvc: ValueService\r\n ) {\r\n super()\r\n }\r\n\r\n ngOnInit() {\r\n if(this.autoScroll) {\r\n this.reInitiateSlideInterval()\r\n }\r\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\r\n this.isMobile = isLtMedium\r\n })\r\n }\r\n reInitiateSlideInterval() {\r\n if (this.widgetData && this.widgetData.length > 1) {\r\n try {\r\n if (this.slideInterval) {\r\n this.slideInterval.unsubscribe()\r\n }\r\n } catch (e) {\r\n } finally {\r\n this.slideInterval = interval(8000).subscribe(() => {\r\n if (this.currentIndex === this.widgetData.length - 1) {\r\n this.currentIndex = 0\r\n this.currentIndexValue.emit(this.currentIndex)\r\n } else {\r\n this.currentIndex += 1\r\n this.currentIndexValue.emit(this.currentIndex)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n slideTo(index: number) {\r\n if (index >= 0 && index < this.widgetData.length) {\r\n this.currentIndex = index\r\n this.currentIndexValue.emit(this.currentIndex)\r\n } else if (index === this.widgetData.length) {\r\n this.currentIndex = 0\r\n this.currentIndexValue.emit(this.currentIndex)\r\n } else {\r\n this.currentIndex = this.widgetData.length + index\r\n this.currentIndexValue.emit(this.currentIndex)\r\n }\r\n if(this.autoScroll) {\r\n this.reInitiateSlideInterval()\r\n }\r\n }\r\n\r\n get isOpenInNewTab() {\r\n const currentData = this.widgetData[this.currentIndex]\r\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\r\n return true\r\n } return false\r\n }\r\n\r\n openInNewTab() {\r\n const currentData = this.widgetData[this.currentIndex]\r\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\r\n window.open(currentData.redirectUrl)\r\n }\r\n }\r\n raiseTelemetry(bannerUrl: string | undefined) {\r\n this.openInNewTab()\r\n const path = window.location.pathname.replace('/', '')\r\n const url = path + window.location.search\r\n\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'banner',\r\n },\r\n {\r\n pageUrl: url,\r\n bannerRedirectUrl: bannerUrl,\r\n },\r\n {\r\n pageIdExt: 'banner',\r\n module: WsEvents.EnumTelemetrymodules.CONTENT,\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.defaultMenuSubscribe) {\r\n this.defaultMenuSubscribe.unsubscribe()\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { SlidersNgContentLibComponent } from './sliders-ng-content.component'\r\nimport { RouterModule } from '@angular/router'\r\nimport { ImageResponsiveModule } from '../../_directives/image-responsive/image-responsive.module'\r\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\r\n/* tslint:disable */\r\nimport Hammer from 'hammerjs'\r\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\r\n/* tslint:enable */\r\nexport class MyHammerConfig extends HammerGestureConfig {\r\n buildHammer(element: HTMLElement) {\r\n const mc = new Hammer(element, {\r\n touchAction: 'pan-y',\r\n })\r\n return mc\r\n }\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\n@NgModule({\r\n declarations: [SlidersNgContentLibComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n NavigationModule,\r\n ImageResponsiveModule,\r\n ],\r\n exports: [SlidersNgContentLibComponent],\r\n entryComponents: [SlidersNgContentLibComponent],\r\n providers: [\r\n {\r\n provide: HAMMER_GESTURE_CONFIG,\r\n useClass: MyHammerConfig,\r\n },\r\n ],\r\n})\r\nexport class SlidersNgContentLibModule { }\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ScrollableItemDirective } from './scrollable-item.directive'\r\n\r\n@NgModule({\r\n declarations: [ScrollableItemDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ScrollableItemDirective],\r\n})\r\nexport class ScrollableItemModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CbpPlanComponent } from './cbp-plan.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { MatIconModule } from '@angular/material';\r\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\r\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [CbpPlanComponent],\r\n imports: [\r\n CommonModule,\r\n SkeletonLoaderLibModule,\r\n MatIconModule,\r\n ScrollableItemModule,\r\n SlidersNgContentLibModule,\r\n ],\r\n exports: [CbpPlanComponent]\r\n})\r\nexport class CbpPlanModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { ConsumptionComponent } from './consumption.component';\r\nimport { ContentStripWithTabsLibModule } from './_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\r\nimport { SlidersLibModule } from '../lib/_common/sliders/sliders.module';\r\nimport { DataPointsModule } from './_common/data-points/data-points.module';\r\nimport { CalenderModule } from './_common/calender/calender.module';\r\nimport { CommonStripModule } from './_common/common-strip/common-strip.module';\r\nimport { AnnouncementsModule } from './_common/announcements/announcements.module';\r\nimport { TopLearnersModule } from './_common/top-learners/top-learners.module';\r\nimport { CbpPlanModule } from './_common/cbp-plan/cbp-plan.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ConsumptionComponent,],\r\n imports: [\r\n ContentStripWithTabsLibModule,\r\n SlidersLibModule\r\n ],\r\n exports: [ConsumptionComponent,\r\n ContentStripWithTabsLibModule,\r\n SlidersLibModule,\r\n DataPointsModule,\r\n CalenderModule,\r\n CommonStripModule,\r\n AnnouncementsModule,\r\n TopLearnersModule,\r\n CbpPlanModule,\r\n ],\r\n})\r\nexport class ConsumptionModule { }\r\n","export const ROOT_WIDGET_CONFIG = {\r\n \r\n card: {\r\n _type: 'cardLib',\r\n cardResource: 'cardContentLib'\r\n },\r\n}\r\n","import { NsContent } from './widget-content.model';\r\n\r\nexport namespace NsCardContent {\r\n export interface ICard {\r\n content: NsContent.IContent;\r\n cardSubType: TCardSubType;\r\n context: { pageSection: string; position?: number };\r\n intranetMode?: 'greyOut' | 'hide';\r\n deletedMode?: 'greyOut' | 'hide';\r\n likes?: number;\r\n contentTags?: IContentTags;\r\n stateData: any;\r\n cardCustomeClass?: any;\r\n }\r\n\r\n export interface IContentTags {\r\n daysSpan?: number;\r\n excludeContentType?: NsContent.EContentTypes[];\r\n excludeMimeType?: string[];\r\n tag: string;\r\n criteriaField?: string;\r\n }\r\n\r\n export type TCardSubType =\r\n | 'standard'\r\n | 'minimal'\r\n | 'space-saving'\r\n | 'card-user-details'\r\n | 'basic-info'\r\n | 'basic-details'\r\n | 'card-description-back'\r\n | 'network-card'\r\n | 'user-card';\r\n\r\n export enum EContentStatus {\r\n LIVE = 'Live',\r\n EXPIRED = 'Expired',\r\n DELETED = 'Deleted',\r\n MARK_FOR_DELETION = 'MarkedForDeletion',\r\n }\r\n export enum ACBPConst {\r\n UPCOMING = 'upcoming',\r\n ALL = 'All',\r\n OVERDUE = 'overdue',\r\n SUCCESS = 'success',\r\n }\r\n\r\n export enum IGOTConst {\r\n COMPETENCIES = 'competencies_v5',\r\n RETIRED = 'Retired',\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { WidgetBaseComponent, NsWidgetResolver } from '@sunbird-cb/resolver-v2';\r\nimport { NsCardContent } from '../../_models/card-content.model';\r\nimport { UtilityService } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-cards',\r\n templateUrl: './cards.component.html',\r\n styleUrls: ['./cards.component.scss']\r\n})\r\nexport class CardsComponent extends WidgetBaseComponent\r\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Output() triggerTelemetry = new EventEmitter<any>()\r\n isIntranetAllowedSettings = false\r\n cbPlanMapData: any\r\n cbPlanInterval: any\r\n enrollInterval: any\r\n enrollmentMapData: any\r\n constructor(private utilitySvc: UtilityService,\r\n private contSvc: WidgetContentService,\r\n public router: Router\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.cbPlanInterval = setInterval(() => {\r\n this.getCbPlanData()\r\n }, 1000)\r\n \r\n this.enrollInterval = setInterval(() => {\r\n this.getEnrollmentData()\r\n // tslint:disable-next-line\r\n }, 1000)\r\n }\r\n\r\n get isLiveOrMarkForDeletion() {\r\n if (\r\n !this.widgetData.content.status ||\r\n this.widgetData.content.status === 'Live' ||\r\n this.widgetData.content.status === 'MarkedForDeletion'\r\n ) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n get showIntranetContent() {\r\n if (this.widgetData.content.isInIntranet && this.utilitySvc.isMobile) {\r\n return !this.isIntranetAllowedSettings\r\n }\r\n return false\r\n }\r\n async getRedirectUrlData(content: any){\r\n if(content.externalId) {\r\n this.router.navigate(\r\n [`app/toc/ext/${content.contentId}`])\r\n } else {\r\n let urlData = await this.contSvc.getResourseLink(content)\r\n this.router.navigate(\r\n [urlData.url],\r\n {\r\n queryParams: urlData.queryParams\r\n })\r\n }\r\n \r\n }\r\n getCbPlanData() {\r\n let cbpList: any={}\r\n if (localStorage.getItem('cbpData')) {\r\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\r\n if (cbpListArr && cbpListArr.length) {\r\n cbpListArr.forEach((data: any) => {\r\n cbpList[data.identifier] = data\r\n })\r\n }\r\n this.cbPlanMapData = cbpList\r\n // this.karmaPointLoading = false\r\n clearInterval(this.cbPlanInterval)\r\n }\r\n }\r\n\r\n getEnrollmentData() {\r\n if (localStorage.getItem('enrollmentMapData')) {\r\n this.enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}')\r\n clearInterval(this.enrollInterval)\r\n }\r\n }\r\n\r\n raiseCardClick(data: any) {\r\n this.triggerTelemetry.emit(data)\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\n\r\n@Component({\r\n selector: 'ws-cb-widget-card-resource',\r\n templateUrl: './card-resource.component.html',\r\n styleUrls: ['./card-resource.component.scss'],\r\n})\r\nexport class CardResourceComponent extends WidgetBaseComponent\r\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-portrait',\r\n templateUrl: './card-portrait.component.html',\r\n styleUrls: ['./card-portrait.component.scss']\r\n})\r\nexport class CardPortraitComponent implements OnInit {\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Input() cbPlanMapData: any\r\n isCardFlipped:boolean = false\r\n acbpConstants = NsCardContent.ACBPConst\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n // for telemetry\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n // for redirection\r\n this.contentData.emit(contentData)\r\n }\r\n}\r\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\r\n\r\n@Pipe({\r\n name: 'pipePublicURL',\r\n})\r\nexport class PipePublicURL implements PipeTransform {\r\n environment: any\r\n constructor(\r\n @Inject('environment') environment: any,){\r\n this.environment = environment\r\n }\r\n\r\n transform(value: string): any {\r\n const mainUrl = value && value.split('/content').pop() || ''\r\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\r\n return value ? finalURL : ''\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipePublicURL } from './pipe-public-URL.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipePublicURL],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipePublicURL],\r\n})\r\nexport class PipePublicURLModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'objectToArray'\r\n})\r\nexport class ObjectToArrayPipe implements PipeTransform {\r\n // transform(value: any, ...args: any[]): any[] {\r\n // console.log(\"function called\")\r\n // if (!value) {\r\n // return [];\r\n // }\r\n // console.log(Object.keys(value).map(key => ({ key, value: value[key] })), \"Object.keys(value).map(key => ({ key, value: value[key] }))==----------\")\r\n // return Object.keys(value).map(key => ({ key, value: value[key] }));\r\n // }\r\n transform(...args: any[]): any[] { \r\n return args; \r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ObjectToArrayPipe } from './object-to-array.pipe'\r\n\r\n@NgModule({\r\n declarations: [ObjectToArrayPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ObjectToArrayPipe],\r\n})\r\nexport class ObjectToArrayPipeModule { }","import { Component, OnInit, Input } from '@angular/core'\r\nimport { NsContent } from '../../_models/widget-content.model'\r\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service'\r\n\r\n@Component({\r\n selector: 'sb-uic-display-content-type',\r\n templateUrl: './display-content-type-lib.component.html',\r\n styleUrls: ['./display-content-type-lib.component.scss'],\r\n})\r\nexport class DisplayContentTypeLibComponent implements OnInit {\r\n @Input() useTranslation: boolean = true\r\n @Input() displayContentType: NsContent.EDisplayContentTypes = NsContent.EDisplayContentTypes.DEFAULT\r\n displayContentTypeEnum = NsContent.EDisplayContentTypes\r\n constructor(private langtranslations: MultilingualTranslationsService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateLabel(label, type, '')\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { DisplayContentTypeLibComponent } from './display-content-type-lib.component'\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms'\r\n\r\n@NgModule({\r\n declarations: [DisplayContentTypeLibComponent],\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule],\r\n exports: [DisplayContentTypeLibComponent],\r\n})\r\nexport class DisplayContentTypeLibModule {}\r\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';\r\nimport { NsCardUser } from '../../../_models/card-users.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-user',\r\n templateUrl: './card-user.component.html',\r\n styleUrls: ['./card-user.component.scss']\r\n})\r\nexport class CardUserComponent implements OnInit {\r\n @Input() widgetData!: NsCardUser.ICard;\r\n @Output() userData = new EventEmitter<any>()\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n }\r\n }\r\n\r\n getRedirectUrlData(userData: any){\r\n this.userData.emit(userData)\r\n }\r\n raiseTelemetry() {\r\n // if(this.forPreview){\r\n // return\r\n // }\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: `${this.widgetType}-${this.widgetSubType}`,\r\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\r\n },\r\n {\r\n id: this.widgetData.content.userId,\r\n // type: this.widgetData.user.primaryCategory,\r\n //context: this.widgetData.context,\r\n rollup: {},\r\n // ver: `${this.widgetData.user.version}${''}`,\r\n },\r\n {\r\n pageIdExt: `${_.camelCase('user')}-card`,\r\n module: _.camelCase('user'),\r\n })\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\n \r\n@Component({\r\n selector: 'sb-uic-card-landscape',\r\n templateUrl: './card-landscape.component.html',\r\n styleUrls: ['./card-landscape.component.scss']\r\n})\r\nexport class CardLandscapeComponent implements OnInit {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Output() triggerTelemetry = new EventEmitter<any>()\r\n @Input() cbPlanMapData: any\r\n isCardFlipped:boolean = false\r\n defaultThumbnail: any\r\n acbpConstants = NsCardContent.ACBPConst\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n cbPlanInterval: any\r\n \r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n this.cbPlanInterval = setInterval(() => {\r\n this.getCbPlanData()\r\n }, 1000)\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n this.contentData.emit(contentData)\r\n }\r\n raiseTelemetry(content: any) {\r\n this.triggerTelemetry.emit(content)\r\n }\r\n\r\n\r\n getCbPlanData() {\r\n let cbpList: any={}\r\n if (localStorage.getItem('cbpData')) {\r\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\r\n if (cbpListArr && cbpListArr.length) {\r\n cbpListArr.forEach((data: any) => {\r\n cbpList[data.identifier] = data\r\n })\r\n }\r\n // this.cbPlanMapData = cbpList\r\n // this.karmaPointLoading = false\r\n clearInterval(this.cbPlanInterval)\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-wide',\r\n templateUrl: './card-wide.component.html',\r\n styleUrls: ['./card-wide.component.scss']\r\n})\r\nexport class CardWideComponent implements OnInit {\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n isCardFlipped:boolean = false\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n \r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n getRedirectUrlData(contentData: any){\r\n this.contentData.emit(contentData)\r\n }\r\n raiseTelemetry() {\r\n // if(this.forPreview){\r\n // return\r\n // }\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: `${this.widgetType}-${this.widgetSubType}`,\r\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\r\n },\r\n {\r\n id: this.widgetData.content.identifier,\r\n type: this.widgetData.content.primaryCategory,\r\n //context: this.widgetData.context,\r\n rollup: {},\r\n ver: `${this.widgetData.content.version}${''}`,\r\n },\r\n {\r\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\r\n module: _.camelCase(this.widgetData.content.primaryCategory),\r\n })\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-mdo-channel',\r\n templateUrl: './card-mdo-channel.component.html',\r\n styleUrls: ['./card-mdo-channel.component.scss']\r\n})\r\nexport class CardMDOChannelComponent implements OnInit {\r\n @Input() widgetData!: NsContent.IContent;\r\n @Output() channelData = new EventEmitter<any>()\r\n @Output() emitTelemetry = new EventEmitter<any>()\r\n @Input() isCardLoading: boolean = false\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = ''\r\n widgetSubType: any =''\r\n\r\n constructor(\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,\r\n public router: Router) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n raiseTelemetry(contentData: any) {\r\n this.emitTelemetry.emit(contentData)\r\n if (this.widgetData) {\r\n contentData['typeOfTelemetry'] = 'mdo-channel'\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n }\r\n channelClick(channeldata:any) {\r\n this.channelData.emit(channeldata)\r\n }\r\n\r\n redirectTo(content: any) {\r\n this.router.navigate([`/app/learn/mdo-channels/${content.orgName}/${content.identifier}/micro-sites`])\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-wide-v2',\r\n templateUrl: './card-wide-v2.component.html',\r\n styleUrls: ['./card-wide-v2.component.scss']\r\n})\r\nexport class CardWideV2Component implements OnInit {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() cbPlanMapData: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Output() triggerTelemetry = new EventEmitter<any>()\r\n isCardFlipped:boolean = false\r\n acbpConstants = NsCardContent.ACBPConst\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n this.contentData.emit(contentData)\r\n }\r\n raiseTelemetry(contentData: any) {\r\n this.triggerTelemetry.emit(contentData)\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { Router } from '@angular/router';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-karma-programs',\r\n templateUrl: './card-karma-programs.component.html',\r\n styleUrls: ['./card-karma-programs.component.scss']\r\n})\r\nexport class CardKarmaProgramsComponent implements OnInit {\r\n\r\n @Input() widgetData!: NsContent.IContent;\r\n @Input() randomColorApply: boolean = false\r\n @Output() userData = new EventEmitter<any>()\r\n @Input() isCardLoading: boolean = false\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = ''\r\n widgetSubType: any =''\r\n randomColors: any = [\r\n '#EF941D',\r\n '#F97440',\r\n '#35B5B0',\r\n '#9988FF',\r\n '#254092',\r\n '#926525',\r\n '#4F72DF'\r\n ]\r\n\r\n constructor(\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,\r\n private router: Router) {\r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n this.setRandomColor()\r\n }\r\n\r\n setRandomColor(){\r\n if(this.widgetData && this.widgetData.content) {\r\n if(this.randomColorApply){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\r\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\r\n }else {\r\n this.widgetData.content['bgColor'] = '#1a4ca1'\r\n }\r\n }\r\n }\r\n\r\n \r\n\r\n get getRandomColors(){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\r\n return this.randomColors[randomIndex1]\r\n }\r\n\r\n redirectTo(data: any) {\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n data['typeOfTelemetry'] = 'karma-programs'\r\n }\r\n this.contSvc.changeTelemetryData(data)\r\n this.router.navigate(\r\n [`/app/learn/karma-programs/${data.title}/${data.playListKey}/${data.orgId}/micro-sites`],\r\n )\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-karma-programs-v2',\r\n templateUrl: './card-karma-programs-v2.component.html',\r\n styleUrls: ['./card-karma-programs-v2.component.scss']\r\n})\r\nexport class CardKarmaProgramsV2Component implements OnInit {\r\n\r\n @Input() widgetData!: NsContent.IContent;\r\n @Input() randomColorApply: boolean = false\r\n @Output() userData = new EventEmitter<any>()\r\n @Output() raiseTemeletry = new EventEmitter<any>()\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = ''\r\n widgetSubType: any =''\r\n randomColors: any = [\r\n '#EF941D',\r\n '#F97440',\r\n '#35B5B0',\r\n '#9988FF',\r\n '#254092',\r\n '#926525',\r\n '#4F72DF'\r\n ]\r\n\r\n constructor(\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private router : Router,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n this.setRandomColor()\r\n }\r\n\r\n setRandomColor(){\r\n if(this.widgetData && this.widgetData.content) {\r\n if(this.randomColorApply){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\r\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\r\n }else {\r\n this.widgetData.content['bgColor'] = '#1a4ca1'\r\n }\r\n }\r\n }\r\n\r\n redirectTo(content: any) {\r\n this.raiseTemeletry.emit(content)\r\n this.router.navigate(\r\n [`/app/learn/karma-programs/${content.title}/${content.playListKey}/${content.orgId}/micro-sites`],\r\n )\r\n }\r\n\r\n get getRandomColors(){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\r\n return this.randomColors[randomIndex1]\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-provider-card',\r\n templateUrl: './provider-card.component.html',\r\n styleUrls: ['./provider-card.component.scss']\r\n})\r\nexport class ProviderCardComponent implements OnInit {\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() randomColorApply: boolean = true\r\n @Input() isCardLoading: boolean = false\r\n\r\n colors = [\r\n '#EF941D', '#F97440', '#35B5B0', '#9988FF', '#816FEC',\r\n '#254092', '#926525', '#4F72DF'\r\n ];\r\n\r\n constructor(private router: Router) {}\r\n\r\n ngOnInit() {\r\n this.setRandomColor()\r\n }\r\n\r\n setRandomColor(){\r\n if(this.widgetData && this.widgetData.content) {\r\n if(this.randomColorApply){\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.colors.length))\r\n this.widgetData.content['bgColor'] = this.colors[randomIndex1]\r\n }else {\r\n this.widgetData.content['bgColor'] = '#1a4ca1'\r\n }\r\n }\r\n }\r\n \r\n\r\n redirectTo(content: any) { \r\n this.router.navigate([`/app/learn/browse-by/provider/${content.name}/${content.orgId}/micro-sites`])\r\n }\r\n\r\n\r\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatSnackBar } from '@angular/material';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-portrait-ext',\r\n templateUrl: './card-portrait-ext.component.html',\r\n styleUrls: ['./card-portrait-ext.component.scss']\r\n})\r\nexport class CardPortraitExtComponent implements OnInit {\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Input() cbPlanMapData: any\r\n isCardFlipped:boolean = false\r\n acbpConstants = NsCardContent.ACBPConst\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n if (this.widgetData && this.widgetData.content) {\r\n this.widgetData.content.duration = this.widgetData.content.duration * 60\r\n }\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n // for telemetry\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n // for redirection\r\n this.contentData.emit(contentData)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n// import { WidgetUserService } from '../../../../_services/widget-user.service';\r\nimport { ConfigurationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../../../_services/widget-content.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-assessment',\r\n templateUrl: './card-assessment.component.html',\r\n styleUrls: ['./card-assessment.component.css']\r\n})\r\n\r\n// @Directive({\r\n// selector: '[callFunctionOnInit]'\r\n// })\r\nexport class CardAssessmentComponent implements OnInit {\r\n @Input() widgetData!: NsContent.IContent;\r\n @Input() enrollmentMapData: any\r\n @Output() contentData = new EventEmitter<any>()\r\n @Input() isCardLoading: boolean = false\r\n stripData: any = []\r\n enrollList: any = []\r\n activeResource: any = []\r\n defaultThumbnail: any\r\n defaultSLogo: any\r\n daysRemaining: number = 0;\r\n startDate: any\r\n endDate: any\r\n daysPending: boolean = false\r\n daysFinish: boolean = false\r\n private intervalId: any;\r\n days: number;\r\n hours: number;\r\n minutes: number;\r\n constructor(private configSvc: ConfigurationsService, private contSvc: WidgetContentService,) { }\r\n\r\n ngOnInit(): void {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n }\r\n }\r\n\r\n startCountdown(data: any): void {\r\n let startDate = data.startDate\r\n this.updateCountdown(startDate);\r\n // this.intervalId = setInterval(() => {\r\n // this.updateCountdown(startDate);\r\n // }, 1000);\r\n }\r\n\r\n // Method to update the countdown values\r\n updateCountdown(startDate: any): void {\r\n let now = new Date().getTime()\r\n let startingDate: any = new Date(startDate).getTime()\r\n // startingDate.setHours(startingDate.getHours() - 5);\r\n // startingDate.setMinutes(startingDate.getMinutes() - 30);\r\n // startingDate = startingDate.getTime()\r\n const distance = startingDate - now; \r\n if (distance > 0) {\r\n this.daysPending = true\r\n this.days = Math.floor(distance / (1000 * 60 * 60 * 24));\r\n this.hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\r\n this.minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));\r\n } else {\r\n this.daysRemaining = 0;\r\n this.daysPending = false\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n getRedirectUrlData(contentData: any) {\r\n // for telemetry\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n // for redirection\r\n this.contentData.emit(contentData)\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Observable } from 'rxjs'\r\nimport { HttpClient } from '@angular/common/http'\r\n\r\nconst urls = {\r\n DOWNLOAD_CERTIFICATE: (id: string) => `certreg/v2/certs/download/${id}`,\r\n DOWNLOAD_CERTIFICATE_v2: (id: string) => `apis/protected/v8/cohorts/course/batch/cert/download/${id}`,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\n\r\nexport class CertificateService {\r\n\r\n constructor(private http: HttpClient) { }\r\n downloadCertificate(id: string): Observable<any> {\r\n return this.http.get<any>(urls.DOWNLOAD_CERTIFICATE(id))\r\n }\r\n\r\n downloadCertificate_v2(id: string): Observable<any> {\r\n return this.http.get<any>(urls.DOWNLOAD_CERTIFICATE_v2(id))\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core'\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'\r\nimport { TranslateService } from '@ngx-translate/core'\r\nimport { EventService, MultilingualTranslationsService, WsEvents } from '@sunbird-cb/utils-v2'\r\nimport { jsPDF } from 'jspdf'\r\n\r\n@Component({\r\n selector: 'sb-uic-certificate-dialog',\r\n templateUrl: './certificate-dialog.component.html',\r\n styleUrls: ['./certificate-dialog.component.scss'],\r\n /* tslint:disable */\r\n host: { class: 'certificate-inner-dialog-panel' },\r\n /* tslint:enable */\r\n})\r\nexport class CertificateDialogComponent implements OnInit {\r\n url!: string\r\n navUrl = ''\r\n environment: any\r\n constructor(\r\n @Inject('environment') environment: any,\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n public dialogRef: MatDialogRef<CertificateDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) {\r\n this.environment = environment\r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.url = this.data.cet\r\n // tslint:disable-next-line:max-line-length\r\n this.navUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`\r\n }\r\n\r\n downloadCert() {\r\n this.raiseIntreactTelemetry('svg')\r\n const a: any = document.createElement('a')\r\n a.href = this.data.cet\r\n a.download = 'Certificate'\r\n document.body.appendChild(a)\r\n a.style = 'display: none'\r\n a.click()\r\n a.remove()\r\n }\r\n\r\n downloadCertPng() {\r\n this.raiseIntreactTelemetry('png')\r\n const uriData = this.data.cet\r\n const img = new Image()\r\n img.src = uriData\r\n img.width = 1820\r\n img.height = 1000\r\n img.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n [canvas.width, canvas.height] = [img.width, img.height]\r\n const ctx = canvas.getContext('2d')\r\n if (ctx) {\r\n // ctx.imageSmoothingEnabled = true\r\n ctx.drawImage(img, 0, 0, img.width, img.height)\r\n const a = document.createElement('a')\r\n const quality = 1.0 // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality\r\n a.href = canvas.toDataURL('image/png', quality)\r\n a.download = 'Certificate'\r\n a.append(canvas)\r\n a.click()\r\n a.remove()\r\n }\r\n }\r\n }\r\n async downloadCertPdf() {\r\n this.raiseIntreactTelemetry('pdf')\r\n const uriData = this.data.cet\r\n const img = new Image()\r\n img.src = uriData\r\n img.width = 1820\r\n img.height = 1000\r\n img.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n [canvas.width, canvas.height] = [img.width, img.height]\r\n const ctx = canvas.getContext('2d')\r\n if (ctx) {\r\n ctx.drawImage(img, 0, 0, img.width, img.height)\r\n const quality = 1.0 // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality\r\n const dataImg = canvas.toDataURL('application/pdf', quality)\r\n const pdf = new jsPDF('landscape', 'px', 'a4')\r\n\r\n // add the image to the PDF\r\n pdf.addImage(dataImg, 10, 20, 600, 350)\r\n\r\n // download the PDF\r\n pdf.save('Certificate.pdf')\r\n }\r\n }\r\n }\r\n\r\n shareCert() {\r\n this.raiseShareIntreactTelemetry('share')\r\n return window.open(this.navUrl, '_blank')\r\n }\r\n\r\n raiseShareIntreactTelemetry(type?: string, action?: string) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n id: `${type}-${WsEvents.EnumInteractSubTypes.CERTIFICATE}`,\r\n subType: action && action,\r\n },\r\n {\r\n id: this.data.certId, // id of the certificate\r\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\r\n }\r\n )\r\n }\r\n\r\n raiseIntreactTelemetry(action?: string) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n id: 'download-certificate',\r\n subType: action && action,\r\n },\r\n {\r\n id: this.data.certId, // id of the certificate\r\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\r\n }\r\n )\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NsCardContent } from '../../../_models/card-content.model';\r\nimport { MatDialog, MatSnackBar } from '@angular/material'\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\nimport { ConfigurationsService, EventService, WsEvents } from '@sunbird-cb/utils-v2';\r\nimport * as _ from \"lodash\";\r\nimport { CertificateService } from '../../../_services/certificate.service';\r\nimport { CertificateDialogComponent } from '../../dialog-components/certificate-dialog/certificate-dialog.component';\r\n\r\n@Component({\r\n selector: 'sb-uic-card-progress-portrait-lib',\r\n templateUrl: './card-progress-portrait-lib.component.html',\r\n styleUrls: ['./card-progress-portrait-lib.component.scss']\r\n})\r\nexport class CardProgressPortraitLibComponent implements OnInit {\r\n\r\n @Input() widgetData!: NsCardContent.ICard;\r\n @Input() isLiveOrMarkForDeletion: any\r\n @Input() showIntranetContent: any\r\n @Input() isIntranetAllowedSettings: any\r\n @Input() isCardLoading: boolean = false\r\n @Output() contentData = new EventEmitter<any>()\r\n @Input() cbPlanMapData: any\r\n isCardFlipped:boolean = false\r\n acbpConstants = NsCardContent.ACBPConst\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n showFlip = false\r\n widgetType: any = 'df'\r\n widgetSubType: any ='sdf'\r\n downloadCertificateLoading: boolean = false\r\n\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private translate: TranslateService,\r\n private events: EventService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,\r\n private certificateService: CertificateService,\r\n private dialog: MatDialog,\r\n ) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n showSnackbar() {\r\n if (this.showIntranetContent) {\r\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\r\n } else if (!this.isLiveOrMarkForDeletion) {\r\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\r\n }\r\n }\r\n getRedirectUrlData(contentData: any){\r\n // for telemetry\r\n if (this.widgetData && this.widgetData.context && this.widgetData.context.pageSection) {\r\n contentData['typeOfTelemetry'] = this.widgetData.context.pageSection\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n // for redirection\r\n this.contentData.emit(contentData)\r\n }\r\n\r\n translateLabels(label: string, type: any, subtype?: any) {\r\n return this.langtranslations.translateLabelWithoutspace(label, type, subtype)\r\n }\r\n raiseTelemetry() {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: `${this.widgetType}-${this.widgetSubType}`,\r\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\r\n },\r\n {\r\n id: this.widgetData.content.identifier,\r\n type: this.widgetData.content.primaryCategory,\r\n //context: this.widgetData.context,\r\n rollup: {},\r\n ver: `${this.widgetData.content.version}${''}`,\r\n },\r\n {\r\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\r\n module: _.camelCase(this.widgetData.content.primaryCategory),\r\n })\r\n }\r\n\r\n downloadCertificate(certificateData: any) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n id: 'view-certificate',\r\n subType: WsEvents.EnumInteractSubTypes.CERTIFICATE,\r\n },\r\n {\r\n id: certificateData.issuedCertificates[0].identifier, // id of the certificate\r\n type: WsEvents.EnumInteractSubTypes.CERTIFICATE,\r\n })\r\n if(certificateData.issuedCertificates.length > 0) {\r\n this.downloadCertificateLoading = true\r\n let certData: any = certificateData.issuedCertificates[0]\r\n this.certificateService.downloadCertificate_v2(certData.identifier).subscribe((res: any)=>{\r\n this.downloadCertificateLoading = false\r\n const cet = res.result.printUri\r\n this.dialog.open(CertificateDialogComponent, {\r\n width: '1300px',\r\n data: { cet, certId: certData.identifier },\r\n })\r\n })\r\n } else {\r\n this.downloadCertificateLoading = false\r\n }\r\n }\r\n\r\n}\r\n","import { Component, HostBinding, Input, OnChanges } from '@angular/core'\r\n\r\n@Component({\r\n selector: 'sb-uic-content-progress',\r\n templateUrl: './content-progress.component.html',\r\n styleUrls: ['./content-progress.component.scss'],\r\n /* tslint:disable */\r\n host: {\r\n // Sets the role for this component to \"progressbar\"\r\n role: 'progressbar',\r\n // Sets the minimum and maximum values for the progressbar role.\r\n 'aria-valuemin': '0',\r\n 'aria-valuemax': '100',\r\n 'title': 'progres',\r\n // Binding that updates the current value of the progressbar.\r\n '[attr.aria-valuenow]': 'progress',\r\n },\r\n /* tslint:enable */\r\n})\r\nexport class ContentProgressComponent implements OnChanges {\r\n @Input()\r\n contentId = ''\r\n\r\n @Input()\r\n progress = 0\r\n\r\n @Input()\r\n progressType = ''\r\n\r\n @Input()\r\n forPreview = false\r\n\r\n @Input()\r\n className = ''\r\n @Input()\r\n customClassName: any = 'accent-progress'\r\n\r\n rendom = Math.random()\r\n @HostBinding('id')\r\n public id = `progress_${Math.random()}`\r\n constructor(\r\n // private progressSvc: ContentProgressService\r\n ) {\r\n if (this.contentId) {\r\n this.id = this.contentId\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.contentId && !this.progress && !this.forPreview) {\r\n // this.progressSvc.getProgressFor(this.contentId).subscribe(data => {\r\n // this.progress = data\r\n // if (this.progress) {\r\n // this.progress = Math.round(this.progress * 10000) / 100\r\n // }\r\n // })\r\n }\r\n\r\n if (this.progress) {\r\n if (this.progressType === 'percentage') {\r\n this.progress = this.progress\r\n } else {\r\n this.progress = Math.round(this.progress * 10000) / 100\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ContentProgressComponent } from './content-progress.component'\r\nimport { MatProgressBarModule, MatTooltipModule } from '@angular/material'\r\n\r\n@NgModule({\r\n declarations: [ContentProgressComponent],\r\n imports: [\r\n CommonModule,\r\n MatProgressBarModule,\r\n MatTooltipModule,\r\n ],\r\n exports: [ContentProgressComponent],\r\n})\r\nexport class ContentProgressModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CertificateDialogComponent } from './certificate-dialog/certificate-dialog.component';\r\nimport { MatCardModule, MatDialogModule, MatIconModule, MatMenuModule } from '@angular/material';\r\nimport { TranslateLoader, TranslateModule } 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 { PipeSafeSanitizerModule } from '@sunbird-cb/utils-v2';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CertificateDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatMenuModule,\r\n MatCardModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n PipeSafeSanitizerModule,\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 ],\r\n exports:[\r\n CertificateDialogComponent\r\n ],\r\n entryComponents: [CertificateDialogComponent],\r\n})\r\nexport class DialogComponentsModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as _ from \"lodash\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'sb-uic-card-mdo-channel-v1',\r\n templateUrl: './card-mdo-channel-v1.component.html',\r\n styleUrls: ['./card-mdo-channel-v1.component.scss']\r\n})\r\nexport class CardMdoChannelV1Component implements OnInit {\r\n @Input() widgetData!: NsContent.IContent;\r\n @Output() channelData = new EventEmitter<any>()\r\n @Output() emitTelemetry = new EventEmitter<any>()\r\n @Input() isCardLoading: boolean = false\r\n defaultThumbnail: any\r\n sourceLogos: any\r\n defaultSLogo: any\r\n widgetType: any = ''\r\n widgetSubType: any =''\r\n\r\n constructor(\r\n private events: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n private configSvc: ConfigurationsService,\r\n private contSvc: WidgetContentService,\r\n public router: Router) { \r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const instanceConfig = this.configSvc.instanceConfig\r\n if (instanceConfig) {\r\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\r\n this.sourceLogos = instanceConfig.sources\r\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\r\n } else {\r\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\r\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\r\n }\r\n }\r\n\r\n raiseTelemetry(contentData: any) {\r\n this.emitTelemetry.emit(contentData)\r\n if (this.widgetData) {\r\n contentData['typeOfTelemetry'] = 'mdo-channel'\r\n }\r\n this.contSvc.changeTelemetryData(contentData)\r\n }\r\n channelClick(channeldata:any) {\r\n this.channelData.emit(channeldata)\r\n }\r\n\r\n redirectTo(content: any) {\r\n this.router.navigate([`/app/learn/mdo-channels/${content.orgName}/${content.identifier}/micro-sites`])\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'\r\n\r\n@Component({\r\n selector: 'sb-uic-avatar-photo',\r\n templateUrl: './avatar-photo-lib.component.html',\r\n styleUrls: ['./avatar-photo-lib.component.scss'],\r\n})\r\nexport class AvatarPhotoLibComponent implements OnInit, OnChanges {\r\n @Input() datalen: any\r\n\r\n @Input()\r\n public photoUrl!: string\r\n\r\n @Input()\r\n public name!: string\r\n @Input() public size = ''\r\n @Input() public defaulfColor = ''\r\n @Input() randomColor = false\r\n @Input() initials?: string\r\n @Input() showBadge = false\r\n public showInitials = false\r\n public circleColor!: string\r\n random = Math.random().toString(36).slice(2)\r\n\r\n // public initials!: string\r\n\r\n private colors = [\r\n '#EB7181', // red\r\n '#306933', // green\r\n '#000000', // black\r\n '#3670B2', // blue\r\n '#4E9E87',\r\n '#7E4C8D',\r\n ]\r\n\r\n private randomcolors = [\r\n '#EB7181', // red\r\n '#006400', // green\r\n '#000000', // black\r\n '#3670B2', // blue\r\n '#4E9E87',\r\n '#7E4C8D',\r\n ]\r\n\r\n ngOnInit() {\r\n if (!this.photoUrl) {\r\n this.showInitials = true\r\n if (!this.initials) {\r\n this.createInititals()\r\n }\r\n if (this.datalen === 1) {\r\n if(this.defaulfColor) {\r\n this.randomcolors = [\r\n this.defaulfColor\r\n ]\r\n } else {\r\n this.randomcolors = [\r\n '#006400', // green\r\n ]\r\n }\r\n }\r\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\r\n this.circleColor = this.colors[randomIndex]\r\n if (this.randomColor) {\r\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomcolors.length))\r\n this.circleColor = this.randomcolors[randomIndex1]\r\n }\r\n }\r\n\r\n }\r\n ngOnChanges(change: SimpleChanges) {\r\n if (change.name.currentValue !== change.name.previousValue && !change.name.firstChange) {\r\n this.createInititals()\r\n }\r\n }\r\n get userInitials() {\r\n return this.initials\r\n }\r\n private createInititals(): void {\r\n let initials = ''\r\n const array = `${this.name} `.toString().split(' ')\r\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\r\n initials += array[0].charAt(0)\r\n initials += array[1].charAt(0)\r\n } else {\r\n for (let i = 0; i < this.name.length; i += 1) {\r\n if (this.name.charAt(i) === ' ') {\r\n continue\r\n }\r\n\r\n if (this.name.charAt(i) === this.name.charAt(i)) {\r\n initials += this.name.charAt(i)\r\n\r\n if (initials.length === 2) {\r\n break\r\n }\r\n }\r\n }\r\n }\r\n this.initials = initials.toUpperCase()\r\n }\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { RouterModule } from '@angular/router'\r\nimport { MatButtonModule, MatIconModule, MatMenuModule, MatRippleModule } from '@angular/material'\r\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2'\r\nimport { AvatarPhotoLibComponent } from './avatar-photo-lib.component'\r\n\r\n@NgModule({\r\n declarations: [AvatarPhotoLibComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatMenuModule,\r\n MatRippleModule,\r\n SbUiResolverModule,\r\n ],\r\n exports: [AvatarPhotoLibComponent],\r\n entryComponents: [AvatarPhotoLibComponent],\r\n})\r\nexport class AvatarPhotoLibModule { }\r\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'\r\nimport { ROOT_WIDGET_CONFIG } from './consumption.config'\r\n// Components\r\nimport { CardsComponent } from './_common/cards/cards.component'\r\nimport { CardsModule } from './_common/cards/cards.module'\r\n\r\n\r\nexport const WIDGET_REGISTERED_LIB_MODULES = [\r\n CardsModule\r\n]\r\n\r\nexport const WIDGET_REGISTRATION_LIB_CONFIG: NsWidgetResolver.IRegistrationConfig[] = [\r\n {\r\n widgetType: ROOT_WIDGET_CONFIG.card._type,\r\n widgetSubType: ROOT_WIDGET_CONFIG.card.cardResource,\r\n component: CardsComponent,\r\n }\r\n]\r\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\r\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\r\nimport { NsContentStripWithTabsAndPills } from './content-strip-with-tabs-pills.model';\r\n// import { HttpClient } from '@angular/common/http'\r\nimport { WidgetContentService } from '../../../_services/widget-content.service';\r\nimport { NsContent } from '../../../_models/widget-content.model';\r\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\r\nimport {\r\n TFetchStatus,\r\n LoggerService,\r\n EventService,\r\n ConfigurationsService,\r\n UtilityService,\r\n WsEvents,\r\n} from '@sunbird-cb/utils-v2';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { WidgetUserService } from '../../../_services/widget-user.service';\r\n// import { environment } from 'src/environments/environment'\r\n// tslint:disable-next-line\r\nimport * as _ from 'lodash'\r\nimport { MatTabChangeEvent } from '@angular/material';\r\nimport { NsCardContent } from '../../../_models/card-content-v2.model';\r\nimport { ITodayEvents } from '../../../_models/event';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Router } from '@angular/router';\r\n\r\ninterface IStripUnitContentData {\r\n key: string;\r\n canHideStrip: boolean;\r\n mode?: string;\r\n showStrip: boolean;\r\n disableTranslate: boolean;\r\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\r\n stripTitle: string;\r\n stripTitleLink?: {\r\n link: {\r\n queryParams: string\r\n },\r\n icon: string,\r\n queryParams: string\r\n };\r\n sliderConfig?: {\r\n showNavs: boolean,\r\n showDots: boolean,\r\n maxWidgets?: number\r\n cerificateCardMargin?: boolean\r\n };\r\n stripConfig: any;\r\n tabs?: NsContentStripWithTabsAndPills.IContentStripTab[] | undefined;\r\n stripName?: string;\r\n stripLogo?: string;\r\n description?: string;\r\n stripInfo?: NsContentStripWithTabsAndPills.IStripInfo;\r\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\r\n showOnNoData: boolean;\r\n showOnLoader: boolean;\r\n showOnError: boolean;\r\n loaderWidgets?: any;\r\n stripBackground?: string;\r\n secondaryHeading?: any;\r\n viewMoreUrl: any;\r\n request?: any\r\n \r\n}\r\n\r\n\r\n@Component({\r\n selector: 'sb-uic-content-strip-with-tabs-pills',\r\n templateUrl: './content-strip-with-tabs-pills.component.html',\r\n styleUrls: ['./content-strip-with-tabs-pills.component.scss']\r\n})\r\nexport class ContentStripWithTabsPillsComponent extends WidgetBaseComponent\r\nimplements\r\nOnInit,\r\nOnDestroy,\r\nNsWidgetResolver.IWidgetData<NsContentStripWithTabsAndPills.IContentStripMultiple> {\r\n @Input() widgetData!: NsContentStripWithTabsAndPills.IContentStripMultiple;\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n @Output() viewAllResponse = new EventEmitter<any>()\r\n @Output() telemtryResponse = new EventEmitter<any>()\r\n @Input() providerId : any = ''\r\n @Input() emitViewAll : boolean = false\r\n @Input() channnelName: any = ''\r\n @HostBinding('id')\r\n public id = `ws-strip-miltiple_${Math.random()}`;\r\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\r\n stripsKeyOrder: string[] = [];\r\n showAccordionData = true;\r\n showParentLoader = false;\r\n showParentError = false;\r\n showParentNoData = false;\r\n errorDataCount = 0;\r\n noDataCount = 0;\r\n successDataCount = 0;\r\n contentAvailable = true;\r\n baseUrl = this.configSvc.sitePath || '';\r\n veifiedKarmayogi = false;\r\n environment!: any;\r\n changeEventSubscription: Subscription | null = null;\r\n defaultMaxWidgets = 12;\r\n enrollInterval: any;\r\n todaysEvents: any = [];\r\n enrollmentMapData: any\r\n\r\n constructor(\r\n // private contentStripSvc: ContentStripNewMultipleService,\r\n @Inject('environment') environment: any,\r\n private contentSvc: WidgetContentService,\r\n private loggerSvc: LoggerService,\r\n private eventSvc: EventService,\r\n private configSvc: ConfigurationsService,\r\n public utilitySvc: UtilityService,\r\n // private http: HttpClient,\r\n // private searchServSvc: SearchServService,\r\n public router: Router,\r\n private userSvc: WidgetUserService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService\r\n ) {\r\n super();\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en');\r\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\r\n lang = lang.replace(/\\\"/g, '');\r\n this.translate.use(lang);\r\n }\r\n this.environment = environment\r\n }\r\n\r\n ngOnInit() {\r\n // const url = window.location.href\r\n this.initData();\r\n this.contentSvc.telemetryData$.subscribe((data: any) => {\r\n this.telemtryResponse.emit(data)\r\n })\r\n\r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.changeEventSubscription) {\r\n this.changeEventSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n showAccordion(key: string) {\r\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\r\n return this.showAccordionData;\r\n }\r\n return true;\r\n }\r\n\r\n setHiddenForStrip(key: string) {\r\n this.stripsResultDataMap[key].showStrip = false;\r\n sessionStorage.setItem(`cstrip_${key}`, '1');\r\n }\r\n private getIfStripHidden(key: string): boolean {\r\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\r\n return Boolean(storageItem !== '1');\r\n }\r\n\r\n private initData() {\r\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\r\n if (this.widgetData.loader && this.widgetData.strips.length) {\r\n this.showParentLoader = true;\r\n }\r\n // Fetch the data\r\n for (const strip of this.widgetData.strips) {\r\n if (this.checkForEmptyWidget(strip)) {\r\n this.fetchStripFromRequestData(strip, false);\r\n } else {\r\n this.processStrip(strip, [], 'done', true, null);\r\n }\r\n }\r\n // Subscription for changes\r\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\r\n .map(strip => ({\r\n key: strip.key,\r\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\r\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\r\n }))\r\n .filter(({ key, type, from }) => key && type && from);\r\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\r\n this.changeEventSubscription = this.eventSvc.events$\r\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\r\n .subscribe(event => {\r\n keyAndEvent\r\n .filter(e => e.type === event.eventType && e.from === event.from)\r\n .map(e => e.key)\r\n .forEach(k => this.fetchStripFromKey(k, false));\r\n });\r\n }\r\n\r\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\r\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\r\n if (stripData) {\r\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\r\n }\r\n }\r\n\r\n isStripShowing(data: any) {\r\n let count = 0;\r\n \r\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\r\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\r\n data.widgets.forEach((key: any) => {\r\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\r\n count = count + 1;\r\n }\r\n });\r\n if (count > 0) {\r\n data.showStrip = true;\r\n } else {\r\n data.showStrip = false;\r\n }\r\n }\r\n // console.log('data.key', data, data.key, data.widgets);\r\n return data.showStrip;\r\n }\r\n\r\n get isMobile() {\r\n return this.utilitySvc.isMobile || false;\r\n }\r\n\r\n getdata(data: IStripUnitContentData) {\r\n if (data.stripInfo) {\r\n return data.stripInfo.widget;\r\n }\r\n return {};\r\n\r\n }\r\n checkCondition(wData: NsContentStripWithTabsAndPills.IContentStripMultiple, data: IStripUnitContentData) {\r\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\r\n return !wData.strips[0].stripConfig.hideShowAll;\r\n }\r\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\r\n }\r\n checkVisible(data: IStripUnitContentData) {\r\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\r\n }\r\n\r\n getContineuLearningLenth(data: IStripUnitContentData) {\r\n return data.widgets ? data.widgets.length : 0;\r\n }\r\n getLength(data: IStripUnitContentData) {\r\n if (!data.tabs || !data.tabs.length) {\r\n return data.widgets ? data.widgets.length : 0;\r\n } {\r\n // if tabs are there check if each tab has widgets and get the tab with max widgets\r\n let tabWithMaxWidgets: any = {}\r\n data.tabs.forEach((tab: any)=>{\r\n if(tab.pillsData && tab.pillsData.length){\r\n tabWithMaxWidgets = tab.pillsData.reduce(\r\n (prev: any, current: any) => {\r\n if (!prev.widgets && !current.widgets) {\r\n return current;\r\n }\r\n if (prev.widgets && current.widgets) {\r\n return (prev.widgets.length > current.widgets.length) ? prev : current;\r\n }\r\n if (current.widgets && !prev.widgets) {\r\n return current;\r\n }\r\n if (!current.widgets && prev.widgets) {\r\n return prev;\r\n }\r\n return current;\r\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\r\n // tslint:disable-next-line: align\r\n }, data.tabs[0]);\r\n\r\n }\r\n })\r\n // if tabs has atleast 1 widgets then strip will show or else not\r\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\r\n }\r\n }\r\n\r\n private getFiltersFromArray(v6filters: any) {\r\n const filters: any = {};\r\n if (v6filters.constructor === Array) {\r\n v6filters.forEach(((f: any) => {\r\n Object.keys(f).forEach(key => {\r\n filters[key] = f[key];\r\n });\r\n }));\r\n return filters;\r\n }\r\n return v6filters;\r\n }\r\n\r\n private transformSearchV6FiltersV2(v6filters: any) {\r\n const filters: any = {};\r\n if (v6filters.constructor === Array) {\r\n v6filters.forEach(((f: any) => {\r\n Object.keys(f).forEach(key => {\r\n filters[key] = f[key];\r\n });\r\n }));\r\n return filters;\r\n }\r\n return v6filters;\r\n }\r\n\r\n checkForDateFilters(filters: any) {\r\n let userData: any;\r\n if (this.configSvc.userProfile) {\r\n userData = this.configSvc.userProfile;\r\n }\r\n\r\n if (filters && filters.hasOwnProperty('batches.endDate')) {\r\n // tslint:disable-next-line\r\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\r\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\r\n // tslint:disable-next-line\r\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\r\n } else if (filters.organisation &&\r\n filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n if(this.providerId) {\r\n filters.organisation = this.providerId;\r\n } else {\r\n filters.organisation = userData && userData.rootOrgId;\r\n\r\n if (filters && filters.hasOwnProperty('designation')) {\r\n filters.designation = userData.professionalDetails.length > 0 ?\r\n userData.professionalDetails[0].designation : '';\r\n }\r\n }\r\n \r\n }\r\n return filters;\r\n }\r\n\r\n private fetchStripFromRequestData(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n calculateParentStatus = true,\r\n ) {\r\n // setting initial values\r\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\r\n this.processStrip(strip, [], 'fetching', false, null);\r\n this.fetchFromSearchV6(strip, calculateParentStatus);\r\n this.fetchForYouData(strip, calculateParentStatus)\r\n this.fetchAllCbpPlans(strip, calculateParentStatus);\r\n \r\n // this.enrollInterval = setInterval(() => {\r\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\r\n // }, 1000)\r\n }\r\n\r\n toggleInfo(data: IStripUnitContentData) {\r\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\r\n if (stripInfo) {\r\n if (stripInfo.mode !== 'below') {\r\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\r\n stripInfo.mode = 'below';\r\n }\r\n if (stripInfo.mode === 'below') {\r\n this.stripsResultDataMap[data.key].stripInfo = {\r\n ...stripInfo,\r\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\r\n };\r\n }\r\n }\r\n }\r\n\r\n private transformContentsToWidgets(\r\n contents: NsContent.IContent[],\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n ) {\r\n return (contents || []).map((content, idx) => (\r\n content ? {\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n ...(content.batch && { batch: content.batch }),\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'cardContent',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n\r\n private transformEventsToWidgets(\r\n contents: ITodayEvents[],\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n ) {\r\n this.eventSvc.setEventListData(contents);\r\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\r\n widgetType: 'card',\r\n widgetSubType: 'eventHubCard',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n content,\r\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n context: { pageSection: strip.key, position: idx },\r\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\r\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\r\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\r\n },\r\n } : {\r\n widgetType: 'card',\r\n widgetSubType: 'eventHubCard',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {},\r\n }\r\n ));\r\n }\r\n private transformSkeletonToWidgets(\r\n strip: any\r\n ) {\r\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\r\n widgetType: 'cardLib',\r\n widgetSubType: 'cardContentLib',\r\n widgetHostClass: 'mb-2',\r\n widgetData: {\r\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\r\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\r\n },\r\n }));\r\n }\r\n\r\n private async processStrip(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\r\n fetchStatus: TFetchStatus,\r\n calculateParentStatus = true,\r\n _viewMoreUrl: any,\r\n tabsResults?: NsContentStripWithTabsAndPills.IContentStripTab[] | undefined,\r\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\r\n ) {\r\n const stripData = {\r\n viewMoreUrl: strip.viewMoreUrl,\r\n key: strip.key,\r\n canHideStrip: Boolean(strip.canHideStrip),\r\n showStrip: this.getIfStripHidden(strip.key),\r\n noDataWidget: strip.noDataWidget,\r\n errorWidget: strip.errorWidget,\r\n stripInfo: strip.info,\r\n stripTitle: strip.title,\r\n stripTitleLink: strip.stripTitleLink,\r\n disableTranslate: strip.disableTranslate,\r\n sliderConfig: strip.sliderConfig,\r\n tabs: tabsResults ? tabsResults : strip.tabs,\r\n stripName: strip.name,\r\n mode: strip.mode,\r\n stripConfig: strip.stripConfig,\r\n stripBackground: strip.stripBackground,\r\n secondaryHeading: strip.secondaryHeading,\r\n loaderWidgets: strip.loaderWidgets || [],\r\n widgets:\r\n fetchStatus === 'done'\r\n ? [\r\n ...(strip.preWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ...results,\r\n ...(strip.postWidgets || []).map(w => ({\r\n ...w,\r\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\r\n })),\r\n ]\r\n : [],\r\n showOnNoData: Boolean(\r\n strip.noDataWidget &&\r\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\r\n fetchStatus === 'done',\r\n ),\r\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\r\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\r\n };\r\n // const stripData = this.stripsResultDataMap[strip.key]\r\n this.stripsResultDataMap = {\r\n ...this.stripsResultDataMap,\r\n [strip.key]: stripData,\r\n };\r\n if (!tabsResults) {\r\n if (\r\n calculateParentStatus &&\r\n (fetchStatus === 'done' || fetchStatus === 'error') &&\r\n stripData.widgets\r\n ) {\r\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\r\n }\r\n if (calculateParentStatus && !(results && results.length > 0)) {\r\n this.contentAvailable = false;\r\n } else if (results && results.length > 0) {\r\n this.contentAvailable = true;\r\n }\r\n } else {\r\n this.contentAvailable = true;\r\n }\r\n }\r\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\r\n if (fetchStatus === 'done' && !stripWidgetsCount) {\r\n this.noDataCount += 1;\r\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\r\n this.successDataCount += 1;\r\n } else if (fetchStatus === 'error') {\r\n this.errorDataCount += 1;\r\n }\r\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\r\n const totalCount = this.widgetData.strips.length;\r\n if (this.successDataCount > 0 && settledCount < totalCount) {\r\n return;\r\n }\r\n this.showParentLoader = settledCount !== totalCount;\r\n this.showParentNoData =\r\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\r\n this.showParentError = this.errorDataCount === totalCount;\r\n }\r\n checkForEmptyWidget(strip: NsContentStripWithTabsAndPills.IContentStripUnit): boolean {\r\n if (\r\n strip.request &&\r\n ((strip.request.api && Object.keys(strip.request.api).length) ||\r\n (strip.request.search && Object.keys(strip.request.search).length) ||\r\n (strip.request.searchRegionRecommendation &&\r\n Object.keys(strip.request.searchRegionRecommendation).length) ||\r\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\r\n (strip && strip.tabs.length)\r\n )\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n getTabDataByfilter(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n // tslint:disable:no-console\r\n console.log('strip -- ', strip);\r\n // tslint:disable:no-console\r\n console.log('currentTab -- ', currentTab);\r\n // tslint:disable:no-console\r\n console.log('calculateParentStatus-- ', calculateParentStatus);\r\n // TODO: Write logic for individual filter if passed in config\r\n // add switch case based on config key passed\r\n }\r\n\r\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\r\n let returnValue = 0;\r\n return returnValue;\r\n }\r\n\r\n translateLabels(label: string, type: any) {\r\n return this.langtranslations.translateLabel(label, type, '');\r\n }\r\n\r\n identify(index: number, item: any) {\r\n if (index >= 0) { }\r\n return item;\r\n }\r\n tracker(index: number, item: any) {\r\n if (index >= 0) { }\r\n return _.get(item, 'widgetData.content.identifier')\r\n }\r\n\r\n raiseTelemetry(stripData: any){\r\n this.telemtryResponse.emit(stripData)\r\n }\r\n\r\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\r\n if(this.emitViewAll) {\r\n this.viewAllResponse.emit(stripData)\r\n } else {\r\n this.router.navigate([path], { queryParams: queryParamsData })\r\n }\r\n }\r\n\r\n // new code writting from here====new====\r\n\r\n fetchForYouData(strip: NsContentStripWithTabsAndPills.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip && strip.type === 'forYou') {\r\n if (strip.tabs && strip.tabs.length) {\r\n const firstTab = strip.tabs[0];\r\n const pillData = firstTab.pillsData[0]\r\n if (pillData.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allPills = this.stripsResultDataMap[strip.key].tabs[0].pillsData;\r\n const currenPillsFromMap = (allPills && allPills.length && allPills[0]) as NsContentStripWithTabsAndPills.IContentStripTab;\r\n this.getTabDataByNewReqTrending(strip, 0, 0, currenPillsFromMap, calculateParentStatus);\r\n if (this.stripsResultDataMap[strip.key] && currenPillsFromMap) {\r\n this.stripsResultDataMap[strip.key].viewMoreUrl.queryParams = {\r\n ...this.stripsResultDataMap[strip.key].viewMoreUrl.queryParams,\r\n key:strip.key,\r\n tabSelected: firstTab.value,\r\n pillSelected: pillData.value,\r\n };\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n }\r\n\r\n async fetchFromSearchV6(strip: NsContentStripWithTabsAndPills.IContentStripUnit, calculateParentStatus = true) {\r\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\r\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\r\n // if (this.configSvc.activeLocale) {\r\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\r\n // } else {\r\n // strip.request.searchV6.locale = ['en']\r\n // }\r\n // }\r\n let originalFilters: any = [];\r\n // tslint:disable:no-console\r\n if (strip.request &&\r\n strip.request.searchV6 &&\r\n strip.request.searchV6.request &&\r\n strip.request.searchV6.request.filters) {\r\n originalFilters = strip.request.searchV6.request.filters;\r\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\r\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\r\n strip.request.searchV6.request.filters,\r\n );\r\n }\r\n if (strip.tabs && strip.tabs.length) {\r\n // TODO: Have to extract requestRequired to outer level of tabs config\r\n const firstTab = strip.tabs[0];\r\n if (firstTab.requestRequired) {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabsAndPills.IContentStripTab;\r\n\r\n this.getTabDataByNewReqSearchV6(strip, 0, 0, currentTabFromMap, calculateParentStatus);\r\n }\r\n }\r\n\r\n } else {\r\n try {\r\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\r\n // console.log('calling after - response, ', response)\r\n if (response && response.results) {\r\n // console.log('calling after-- ')\r\n if (response.results.result.content) {\r\n \r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(response.results.result.content, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n \r\n \r\n } else if (response.results.result.Event) {\r\n this.processStrip(\r\n strip,\r\n this.transformEventsToWidgets(response.results.result.Event, strip),\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async getTabDataByNewReqTrending(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n tabIndex: number,\r\n pillIndex: number,\r\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\r\n let tabResults: any[] = [];\r\n if (response && response.results && response.results.response) {\r\n const content = response.results.response[currentTab.value] || [];\r\n const widgets = this.transformContentsToWidgets(content, strip);\r\n \r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\r\n this.resetSelectedPill(allPills)\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n if(allPills && allPills.length && allPills[pillIndex]){\r\n allPills[pillIndex] = {\r\n ...allPills[pillIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n selected: true\r\n };\r\n }\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\r\n this.resetSelectedPill(allPills)\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n if(allPills && allPills.length && allPills[pillIndex]){\r\n allPills[pillIndex] = {\r\n ...allPills[pillIndex],\r\n widgets:[],\r\n fetchTabStatus: 'done',\r\n selected: true\r\n };\r\n }\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets:[],\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n }\r\n\r\n async getTabDataByNewReqSearchV6(\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n tabIndex: number,\r\n pillIndex: number,\r\n currentTab: NsContentStripWithTabsAndPills.IContentStripTab,\r\n calculateParentStatus: boolean\r\n ) {\r\n try {\r\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\r\n if (response && response.results) {\r\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\r\n let tabResults: any[] = [];\r\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\r\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\r\n const allPills = this.stripsResultDataMap[strip.key].tabs[tabIndex].pillsData;\r\n this.resetSelectedPill(allPills)\r\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\r\n if(allPills && allPills.length && allPills[pillIndex]){\r\n allPills[pillIndex] = {\r\n ...allPills[pillIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n selected: true\r\n };\r\n }\r\n allTabs[tabIndex] = {\r\n ...allTabs[tabIndex],\r\n widgets,\r\n fetchTabStatus: 'done',\r\n };\r\n tabResults = allTabs;\r\n }\r\n }\r\n this.processStrip(\r\n strip,\r\n widgets,\r\n 'done',\r\n calculateParentStatus,\r\n response.viewMoreUrl,\r\n tabResults // tabResults as widgets\r\n );\r\n } else {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n async trendingSearchRequest(strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n request: NsContentStripWithTabsAndPills.IContentStripUnit['request'],\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request.trendingSearch) {\r\n // check for the request if it has dynamic values]\r\n if (request.trendingSearch.request.filters.organisation &&\r\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\r\n ) {\r\n let userRootOrgId;\r\n if (this.configSvc.userProfile) {\r\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\r\n }\r\n request.trendingSearch.request.filters.organisation = userRootOrgId;\r\n }\r\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\r\n const showViewMore = Boolean(\r\n results.result &&\r\n strip.request &&\r\n results.result[strip.request.trendingSearch.responseKey] &&\r\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\r\n strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n request &&\r\n request.trendingSearch &&\r\n request.trendingSearch.request &&\r\n request.trendingSearch.request.filters\r\n ? JSON.stringify(\r\n this.transformSearchV6FiltersV2(\r\n originalFilters,\r\n )\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n\r\n let proccesedResult: any = []\r\n if (results && results.response && results.response.certifications) {\r\n results.response.certifications.map((result: any) => {\r\n if (result.source === this.channnelName) {\r\n proccesedResult.push(result)\r\n }\r\n })\r\n results = {response: {certifications: proccesedResult}}\r\n }\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n if (error.error && error.error.status === 400) {\r\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\r\n }\r\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\r\n reject(error);\r\n },);\r\n }\r\n });\r\n }\r\n\r\n public tabClicked(tabEvent: MatTabChangeEvent, pillIndex: any, stripMap: IStripUnitContentData, stripKey: string) {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].fetchTabStatus = 'inprogress';\r\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = true;\r\n stripMap.showOnLoader = true;\r\n }\r\n const data: WsEvents.ITelemetryTabData = {\r\n label: `${tabEvent.tab.textLabel}`,\r\n index: tabEvent.index,\r\n };\r\n this.eventSvc.raiseInteractTelemetry(\r\n {\r\n type: WsEvents.EnumInteractTypes.CLICK,\r\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\r\n id: `${_.camelCase(data.label)}-tab`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.HOME,\r\n }\r\n );\r\n\r\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\r\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index].pillsData[pillIndex];\r\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\r\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\r\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\r\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\r\n tabSelected: currentTabFromMap.value,\r\n pillSelected: currentPillFromMap.value,\r\n };\r\n }\r\n\r\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\r\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\r\n // call API to get tab data and process\r\n // this.processStrip(currentStrip, [], 'fetching', true, null)\r\n if (currentPillFromMap.request.searchV6) {\r\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, 0, currentPillFromMap, true);\r\n } else if (currentPillFromMap.request.trendingSearch) {\r\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, 0, currentPillFromMap, true);\r\n }\r\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n // stripMap.tabs[tabEvent.index].tabLoading = false;\r\n // }\r\n\r\n stripMap.tabs[tabEvent.index].pillsData[pillIndex].tabLoading = false;\r\n } else {\r\n // this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\r\n // setTimeout(() => {\r\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n // stripMap.tabs[tabEvent.index].tabLoading = false;\r\n // stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\r\n // stripMap.showOnLoader = false;\r\n // }\r\n // }, 200);\r\n }\r\n }\r\n }\r\n\r\n pillClicked(event: any, stripMap: IStripUnitContentData, stripKey: any, pillIndex: any, tabIndex: any) {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = true;\r\n stripMap.showOnLoader = true;\r\n }\r\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex];\r\n const currentPillFromMap: any = stripMap.tabs && stripMap.tabs[tabIndex].pillsData[pillIndex];\r\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\r\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\r\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\r\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\r\n tabSelected: currentTabFromMap.value,\r\n pillSelected: currentPillFromMap.value,\r\n };\r\n }\r\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick && currentPillFromMap) {\r\n if (currentPillFromMap.requestRequired && currentPillFromMap.request) {\r\n // call API to get tab data and process\r\n // this.processStrip(currentStrip, [], 'fetching', true, null)\r\n if (currentPillFromMap.request.searchV6) {\r\n this.getTabDataByNewReqSearchV6(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\r\n } else if (currentPillFromMap.request.trendingSearch) {\r\n this.getTabDataByNewReqTrending(currentStrip, tabIndex, pillIndex, currentPillFromMap, true);\r\n }\r\n // if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\r\n // stripMap.tabs[tabEvent.index].tabLoading = false;\r\n // }\r\n\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\r\n } else {\r\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'inprogress';\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\r\n stripMap.showOnLoader = true;\r\n }\r\n setTimeout(() => {\r\n if (stripMap && stripMap.tabs && stripMap.tabs[tabIndex]) {\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].fetchTabStatus = 'done';\r\n stripMap.tabs[tabIndex].pillsData[pillIndex].tabLoading = false;\r\n stripMap.showOnLoader = false;\r\n this.resetSelectedPill(stripMap.tabs[tabIndex].pillsData)\r\n stripMap.tabs[tabIndex].pillsData[pillIndex]['selected']=true\r\n }\r\n }, 200);\r\n }\r\n }\r\n }\r\n\r\n async searchV6Request(strip: NsContentStripWithTabsAndPills.IContentStripUnit,\r\n request: NsContentStripWithTabsAndPills.IContentStripUnit['request'],\r\n calculateParentStatus: boolean\r\n ): Promise<any> {\r\n const originalFilters: any = [];\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request.searchV6) {\r\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\r\n const showViewMore = Boolean(\r\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\r\n );\r\n const viewMoreUrl = showViewMore\r\n ? {\r\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\r\n queryParams: {\r\n tab: 'Learn',\r\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\r\n f:\r\n request &&\r\n request.searchV6 &&\r\n request.searchV6.request &&\r\n request.searchV6.request.filters\r\n ? JSON.stringify(\r\n this.transformSearchV6FiltersV2(\r\n originalFilters,\r\n )\r\n )\r\n : {},\r\n },\r\n }\r\n : null;\r\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\r\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\r\n // }\r\n resolve({ results, viewMoreUrl });\r\n }, (error: any) => {\r\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n\r\n getSelectedPillIndex(tabdata: any, tabIndex: any) {\r\n if(tabdata.pillsData && tabdata.pillsData.length) {\r\n let index = tabdata.pillsData.findIndex((pill: any) => {\r\n return pill.selected\r\n });\r\n return index\r\n }\r\n return 0\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // cbp plans\r\n\r\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\r\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\r\n\r\n let courses: NsContent.IContent[];\r\n let tabResults: any[] = [];\r\n const response = await this.userSvc.fetchCbpPlanList().toPromise();\r\n if (response) {\r\n courses = response;\r\n if (strip.tabs && strip.tabs.length) {\r\n tabResults = this.splitCbpTabsData(courses, strip);\r\n let countOfWidget = true\r\n if(strip && strip.tabs && strip.tabs.length) {\r\n strip.tabs.forEach((tab:any)=> {\r\n if(tab.pillsData && tab.pillsData.length) {\r\n tab.pillsData.forEach((pill: any) => {\r\n if(pill && pill.widgets && pill.widgets.length){\r\n if(countOfWidget){\r\n pill.selected = true\r\n countOfWidget= false\r\n }\r\n }\r\n });\r\n }\r\n })\r\n }\r\n await this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(courses, strip),\r\n 'done',\r\n calculateParentStatus,\r\n '',\r\n tabResults\r\n );\r\n } else {\r\n this.processStrip(\r\n strip,\r\n this.transformContentsToWidgets(courses, strip),\r\n 'done',\r\n calculateParentStatus,\r\n 'viewMoreUrl',\r\n );\r\n }\r\n }\r\n clearInterval(this.enrollInterval);\r\n }\r\n }\r\n\r\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabsAndPills.IContentStripUnit) {\r\n let tabResults: any[] = [];\r\n const splitData = this.getTabsList(\r\n contentNew,\r\n strip,\r\n );\r\n if (strip.tabs && strip.tabs.length) {\r\n for (let i = 0; i < strip.tabs.length; i += 1) {\r\n if( strip.tabs[i].value === \"myIgotPlans\") {\r\n let checkWidgetAndActivePill = true\r\n if (strip.tabs[i].pillsData && strip.tabs[i].pillsData.length) {\r\n for (let j = 0; j < strip.tabs[i].pillsData.length; j += 1) {\r\n // if(j === 0 ){\r\n // if(strip.tabs[i].pillsData[j].widgets && strip.tabs[i].pillsData[j].widgets.length ) {\r\n // strip.tabs[i].pillsData[j].selected = true\r\n // checkWidgetAndActivePill = false\r\n // }\r\n // strip.tabs[i].pillsData[j].selected = true\r\n // }\r\n if (strip.tabs[i].pillsData[j]) {\r\n tabResults.push(\r\n {\r\n ...strip.tabs[i].pillsData[j],\r\n fetchTabStatus: 'done',\r\n ...(splitData.find(itmInner => {\r\n if (strip.tabs[i].pillsData&& strip.tabs[i].pillsData[j] && itmInner.value === strip.tabs[i].pillsData[j].value) {\r\n return itmInner;\r\n }\r\n return undefined;\r\n })),\r\n }\r\n );\r\n }\r\n }\r\n strip.tabs[i].pillsData = tabResults\r\n }\r\n }\r\n }\r\n }\r\n \r\n return strip.tabs;\r\n }\r\n\r\n getTabsList(array: NsContent.IContent[],\r\n strip: NsContentStripWithTabsAndPills.IContentStripUnit) {\r\n let all: any[] = [];\r\n let upcoming: any[] = [];\r\n let overdue: any[] = [];\r\n array.forEach((e: any) => {\r\n all.push(e);\r\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n overdue.push(e);\r\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\r\n upcoming.push(e);\r\n }\r\n });\r\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\r\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\r\n\r\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\r\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\r\n\r\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\r\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n }\r\n });\r\n\r\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\r\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n }\r\n });\r\n\r\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\r\n\r\n overdue = overdue.filter((data: any): any => {\r\n return data.contentStatus < 2;\r\n });\r\n\r\n overdue = overdue.sort((a: any, b: any): any => {\r\n const firstDate: any = new Date(a.endDate);\r\n const secondDate: any = new Date(b.endDate);\r\n return firstDate > secondDate ? -1 : 1;\r\n });\r\n\r\n upcoming = upcoming.filter((data: any): any => {\r\n return data.contentStatus < 2;\r\n });\r\n \r\n return [\r\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\r\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\r\n { value: 'completed', widgets: this.transformContentsToWidgets(allCompleted, strip) },\r\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\r\n }\r\n resetSelectedPill(pillData: any){\r\n if(pillData && pillData.length){\r\n pillData.forEach((pill: any) => {\r\n pill['selected'] = false\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { HorizontalScrollerV2Module } from '../../horizontal-scroller-v2/horizontal-scroller-v2.module';\r\n\r\nimport {\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule} from '@angular/material';\r\nimport { ContentStripWithTabsPillsComponent } from './content-strip-with-tabs-pills.component';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\r\n\r\n// tslint:disable-next-line:function-name\r\nexport function HttpLoaderFactory1(http: HttpClient) {\r\n return new TranslateHttpLoader(http);\r\n}\r\n\r\n@NgModule({\r\n declarations: [ContentStripWithTabsPillsComponent],\r\n imports: [\r\n SbUiResolverModule,\r\n CommonModule,\r\n RouterModule,\r\n HorizontalScrollerV2Module,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatListModule,\r\n MatSidenavModule,\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatSnackBarModule,\r\n MatSelectModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatProgressSpinnerModule,\r\n MatButtonToggleModule,\r\n MatTabsModule,\r\n MatAutocompleteModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory1,\r\n deps: [HttpClient],\r\n },\r\n }),\r\n ],\r\n entryComponents: [ContentStripWithTabsPillsComponent],\r\n exports: [ContentStripWithTabsPillsComponent],\r\n})\r\nexport class ContentStripWithTabsPillsModule { }\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\nconst API_POINTS = {\r\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\r\n CERTIFICATE_URL: `apis/protected/v8/cohorts/course/batch/cert/download/`,\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class CompetencyPassbookService {\r\n // tslint: disable-next-line: whitespace\r\n constructor(private http: HttpClient) { }\r\n getCompetencyList(payload: any): Observable<any> {\r\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\r\n }\r\n\r\n fetchCertificate(certId: string): Observable<any> {\r\n return this.http.get(API_POINTS.CERTIFICATE_URL + certId)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { CompetencyPassbookService } from './competency-passbook.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'sb-uic-competency-passbook',\r\n templateUrl: './competency-passbook.component.html',\r\n styleUrls: ['./competency-passbook.component.scss']\r\n})\r\nexport class CompetencyPassbookComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() providerId: any\r\n @Input() cardDisplayCount: any = 3\r\n @Input() dynamicClass: any\r\n @Input() dynamicColor: any\r\n @Input() dynamicAlignPills: any = 'center'\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n @Output() temeletryResponse = new EventEmitter<any>()\r\n loadCometency: boolean = false\r\n loadCompetencyArea: boolean = false\r\n originalCompetencyArray: any\r\n competencyArea: any []\r\n selectedValue: any;\r\n competencyVersion:string = ''\r\n competencyTheme: any = []\r\n allcompetencyTheme: any ={}\r\n competencyStrength: any = 0\r\n competencyThemeLength: any = 6\r\n showAllTheme : any = [{name:'Show all', showAll: false}]\r\n\r\n // subTheme = ['Behavioural']\r\n // currentFilter = 'Behavioural'\r\n // currentCompetencies: any = []\r\n // competencyData: any\r\n constructor(public configSvc: ConfigurationsService,\r\n public contentSvc:WidgetContentService,\r\n public competencySvc: CompetencyPassbookService,\r\n public router : Router\r\n ) { \r\n \r\n }\r\n\r\n \r\n ngOnInit() {\r\n this.getAllCompetencies()\r\n // this.competencyData = this.objectData\r\n // this.filter(this.currentFilter)\r\n }\r\n // filter(filterValue: string) {\r\n // this.currentFilter = filterValue\r\n // this.currentCompetencies = this.competencyData.data.filter((item: any) => item.type === filterValue)\r\n // }\r\n showMore() {\r\n this.objectData.viewMore = !this.objectData.viewMore\r\n }\r\n\r\n // to get competency area from facets\r\n async getCompetencyArea(){let addfilter: any = {}\r\n if(this.providerId) {\r\n addfilter = {\r\n \"createdFor\": [\r\n this.providerId\r\n ],\r\n }\r\n }\r\n this.loadCompetencyArea = true\r\n let request = {\r\n \"request\": {\r\n \"query\": \"\",\r\n \"filters\": {\r\n \"contentType\":\"Course\",\r\n ...addfilter,\r\n \"status\": [\r\n \"Live\"\r\n ]\r\n },\r\n \"sort_by\": {\r\n \"lastUpdatedOn\": \"desc\"\r\n },\r\n \"facets\": [\r\n \"competencies_v5.competencyArea\"\r\n ],\r\n \"limit\": 0,\r\n \"offset\": 0,\r\n \"fields\": [\r\n ]\r\n }\r\n }\r\n \r\n try {\r\n const response = await this.callCompetencySearch(request);\r\n if (response && response.results) {\r\n if(response.results.result.facets){\r\n this.competencyArea = response.results.result.facets[0].values\r\n this.competencyStrength = this.competencyArea.reduce((partialSum: any, data: any) => partialSum + data.count, 0) \r\n this.selectedValue = this.competencyArea[0].name.toLowerCase()\r\n let addFilter = {\r\n \"createdFor\": [\r\n this.providerId\r\n ]\r\n }\r\n this.getcompetencyTheme(this.competencyArea[0].name, addFilter)\r\n this.loadCompetencyArea = false\r\n }\r\n }\r\n } catch (error) {\r\n this.loadCompetencyArea = false\r\n this.emptyResponse.emit(true)\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n async callCompetencySearch(request){\r\n return new Promise<any>((resolve, reject) => {\r\n if (request && request) {\r\n this.contentSvc.searchV6(request).subscribe(results => {\r\n resolve({ results });\r\n },(error: any) => {\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n // competency theam change\r\n competencyChange(e){\r\n let addfilter: any = {}\r\n if(this.providerId) {\r\n addfilter = {\r\n \"createdFor\": [\r\n this.providerId\r\n ],\r\n }\r\n }\r\n\r\n this.temeletryResponse.emit(e.name)\r\n \r\n this.getcompetencyTheme(e.name, addfilter)\r\n this.selectedValue = e.name\r\n }\r\n getAllCompetencies(){\r\n this.loadCometency = true\r\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\r\n this.competencySvc.getCompetencyList(request).subscribe((response: any) => {\r\n this.allcompetencyTheme = {}\r\n if(response && response.result && response.result.competency) {\r\n this.originalCompetencyArray = response.result.competency\r\n\r\n this.getCompetencyArea()\r\n response.result.competency.forEach(element => {\r\n element.children.forEach((childEle) => {\r\n let name = childEle.name.toLowerCase()\r\n this.allcompetencyTheme[name] = childEle\r\n this.allcompetencyTheme[name]['viewMore'] = false\r\n });\r\n });\r\n }\r\n this.loadCometency = false\r\n })\r\n }\r\n\r\n async getcompetencyTheme(value: any,addFilter?: any) {\r\n let request = {\r\n \"request\": {\r\n \"query\": \"\",\r\n \"filters\": {\r\n \"contentType\":\"Course\",\r\n ...addFilter,\r\n \"competencies_v5.competencyArea\" : value,\r\n \"status\": [\r\n \"Live\"\r\n ]\r\n },\r\n \"sort_by\": {\r\n \"lastUpdatedOn\": \"desc\"\r\n },\r\n \"facets\": [\r\n \"competencies_v5.competencyTheme\"\r\n ],\r\n \"limit\": 0,\r\n \"offset\": 0,\r\n \"fields\": [\r\n ]\r\n }\r\n }\r\n \r\n try {\r\n this.loadCometency = true\r\n const response = await this.callCompetencySearch(request);\r\n if (response && response.results) {\r\n if(response.results.result.facets){\r\n let competencyThemeData : any = response.results.result.facets[0].values \r\n this.originalCompetencyArray.forEach((element: any) => {\r\n if(element.name.toLowerCase() === value) {\r\n this.competencyTheme = competencyThemeData.filter((ele1: any) => {\r\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\r\n })\r\n this.showAllTheme = [{name:'Show all', showAll: false}]\r\n this.competencyThemeLength = 6\r\n }\r\n });\r\n this.resetViewMore()\r\n }\r\n this.loadCometency = false\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n }\r\n }\r\n\r\n resetViewMore(){\r\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\r\n this.allcompetencyTheme[comp]['viewMore'] = false\r\n })\r\n }\r\n viewMoreChildren(data: any) {\r\n data.viewMore = !data.viewMore\r\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\r\n }\r\n displayAllTheme(event: any) {\r\n this.showAllTheme[0]['showAll'] = !event.showAll \r\n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\r\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\r\n this.temeletryResponse.emit(event.name)\r\n }\r\n\r\n navigateToCompetency(compData: any){\r\n this.router.navigateByUrl(`app/learn/browse-by/competency/${compData.name}`)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sb-uic-pills',\r\n templateUrl: './pills.component.html',\r\n styleUrls: ['./pills.component.scss']\r\n})\r\nexport class PillsComponent implements OnInit {\r\n\r\n @Input() pillsData: any\r\n @Input() selectedValue: any\r\n @Input() isLoading: boolean = false\r\n @Output() pillClick = new EventEmitter<any>()\r\n @Input() dynamicClass: any = ''\r\n @Input() dynamicColor: any = ''\r\n @Input() requiredTitlecase: boolean = true\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n selectedPill(pillData: any) {\r\n this.pillClick.emit(pillData)\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipsModule, MatIconModule } from '@angular/material';\r\nimport { PillsComponent } from './pills.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [PillsComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatChipsModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [PillsComponent]\r\n})\r\nexport class PillsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CompetencyPassbookComponent } from './competency-passbook.component';\r\nimport { MatIconModule } from '@angular/material';\r\nimport { PillsModule } from './../pills/pills.module';\r\nimport { CompetencyPassbookService } from './competency-passbook.service';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [CompetencyPassbookComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n PillsModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [CompetencyPassbookComponent],\r\n providers:[CompetencyPassbookService]\r\n})\r\nexport class CompetencyPassbookModule { }\r\n","import { Injectable } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Observable } from 'rxjs'\r\n\r\nconst API_POINTS = {\r\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\r\n competency_URL: `apis/proxies/v8/v1/search/competenciesByOrg/`,\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class CompetencyPassbookMdoService {\r\n // tslint: disable-next-line: whitespace\r\n constructor(private http: HttpClient) { }\r\n getCompetencyList(payload: any): Observable<any> {\r\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\r\n }\r\n\r\n mdoCompetency(providerId: string): Observable<any> {\r\n return this.http.get(API_POINTS.competency_URL + providerId)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\r\nimport { WidgetContentService } from '../../_services/widget-content.service';\r\nimport { CompetencyPassbookMdoService } from './competency-passbook-mdo.service';\r\nimport { Router } from '@angular/router';\r\n@Component({\r\n selector: 'sb-uic-competency-passbook-mdo',\r\n templateUrl: './competency-passbook-mdo.component.html',\r\n styleUrls: ['./competency-passbook-mdo.component.scss']\r\n})\r\nexport class CompetencyPassbookMdoComponent implements OnInit {\r\n\r\n @Input() objectData: any\r\n @Input() providerId: any\r\n @Input() cardDisplayCount: any = 3\r\n @Input() dynamicClass: any\r\n @Input() dynamicColor: any\r\n @Input() dynamicAlignPills: any = 'center'\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n @Output() temeletryResponse = new EventEmitter<any>()\r\n loadCometency: boolean = false\r\n loadCompetencyArea: boolean = false\r\n originalCompetencyArray: any\r\n competencyArea: any []\r\n selectedValue: any;\r\n competencyVersion:string = ''\r\n competencyThemeData: any\r\n competencyTheme: any = []\r\n allcompetencyTheme: any ={}\r\n competencyStrength: any = 0\r\n competencyThemeLength: any = 6\r\n showAllTheme : any = [{name:'Show all', showAll: false}]\r\n\r\n // subTheme = ['Behavioural']\r\n // currentFilter = 'Behavioural'\r\n // currentCompetencies: any = []\r\n // competencyData: any\r\n constructor(public configSvc: ConfigurationsService,\r\n public contentSvc:WidgetContentService,\r\n public competencySvc: CompetencyPassbookMdoService,\r\n public router : Router\r\n ) { \r\n \r\n }\r\n\r\n \r\n ngOnInit() {\r\n this.getAllCompetencies()\r\n }\r\n\r\n\r\n getAllCompetencies(){\r\n this.loadCometency = true\r\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\r\n this.competencySvc.getCompetencyList(request).subscribe((response: any) => {\r\n this.allcompetencyTheme = {}\r\n if(response && response.result && response.result.competency) {\r\n this.originalCompetencyArray = response.result.competency\r\n this.getMdoCompetencies()\r\n // this.getCompetencyArea()\r\n response.result.competency.forEach(element => {\r\n element.children.forEach((childEle) => {\r\n let name = childEle.name.toLowerCase()\r\n this.allcompetencyTheme[name] = childEle\r\n this.allcompetencyTheme[name]['viewMore'] = false\r\n });\r\n });\r\n }\r\n this.loadCometency = false\r\n })\r\n }\r\n \r\n\r\n\r\n async getMdoCompetencies(){\r\n try {\r\n this.loadCometency = true\r\n const response = await this.getMdoCompetency();\r\n if (response && response.results) {\r\n if(response.results.result.facets && response.results.result.facets.length){\r\n let facetData = response.results.result.facets\r\n facetData.forEach((facet: any) => {\r\n if(facet.name === 'competencies_v5.competencyArea') {\r\n this.competencyArea = facet.values\r\n this.selectedValue = facet.values[0].name\r\n } else if(facet.name === 'competencies_v5.competencyTheme') {\r\n this.competencyThemeData = facet.values\r\n this.getCompetencyTheme()\r\n }\r\n });\r\n\r\n } else {\r\n this.emptyResponse.emit(true)\r\n }\r\n this.loadCometency = false\r\n }\r\n } catch (error) {\r\n // Handle errors\r\n // console.error('Error:', error);\r\n this.emptyResponse.emit(true)\r\n }\r\n }\r\n\r\n getCompetencyTheme(){\r\n this.originalCompetencyArray.forEach((element: any) => {\r\n if(element.name.toLowerCase() === this.selectedValue) {\r\n this.competencyTheme = this.competencyThemeData.filter((ele1: any) => {\r\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\r\n })\r\n this.showAllTheme = [{name:'Show all', showAll: false}]\r\n this.competencyThemeLength = 6\r\n } else if('Behavioral'.toLowerCase() === this.selectedValue) {\r\n this.competencyTheme = this.competencyThemeData.filter((ele1: any) => {\r\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\r\n })\r\n this.showAllTheme = [{name:'Show all', showAll: false}]\r\n this.competencyThemeLength = 6\r\n }\r\n });\r\n this.resetViewMore()\r\n }\r\n\r\n\r\n async getMdoCompetency(){\r\n return new Promise<any>((resolve, reject) => {\r\n if (this.providerId) {\r\n this.competencySvc.mdoCompetency(this.providerId).subscribe(results => {\r\n resolve({ results });\r\n },(error: any) => {\r\n reject(error);\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n // competency theam change\r\n competencyChange(e){\r\n let addfilter: any = {}\r\n if(this.providerId) {\r\n addfilter = {\r\n \"createdFor\": [\r\n this.providerId\r\n ],\r\n }\r\n }\r\n\r\n this.temeletryResponse.emit(e.name)\r\n \r\n this.selectedValue = e.name\r\n this.getCompetencyTheme()\r\n }\r\n\r\n\r\n\r\n resetViewMore(){\r\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\r\n this.allcompetencyTheme[comp]['viewMore'] = false\r\n })\r\n }\r\n viewMoreChildren(data: any) {\r\n data.viewMore = !data.viewMore\r\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\r\n }\r\n displayAllTheme(event: any) {\r\n this.showAllTheme[0]['showAll'] = !event.showAll \r\n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\r\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\r\n this.temeletryResponse.emit(event.name)\r\n }\r\n\r\n navigateToCompetency(compData: any){\r\n this.router.navigateByUrl(`app/learn/browse-by/competency/${compData.name}`)\r\n }\r\n\r\n showMore() {\r\n this.objectData.viewMore = !this.objectData.viewMore\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CompetencyPassbookMdoComponent } from './competency-passbook-mdo.component';\r\nimport { MatIconModule } from '@angular/material';\r\nimport { PillsModule } from './../pills/pills.module';\r\nimport { CompetencyPassbookMdoService } from './competency-passbook-mdo.service';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [CompetencyPassbookMdoComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n PillsModule,\r\n SkeletonLoaderLibModule\r\n ],\r\n exports: [CompetencyPassbookMdoComponent],\r\n providers:[CompetencyPassbookMdoService]\r\n})\r\nexport class CompetencyPassbookMdoModule { }\r\n","import { Injectable } from '@angular/core'\r\nimport { Observable, of } from 'rxjs'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { NsAppRating } from '../_models/rating.model'\r\n\r\nconst PROXY_SLAG_V8 = '/apis/proxies/v8'\r\nconst API_END_POINTS = {\r\n GET_RATING: (contentId: string, contentType: string, userId: string) =>\r\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/${contentType}/${userId}`,\r\n ADD_OR_UPDATE: `${PROXY_SLAG_V8}/ratings/v1/upsert`,\r\n GET_RATING_SUMMARY: (contentId: string, contentType: string) =>\r\n `${PROXY_SLAG_V8}/ratings/v1/summary/${contentId}/${contentType}`,\r\n GET_RATING_LOOKUP: `${PROXY_SLAG_V8}/ratings/v1/ratingLookUp`,\r\n GET_AUTHOR_REPLY: (contentId: string, userID: string) =>\r\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/Course/${userID}`,\r\n POST_AUTHOR_REPLY: `${PROXY_SLAG_V8}/ratings/v2/read`,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class RatingService {\r\n\r\n constructor(public http: HttpClient) { }\r\n\r\n getRating(contentId: string, contentType: string, userId: string): Observable<any> {\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\r\n if (!forPreview) {\r\n return this.http.get<any>(\r\n API_END_POINTS.GET_RATING(contentId, contentType, userId)\r\n )\r\n }\r\n return of({})\r\n }\r\n\r\n addOrUpdateRating(req: NsAppRating.IRating): Observable<any> {\r\n return this.http.post<any>(\r\n API_END_POINTS.ADD_OR_UPDATE, req\r\n )\r\n }\r\n\r\n getRatingSummary(contentId: string, contentType: string): Observable<any> {\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\r\n if (!forPreview) {\r\n return this.http.get<any>(\r\n API_END_POINTS.GET_RATING_SUMMARY(contentId, contentType)\r\n )\r\n }\r\n return of({})\r\n }\r\n\r\n getRatingLookup(req: NsAppRating.ILookupRequest): Observable<any> {\r\n return this.http.post<any>(\r\n API_END_POINTS.GET_RATING_LOOKUP, req\r\n )\r\n }\r\n\r\n getRatingReply(req: any): Observable<any> {\r\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\r\n if (!forPreview) {\r\n return this.http.post<any>(\r\n API_END_POINTS.POST_AUTHOR_REPLY, req\r\n )\r\n }\r\n return of({})\r\n }\r\n\r\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\r\n if (avg) {\r\n const avgRating = avg\r\n const ratingFloor = Math.floor(avgRating)\r\n // const difference = avgRating - ratingIndex\r\n if (ratingIndex <= ratingFloor) {\r\n return 'star'\r\n }\r\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\r\n return 'star_half'\r\n }\r\n }\r\n return 'star'\r\n }\r\n\r\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\r\n if (avg) {\r\n const avgRating = avg\r\n const ratingFloor = Math.floor(avgRating)\r\n if (ratingIndex <= ratingFloor) {\r\n return true\r\n }\r\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\r\n return true\r\n }\r\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 > 0.71) {\r\n return true\r\n }\r\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 < 0.29) {\r\n return false\r\n }\r\n }\r\n return false\r\n }\r\n\r\n getAuthorReply(contentId: string, userID: string): Observable<any> {\r\n return this.http.get<any>(\r\n API_END_POINTS.GET_AUTHOR_REPLY(contentId, userID)\r\n )\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nconst API_END_POINTS = {\r\n TOP_REVIEWS: `/apis/proxies/v8/ratings/v1/topReviews`\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserContentRatingLibService {\r\n\r\n constructor(private http: HttpClient) { }\r\n fetchTopReviews(doId: any): Observable<any> {\r\n return this.http.get<any>(`${API_END_POINTS.TOP_REVIEWS}/${doId}`)\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { RatingService } from '../../_services/rating.service';\r\nimport { ScrollableItemDirective } from './../../_directives/scrollable-item/scrollable-item.directive';\r\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\r\n\r\n@Component({\r\n selector: 'sb-uic-user-content-rating',\r\n templateUrl: './user-content-rating-lib.component.html',\r\n styleUrls: ['./user-content-rating-lib.component.scss']\r\n})\r\nexport class UserContentRatingLibComponent implements OnInit {\r\n currentIndex: any =0\r\n @Input() providerId : any = ''\r\n @Input() formData : any = ''\r\n @Output() emptyResponse = new EventEmitter<any>()\r\n styleData: any = {} \r\n contentdata: any = []\r\n\r\n\r\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\r\n constructor(public ratingService: RatingService,\r\n public userRatingSvc: UserContentRatingLibService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.styleData = this.formData && this.formData.sliderData && this.formData.sliderData.styleData\r\n this.getTopReviews();\r\n }\r\n\r\n getTopReviews() {\r\n this.contentdata = []\r\n this.userRatingSvc.fetchTopReviews(this.providerId).subscribe((response: any) => {\r\n if(response && response.result && response.result.content.length) {\r\n response.result.content.forEach((contentEle: any) => {\r\n let localData = {}\r\n localData['content'] = contentEle.contentInfo\r\n localData['rating'] = contentEle.rating\r\n localData['review'] = contentEle.review\r\n localData['userDetails'] = contentEle.userDetails\r\n localData['cardSubType'] = \"card-wide-lib\"\r\n localData['cardCustomeClass'] = \"\"\r\n this.contentdata.push(localData)\r\n });\r\n } else {\r\n this.emptyResponse.emit(true)\r\n }\r\n },(_error: any)=> {\r\n this.emptyResponse.emit(true)\r\n })\r\n }\r\n\r\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\r\n return this.ratingService.getRatingIcon(ratingIndex, avg)\r\n }\r\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\r\n return this.ratingService.getRatingIconClass(ratingIndex, avg)\r\n }\r\n\r\n getCurrentIndex(indexValue: any) {\r\n this.currentIndex = indexValue\r\n this.handleScrollClick(indexValue)\r\n }\r\n\r\n handleScrollClick(dataValue: string) {\r\n const item = this.scrollableItems.find(x => x.key === dataValue)\r\n item.scrollIntoView(\"nearest\");\r\n }\r\n\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipsModule, MatIconModule } from '@angular/material';\r\nimport { UserContentRatingLibComponent } from './user-content-rating-lib.component';\r\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport { SlidersLibModule } from '../sliders/sliders.module';\r\nimport { RatingService } from '../../_services/rating.service';\r\nimport { CardsModule } from '../cards/cards.module';\r\nimport { AvatarPhotoLibModule } from '../avatar-photo-lib/avatar-photo-lib.module';\r\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\r\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\r\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [UserContentRatingLibComponent],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatChipsModule,\r\n SkeletonLoaderLibModule,\r\n SlidersLibModule,\r\n CardsModule,\r\n AvatarPhotoLibModule,\r\n SlidersNgContentLibModule,\r\n ScrollableItemModule\r\n ],\r\n exports: [UserContentRatingLibComponent],\r\n providers: [RatingService, UserContentRatingLibService],\r\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class UserContentRatingLibModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sb-uic-mdo-channel-v1',\r\n templateUrl: './mdo-channel-v1.component.html',\r\n styleUrls: ['./mdo-channel-v1.component.scss']\r\n})\r\nexport class MdoChannelV1Component implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core'\r\nimport { MatTabChangeEvent } from '@angular/material'\r\nimport { ActivatedRoute, Router } from '@angular/router'\r\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2'\r\n/* tslint:disable */\r\nimport * as _ from 'lodash'\r\nimport { TranslateService } from '@ngx-translate/core'\r\nimport { MultilingualTranslationsService } from '@sunbird-cb/utils-v2'\r\n\r\n@Component({\r\n selector: 'sb-uic-mdo-channel-v2',\r\n templateUrl: './mdo-channel-v2.component.html',\r\n styleUrls: ['./mdo-channel-v2.component.scss']\r\n})\r\nexport class MdoChannelV2Component implements OnInit {\r\n @Input() sectionList:any = []\r\n channnelName = ''\r\n orgId = ''\r\n selectedIndex = 0\r\n hideCompetencyBlock: boolean = false\r\n contentTabEmptyResponseCount: number = 0\r\n titles = [\r\n { title: 'Learn', url: '/page/learn', icon: 'school', disableTranslate: false },\r\n {\r\n title: `MDO Channels`,\r\n url: `/app/learn/mdo-channels/all-channels`,\r\n icon: '', disableTranslate: true,\r\n },\r\n ]\r\n showModal: boolean = false\r\n descriptionMaxLength = 500\r\n isTelemetryRaised: boolean = false\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private eventSvc: EventService,\r\n private translate: TranslateService,\r\n private langtranslations: MultilingualTranslationsService,\r\n ) { \r\n if (this.route.snapshot.data && this.route.snapshot.data.formData\r\n && this.route.snapshot.data.formData.data\r\n && this.route.snapshot.data.formData.data.result\r\n && this.route.snapshot.data.formData.data.result.form\r\n && this.route.snapshot.data.formData.data.result.form.data\r\n && this.route.snapshot.data.formData.data.result.form.data.sectionList\r\n ) {\r\n this.sectionList = this.route.snapshot.data.formData.data.result.form.data.sectionList\r\n }\r\n this.langtranslations.languageSelectedObservable.subscribe(() => {\r\n if (localStorage.getItem('websiteLanguage')) {\r\n this.translate.setDefaultLang('en')\r\n const lang = localStorage.getItem('websiteLanguage')!\r\n this.translate.use(lang)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.route.params.subscribe(params => {\r\n this.channnelName = params['channel']\r\n this.orgId = params['orgId']\r\n this.titles.push({\r\n title: this.channnelName, icon: '', url: 'none', disableTranslate: true,\r\n })\r\n })\r\n }\r\n\r\n public tabClicked(tabEvent: MatTabChangeEvent) {\r\n this.raiseTelemetry(`${tabEvent.tab.textLabel} tab`)\r\n }\r\n hideContentStrip(event: any, contentStripData: any) {\r\n if (event) {\r\n contentStripData['hideSection'] = true\r\n this.contentTabEmptyResponseCount = this.contentTabEmptyResponseCount + 1\r\n // if(this.contentTabEmptyResponseCount === 4 ) {\r\n // this.selectedIndex = 1\r\n // }\r\n }\r\n }\r\n\r\n triggerOpenDialog(event: boolean) {\r\n if(event) {\r\n this.showModal = true\r\n document.body.style.overflow = 'hidden'\r\n }\r\n this.raiseTelemetry('btn open key annoucements')\r\n }\r\n\r\n onClose() {\r\n this.showModal = false\r\n document.body.style.overflow = 'auto'\r\n this.raiseTelemetry('btn close key annoucements')\r\n }\r\n\r\n raiseTelemetryInteratEvent(event: any) {\r\n if (event && event.viewMoreUrl) {\r\n this.raiseTelemetry(`${event.stripTitle} ${event.viewMoreUrl.viewMoreText}`)\r\n }\r\n if (!this.isTelemetryRaised && event && !event.viewMoreUrl) {\r\n this.eventSvc.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'mdo-channel',\r\n id: `${_.kebabCase(event.typeOfTelemetry.toLocaleLowerCase())}-card`,\r\n },\r\n {\r\n id: event.identifier,\r\n type: event.primaryCategory,\r\n },\r\n {\r\n pageIdExt: `${_.kebabCase(event.primaryCategory.toLocaleLowerCase())}-card`,\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n this.isTelemetryRaised = true\r\n }\r\n }\r\n\r\n raiseCompetencyTelemetry(name: string) {\r\n this.raiseTelemetry(`${name} core expertise`)\r\n }\r\n\r\n raiseTelemetry(name: string) {\r\n this.eventSvc.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'mdo-channel',\r\n id: `${_.kebabCase(name).toLocaleLowerCase()}`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n }\r\n\r\n hideCompetency(event: any) {\r\n if (event) {\r\n this.hideCompetencyBlock = true\r\n }\r\n }\r\n\r\n showAllContent(_stripData: any, contentStrip: any) {\r\n if (contentStrip && contentStrip.strips && contentStrip.strips.length) {\r\n const stripData: any = contentStrip.strips[0]\r\n if (stripData && stripData.request) {\r\n delete(stripData['loaderWidgets'])\r\n this.router.navigate(\r\n [`/app/learn/mdo-channels/${this.channnelName}/${this.orgId}/all-content`],\r\n { queryParams: { stripData: JSON.stringify(stripData) } })\r\n }\r\n } else {\r\n this.router.navigate(\r\n [`/app/learn/browse-by/provider/${this.channnelName}/${this.orgId}/all-CBP`])\r\n }\r\n }\r\n\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\r\nimport { MdoChannelV1Component } from './mdo-channel-v1/mdo-channel-v1.component';\r\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\r\n\r\nimport {\r\n AnnouncementsModule,\r\n CardsModule,\r\n CommonMethodsService,\r\n CommonStripModule,\r\n CompetencyPassbookModule,\r\n CompetencyPassbookMdoModule,\r\n ContentStripWithTabsLibModule,\r\n DataPointsModule,\r\n SlidersLibModule,\r\n HttpLoaderFactory,\r\n TopLearnersModule,\r\n CbpPlanModule,\r\n} from './../../../../public-api'\r\nimport { MdoChannelV2Component } from './mdo-channel-v2/mdo-channel-v2.component';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n\r\n@NgModule({\r\n declarations: [MdoChannelV1Component, MdoChannelV2Component],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatChipsModule,\r\n SkeletonLoaderLibModule,\r\n AnnouncementsModule,\r\n TopLearnersModule,\r\n CbpPlanModule,\r\n CardsModule,\r\n CommonStripModule,\r\n CompetencyPassbookModule,\r\n CompetencyPassbookMdoModule,\r\n ContentStripWithTabsLibModule,\r\n DataPointsModule,\r\n SlidersLibModule,\r\n MatTabsModule,\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 ],\r\n exports: [MdoChannelV1Component, MdoChannelV2Component],\r\n providers:[\r\n CommonMethodsService],\r\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class MDOChannelModule { }\r\n","import { DatePipe } from '@angular/common'\r\nimport { Component, Input, OnInit } from '@angular/core'\r\nimport { ActivatedRoute, Router } from '@angular/router'\r\nimport { EventService, WsEvents } from '@sunbird-cb/utils-v2'\r\nimport * as _ from 'lodash'\r\n\r\n@Component({\r\n selector: 'sb-uic-providers-v2',\r\n templateUrl: './providers-v2.component.html',\r\n styleUrls: ['./providers-v2.component.scss']\r\n})\r\nexport class ProvidersV2Component implements OnInit {\r\n\r\n @Input() sectionList:any = []\r\n providerName = ''\r\n providerId = ''\r\n navList: any\r\n hideCompetencyBlock = false\r\n // sectionList: any = []\r\n currentMonthAndYear: any\r\n titles = [\r\n { title: 'Learn', url: '/page/learn', icon: 'school', disableTranslate: false },\r\n { title: `All Providers`,\r\n url: `/app/learn/browse-by/provider/all-providers`,\r\n icon: '', disableTranslate: true,\r\n },\r\n ]\r\n\r\n descriptionMaxLength = 500\r\n isTelemetryRaised = false\r\n\r\n constructor(private route: ActivatedRoute,\r\n public router: Router, private datePipe: DatePipe, private events: EventService) {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n if (this.route.snapshot.data && this.route.snapshot.data.formData\r\n && this.route.snapshot.data.formData.data\r\n && this.route.snapshot.data.formData.data.result\r\n && this.route.snapshot.data.formData.data.result.form\r\n && this.route.snapshot.data.formData.data.result.form.data\r\n && this.route.snapshot.data.formData.data.result.form.data.sectionList\r\n ) {\r\n this.sectionList = this.route.snapshot.data.formData.data.result.form.data.sectionList\r\n }\r\n this.route.params.subscribe(params => {\r\n this.providerName = params['provider']\r\n this.providerId = params['orgId']\r\n this.titles.push({\r\n title: this.providerName, icon: '', url: 'none', disableTranslate: true,\r\n })\r\n })\r\n this.getNavitems()\r\n this.currentMonthAndYear = this.datePipe.transform(new Date(), 'MMMM y')\r\n }\r\n\r\n getNavitems() {\r\n this.navList = this.sectionList.filter(\r\n (obj: any) => obj.enabled && obj.navigation && obj.navOrder).sort(\r\n (a: any, b: any) => a.navOrder - b.navOrder)\r\n }\r\n\r\n scrollToSection(name: string) {\r\n let section: HTMLElement | any\r\n section = document.getElementById(name)\r\n if (section) {\r\n // section.scrollIntoView({ behavior: 'smooth', block: 'start',inline: 'nearest', offsetTop: yOffset })\r\n window.scrollTo({\r\n top: section.offsetTop - 121,\r\n behavior: 'smooth',\r\n })\r\n }\r\n }\r\n hideCompetency(event: any, columnData: any) {\r\n if (event) {\r\n this.hideCompetencyBlock = true\r\n columnData['navigation'] = false\r\n columnData['enabled'] = false\r\n this.navList.forEach((navItem: any) => {\r\n navItem.column.forEach((colEle: any) => {\r\n if (colEle.key === columnData.key) {\r\n navItem['navigation'] = false\r\n }\r\n })\r\n })\r\n }\r\n }\r\n hideContentStrip(event: any, contentStripData: any) {\r\n if (event) {\r\n contentStripData['hideSection'] = true\r\n }\r\n }\r\n hideLearnerReview(event: any, learnerReview: any) {\r\n if (event) {\r\n learnerReview['hideSection'] = true\r\n }\r\n }\r\n\r\n showAllContent(_stripData: any, contentStrip: any) {\r\n if (contentStrip && contentStrip.strips && contentStrip.strips.length) {\r\n const stripData: any = contentStrip.strips[0]\r\n if (stripData && stripData.request) {\r\n delete(stripData['loaderWidgets'])\r\n this.router.navigate(\r\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-content`],\r\n { queryParams: { stripData: JSON.stringify(stripData), pageDetails: true } })\r\n }\r\n } else {\r\n this.router.navigate(\r\n [`/app/learn/browse-by/provider/${this.providerName}/${this.providerId}/all-CBP`],\r\n { queryParams: { pageDetails: true } })\r\n }\r\n }\r\n\r\n raiseTelemetryInteratEvent(event: any) {\r\n if (event && event.viewMoreUrl) {\r\n this.raiseTelemetry(`${event.stripTitle} ${event.viewMoreUrl.viewMoreText}`)\r\n }\r\n if (!this.isTelemetryRaised && event && !event.viewMoreUrl) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'ATI/CTI',\r\n id: `${_.kebabCase(event.typeOfTelemetry.toLocaleLowerCase())}-card`,\r\n },\r\n {\r\n id: event.identifier,\r\n type: event.primaryCategory,\r\n },\r\n {\r\n pageIdExt: `${_.kebabCase(event.primaryCategory.toLocaleLowerCase())}-card`,\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n this.isTelemetryRaised = true\r\n }\r\n }\r\n\r\n raiseCompetencyTelemetry(name: string) {\r\n this.raiseTelemetry(`${name} core expertise`)\r\n }\r\n\r\n raiseTelemetry(name: string) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'ATI/CTI',\r\n id: `${_.kebabCase(name).toLocaleLowerCase()}`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n }\r\n\r\n raiseNavTelemetry(name: string) {\r\n this.events.raiseInteractTelemetry(\r\n {\r\n type: 'click',\r\n subType: 'ATI/CTI',\r\n id: `${_.kebabCase(name).toLocaleLowerCase()}-navigation`,\r\n },\r\n {},\r\n {\r\n module: WsEvents.EnumTelemetrymodules.LEARN,\r\n }\r\n )\r\n }\r\n}\r\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipsModule, MatIconModule, MatTabsModule } from '@angular/material';\r\nimport { SkeletonLoaderLibModule } from '../../skeleton-loader-lib/skeleton-loader-lib.module';\r\nimport {\r\n CalenderModule,\r\n CardsModule, \r\n CommonMethodsService, \r\n CommonStripModule, \r\n CompetencyPassbookModule, \r\n ContentStripWithTabsLibModule,\r\n DataPointsModule, \r\n HttpLoaderFactory, \r\n SlidersLibModule, \r\n UserContentRatingLibModule \r\n} from './../../../../public-api'\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ProvidersV2Component } from './providers-v2/providers-v2.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n\r\n@NgModule({\r\n declarations: [ProvidersV2Component],\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n RouterModule,\r\n MatChipsModule,\r\n SkeletonLoaderLibModule,\r\n CalenderModule,\r\n CardsModule,\r\n CommonStripModule,\r\n CompetencyPassbookModule,\r\n UserContentRatingLibModule,\r\n ContentStripWithTabsLibModule,\r\n DataPointsModule,\r\n SlidersLibModule,\r\n MatTabsModule,\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 ],\r\n exports: [ProvidersV2Component],\r\n providers:[\r\n CommonMethodsService],\r\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class ProvidersModule { }\r\n"]}
|