@sunbird-cb/consumption 0.0.24 → 0.0.25
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 +54 -25
- 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-karma-program-v2/card-karma-program-v2.component.js +23 -0
- package/esm2015/lib/_common/cards/card-karma-programs/card-karma-programs.component.js +3 -3
- package/esm2015/lib/_common/cards/cards.module.js +4 -2
- package/esm2015/sunbird-cb-consumption.js +23 -22
- package/esm5/lib/_common/cards/card-karma-program-v2/card-karma-program-v2.component.js +29 -0
- package/esm5/lib/_common/cards/card-karma-programs/card-karma-programs.component.js +3 -3
- package/esm5/lib/_common/cards/cards.module.js +4 -2
- package/esm5/sunbird-cb-consumption.js +23 -22
- package/fesm2015/sunbird-cb-consumption.js +27 -4
- package/fesm2015/sunbird-cb-consumption.js.map +1 -1
- package/fesm5/sunbird-cb-consumption.js +32 -4
- package/fesm5/sunbird-cb-consumption.js.map +1 -1
- package/lib/_common/cards/card-karma-program-v2/card-karma-program-v2.component.d.ts +5 -0
- package/package.json +1 -1
- package/sunbird-cb-consumption.d.ts +22 -21
- 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/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/_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/cards.module.ts","ng://@sunbird-cb/consumption/lib/registration-lib.config.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/_services/rating.service.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.directive.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/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/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/user-content-rating/user-content-rating-lib.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","Math","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","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","split","forEach","w","index","toUpperCase","slice","translateActualLabel","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","mapEnrollmentData","setTime","getData","fetchProfileUserBatchList","dataKey","checkTime","parsedData","apiCache","getSavedData","getTime","resetTime","fetchCbpPlanList","mapData","contentNew","todayDate","enrollList","count","childData","childEnrollData","daysCount","planDuration","OVERDUE","SUCCESS","UPCOMING","parentId","status","RETIRED","competencyArea","competencyTheme","competencyThemeType","competencySubTheme","competencyAreaId","competencyThemeId","competencySubThemeId","contentStatus","competencies_v5","element","sortedData","sort","firstDate","uniqueUsersByID","lodash.uniqBy","sortedByEndDate","lodash.orderBy","sortedByStatus","courseData","courses","Inject","IStripUnitContentData","ContentStripWithTabsLibComponent","_super","contentSvc","loggerSvc","eventSvc","utilitySvc","router","userSvc","langtranslations","emptyResponse","viewAllResponse","telemtryResponse","providerId","emitViewAll","random","stripsResultDataMap","stripsKeyOrder","showAccordionData","showParentLoader","showParentError","showParentNoData","errorDataCount","noDataCount","successDataCount","contentAvailable","veifiedKarmayogi","changeEventSubscription","todaysEvents","console","log","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","userData","eval","organisation","rootOrgId","designation","professionalDetails","loaderWidgets","transformSkeletonToWidgets","fetchFromEnrollmentList","fetchFromSearchV6","fetchFromTrendingContent","fetchAllCbpPlans","fetchAllTopContent","fetchAllFeaturedContent","fetchAllChannela","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","originalFilters","requestRequired","allTabs","currentTabFromMap","getTabDataByNewReqSearchV6","searchV6Request","results","Event","transformEventsToWidgets","tab","trendingSearch","getTabDataByNewReqTrending","trendingSearchRequest","responseKey","userRootOrgId","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","stripName","stripBackground","secondaryHeading","preWidgets","postWidgets","showOnNoData","showOnLoader","showOnError","checkParentStatus","stripWidgetsCount","settledCount","totalCount","api","cbpList","topContent","featureContent","channels","tabClicked","tabEvent","stripMap","stripKey","tabLoading","textLabel","raiseInteractTelemetry","WsEvents","EnumInteractTypes","CLICK","subType","EnumInteractSubTypes","HOME_PAGE_STRIP_TABS","_.camelCase","module","EnumTelemetrymodules","HOME","currentStrip","tabSelected","computeDataOnClick","getTabDataByfilter","tabIndex","currentTab","splitCbpTabsData","clearInterval","enrollInterval","getTabsList","all","upcoming","overdue","allCompleted","allData","allInCompleted","allCompletedOverDue","allCompletedAll","getSelectedIndex","returnValue","translateLabels","identify","item","tracker","postMethodFilters","postRequestMethod","redirectViewAll","queryParamsData","navigate","posterImage","appIcon","programCount","transformAllContentsToWidgets","raiseTelemetryInteratEvent","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","raiseTelemetry","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","InsiteDataService","fetchSearchData","fetchTrainingDetails","DataPointsComponent","insightSvc","layoutType","fetchDataFromApi","pageLayout","customArray","isDataLoading","objectData","createCustomArray","metrics","getInsiteData","nByn","dataColSpan","organisations","requestType","nudges","nudgeData","orgId","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","venue","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","IStripUnitCommonData","CommonStripComponent","commonMethodsSvc","dataType","ɵ0$2","CommonStripModule","AnnouncementsComponent","mobileHeight","openDialog","isLoading","viewMoreOrLess","expanded","openAnnouncements","AnnouncementsModule","ConsumptionModule","ROOT_WIDGET_CONFIG","card","_type","cardResource","CardsComponent","contSvc","isIntranetAllowedSettings","cbPlanInterval","setInterval","getCbPlanData","isInIntranet","getRedirectUrlData","cbpListArr","cbPlanMapData","CardResourceComponent","CardPortraitComponent","snackBar","isCardLoading","isCardFlipped","showFlip","defaultThumbnail","logos","defaultContent","sourceLogos","sources","defaultSLogo","defaultSourceLogo","showSnackbar","showIntranetContent","duration","isLiveOrMarkForDeletion","MatSnackBar","PipePublicURL","mainUrl","finalURL","contentHost","contentBucket","Pipe","PipePublicURLModule","DisplayContentTypeLibComponent","displayContentType","DEFAULT","displayContentTypeEnum","DisplayContentTypeLibModule","DefaultThumbnailDirective","wsUtilsDefaultThumbnail","isSrcUpdateAttemptedForDefault","srcUrl","updateSrc","DefaultThumbnailModule","PipeDurationTransformPipe","h","floor","defaultDuration","hmsCalculation","duration2","moment.duration","moment.utc","asMilliseconds","duration2H","padStart","dur","space","PipeDurationTransformModule","CardUserComponent","rollup","CardLandscapeComponent","acbpConstants","ver","version","CardWideComponent","CardMDOChannelComponent","CardWideV2Component","CardKarmaProgramsComponent","randomColorApply","randomColors","setRandomColor","randomIndex1","CardsModule","WIDGET_REGISTERED_LIB_MODULES","WIDGET_REGISTRATION_LIB_CONFIG","component","API_POINTS","COMPETENCY_LIST","CERTIFICATE_URL","CompetencyPassbookService","getCompetencyList","payload","fetchCertificate","CompetencyPassbookComponent","competencySvc","cardDisplayCount","dynamicAlignPills","loadCometency","loadCompetencyArea","competencyVersion","allcompetencyTheme","competencyStrength","competencyThemeLength","showAllTheme","showAll","getAllCompetencies","showMore","viewMore","getCompetencyArea","addfilter","facets","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","pillData","PillsModule","CompetencyPassbookModule","PROXY_SLAG_V8","ɵ1$2","ɵ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","ScrollableItemDirective","el","scrollIntoView","blockValue","block","ElementRef","TOP_REVIEWS","UserContentRatingLibService","fetchTopReviews","UserContentRatingLibComponent","ratingService","userRatingSvc","formData","styleData","contentdata","sliderData","getTopReviews","contentEle","localData","contentInfo","rating","review","userDetails","_error","getCurrentIndex","indexValue","handleScrollClick","dataValue","scrollableItems","x","ViewChildren","AvatarPhotoLibComponent","size","defaulfColor","randomColor","showBadge","showInitials","colors","randomcolors","photoUrl","initials","createInititals","datalen","randomIndex","circleColor","change","currentValue","previousValue","firstChange","charAt","AvatarPhotoLibModule","MatMenuModule","MatRippleModule","SlidersNgContentLibComponent","loadNgContentData","autoScroll","currentIndexValue","SlidersNgContentLibModule","ScrollableItemModule","UserContentRatingLibModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsumptionService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-consumption',\n template: `\n <p>\n consumption works!\n </p>\n `,\n styles: []\n})\nexport class ConsumptionComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core';\nimport {\n fromEvent,\n Subscription,\n timer,\n} from 'rxjs';\nimport { debounceTime, throttleTime } from 'rxjs/operators';\nimport { TFetchStatus } from '../../_constants/misc.constants';\nimport { ValueService } from '@sunbird-cb/utils-v2';\nimport { NsCommonStrip } from '../common-strip/common-strip.model';\nimport { NsContentStripMultiple } from '../../_models/content-strip-multiple.model';\n\n@Component({\n selector: 'sb-uic-horizontal-scroller-v2',\n templateUrl: './horizontal-scroller-v2.component.html',\n styleUrls: ['./horizontal-scroller-v2.component.scss'],\n})\n\nexport class HorizontalScrollerV2Component implements OnInit, OnChanges, OnDestroy {\n\n @Input() loadStatus: TFetchStatus = 'fetching';\n @Input() id: string = '';\n @Input() onHover = false;\n @Input() sliderConfig: any = {\n showNavs: true,\n showDots: true,\n cerificateCardMargin: false,\n };\n @Output() loadNext = new EventEmitter();\n @Input() widgetsLength: any;\n @Input() defaultMaxWidgets: any;\n @Input() stripConfig: any;\n @ViewChild('horizontalScrollElem', { static: true })\n horizontalScrollElem: ElementRef | null = null;\n\n enablePrev = false;\n enableNext = false;\n activeNav = 0;\n cardSubType = 'standard';\n bottomDotsArray: any = [];\n private scrollObserver: Subscription | null = null;\n isMobile = false\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n\n constructor(private valueSvc: ValueService) { }\n\n ngOnInit() {\n this.cardSubType = this.stripConfig && this.stripConfig.cardSubType ? this.stripConfig.cardSubType : 'standard';\n if (this.horizontalScrollElem) {\n const horizontalScrollElem = this.horizontalScrollElem;\n this.scrollObserver = fromEvent(\n horizontalScrollElem.nativeElement,\n 'scroll',\n )\n .pipe(debounceTime(100), throttleTime(100))\n .subscribe(_ => {\n this.updateNavigationBtnStatus(horizontalScrollElem\n .nativeElement as HTMLElement);\n });\n setTimeout(() => {\n this.getBottomDotsArray();\n }, 700);\n }\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n\n ngOnChanges() {\n timer(100).subscribe(() => {\n if (this.horizontalScrollElem) {\n this.updateNavigationBtnStatus(this.horizontalScrollElem\n .nativeElement as HTMLElement);\n }\n });\n setTimeout(() => {\n this.getBottomDotsArray();\n }, 700);\n }\n\n ngOnDestroy() {\n if (this.scrollObserver) {\n this.scrollObserver.unsubscribe();\n }\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n\n showPrev() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft -= 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\n behavior: 'smooth',\n });\n \n const elem = this.horizontalScrollElem.nativeElement\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav -= 1;\n } else {\n if(this.sliderConfig.arrowsAlwaysOn) {\n if(this.horizontalScrollElem.nativeElement.scrollLeft === 0){\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: elem.scrollWidth,\n behavior: 'smooth',\n });\n this.activeNav = this.bottomDotsArray.length - 1;\n }\n }\n }\n }\n }\n\n showNext() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft += 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\n behavior: 'smooth',\n });\n const elem = this.horizontalScrollElem.nativeElement\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav += 1;\n } else {\n if(this.sliderConfig.arrowsAlwaysOn) {\n if(this.horizontalScrollElem.nativeElement.scrollLeft !== 0 && elem.clientWidth + elem.scrollLeft >= elem.scrollWidth ){\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: 0,\n behavior: 'smooth',\n });\n this.activeNav = 0;\n }\n }\n }\n }\n }\n\n private updateNavigationBtnStatus(elem: HTMLElement) {\n debugger\n this.enablePrev = true;\n this.enableNext = true;\n if (elem.scrollLeft === 0) {\n if(!this.sliderConfig.arrowsAlwaysOn) {\n this.enablePrev = false;\n }\n this.activeNav = 0;\n }\n if (elem.scrollWidth === Math.round(elem.clientWidth + elem.scrollLeft)) {\n if (this.loadStatus === 'hasMore') {\n this.loadNext.emit();\n } else {\n if(!this.sliderConfig.arrowsAlwaysOn) {\n this.enableNext = false;\n }\n if (this.bottomDotsArray.length) {\n this.activeNav = this.bottomDotsArray.length - 1;\n }\n }\n }\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth);\n }\n }\n\n slideTo(ele: any) {\n const diff = ele - this.activeNav;\n // if (ele > this.activeNav && ele !== this.activeNav) {\n // if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // } else {\n // if (this.horizontalScrollElem && ele >= 0 && ele !== this.activeNav) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft - (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // }\n if (this.horizontalScrollElem) {\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth * diff),\n behavior: 'smooth',\n });\n }\n this.activeNav = ele;\n }\n\n getBottomDotsArray() {\n if (this.horizontalScrollElem) {\n this.bottomDotsArray = [];\n let cardWidth;\n let arrLength;\n if (this.cardSubType !== 'card-wide-v2') {\n cardWidth = this.cardSubType === 'standard' ? 245 :\n ((document.getElementsByClassName(this.cardSubType) &&\n document.getElementsByClassName(this.cardSubType)[0] !== undefined)\n ? document.getElementsByClassName(this.cardSubType)[0].clientWidth : 245);\n if (document.getElementById(`${this.id}`)) {\n const scrollerWidth = document.getElementById(`${this.id}`).clientWidth;\n const totalCardsLength = cardWidth * this.widgetsLength;\n if (totalCardsLength > scrollerWidth) {\n arrLength = (scrollerWidth / cardWidth);\n this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?\n this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets;\n arrLength = this.defaultMaxWidgets / arrLength;\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i);\n }\n // console.log('this.cardSubType', this.cardSubType, arrLength, this.widgetsLength ,\n // this.defaultMaxWidgets, scrollerWidth, this.bottomDotsArray)\n }\n }\n } else {\n setTimeout(() => {\n arrLength = document.getElementsByClassName(this.cardSubType).length;\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i);\n }\n }, 1000);\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HorizontalScrollerV2Component } from './horizontal-scroller-v2.component';\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material';\n\n@NgModule({\n declarations: [HorizontalScrollerV2Component],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n ],\n exports: [HorizontalScrollerV2Component],\n})\nexport class HorizontalScrollerV2Module { }\n","export namespace NsContent {\n export interface IContinueLearningData extends IContent {\n continueData: any;\n }\n\n export interface IContinueLearningDataReq {\n request: {\n userId: string | undefined,\n courseId: string,\n contentIds: string[],\n batchId: string | undefined | null\n fields?: string[]\n };\n }\n\n export interface IContent {\n platform?: any;\n addedOn: string;\n appIcon: string;\n artifactUrl: string;\n averageRating?: any;\n // this will be used to content form enrollment user list\n batches?: any;\n batch?: any;\n body?: string;\n certificationList?: IRelatedContentMeta[];\n certificationStatus?: TCertificationStatus;\n certificationSubmissionDate?: string;\n certificationUrl: string;\n childNodes?: string[];\n children: IContent[];\n childrenClassifiers?: string[];\n clients?: IClient[];\n collections?: IContent[];\n completionPercentage?: number | null;\n completionStatus?: number;\n difficultyLevel: string;\n contentId: string;\n contentType: EContentTypes;\n contentUrlAtSource: string;\n creatorContacts: ICreator[];\n\n creatorDetails: ICreator[];\n creatorLogo: string;\n creatorPosterImage: string;\n creatorThumbnail: string;\n\n curatedTags: string[];\n description: string;\n displayContentType: EDisplayContentTypes; // For UI\n downloadUrl?: string;\n duration: number;\n enrolledDate?: string;\n exclusiveContent?: boolean;\n expiryDate?: string;\n equivalentCertifications?: IRelatedContentMeta[];\n hasAccess: boolean;\n hasAssessment?: string;\n idealScreenSize?: string;\n identifier: string;\n introductoryVideo?: string;\n introductoryVideoIcon?: string;\n learningTrack?: string;\n isExternal: boolean;\n isIframeSupported: 'Yes' | 'No' | 'Maybe';\n isInIntranet?: boolean;\n keywords?: string[];\n kArtifacts?: IRelatedContentMeta[];\n lastContentAccessTime?: string;\n lastUpdatedOn: string;\n learningMode?: TLearningMode;\n learningObjective: string;\n labels?: string[];\n locale?: string;\n hasTranslations?: { identifier: string; locale: string }[];\n isTranslationOf?: { identifier: string; locale: string }[];\n me_totalSessionsCount: number;\n mediaType: string;\n mimeType: EMimeTypes;\n msArtifactDetails?: IMSArtifactDetails;\n mode?: ETagType;\n name: string;\n nextCertificationAttemptDate?: string;\n playgroundInstructions?: string;\n playgroundResources?: IResourcePlayground[];\n postContents?: IPrePostContent[];\n posterImage?: string;\n preContents?: IPrePostContent[];\n preRequisites: string;\n price?: {\n currency: string\n value: number\n };\n primaryCategory: EPrimaryCategory;\n proctorUrl?: string;\n progress?: IMarkAsCompleteProgress;\n publishedOn: string;\n recentCertificationAttemptScore?: number;\n recommendationReasons?: string[];\n region?: string[];\n registrationUrl?: string;\n registrationInstructions?: string;\n resourceCategory?: string[];\n resourceType: string;\n size?: number;\n skills: ISkill[];\n softwareRequirements?: IResourceDetail[];\n sourceName: string;\n sourceShortName: string;\n sourceIconUrl?: string;\n sourceUrl?: string;\n ssoEnabled?: boolean;\n lastReadContentId?: string;\n status:\n | 'Draft'\n | 'InReview'\n | 'QualityReview'\n | 'Reviewed'\n | 'Processing'\n | 'Live'\n | 'Deleted'\n | 'MarkedForDeletion'\n | 'Expired';\n subTitle?: string;\n subTitles?: ISubtitle[];\n studyMaterials?: IRelatedContentMeta[];\n systemRequirements?: string[];\n tags: ITag[];\n topics: IContentTopic[];\n totalLikes?: { [key: string]: number };\n totalRating?: number;\n track: ITrack[];\n uniqueLearners?: number;\n viewCount?: { [key: string]: number };\n reason?: string; // required for Knowledge board\n trainingLHubCount?: number; // for LHub trainings\n verifiers?: {\n // required for External Certifications\n name: string\n email: string\n id: string\n }[];\n references?: { url: string; title: string }[];\n resumePage?: number; // For player WebModule in UI\n [key: string]: any;\n optionalReading: boolean;\n additionalTags?: string[];\n }\n\n export interface IContentResponse {\n id: string;\n params: any;\n responseCode: string;\n result: {\n content: IContent\n };\n ts: string;\n ver: string;\n }\n\n export interface IBatch {\n batchId: string;\n createdBy: string;\n endDate: string | null;\n enrollmentType: string;\n identifier: string;\n name: string;\n startDate: string;\n status: number;\n cert_templates?: null;\n collectionId: string;\n courseId: string;\n createdDate: string;\n createdFor: string[];\n description?: null;\n enrollmentEndDate: string | null;\n id: string;\n mentors?: string[] | null;\n tandc?: null;\n updatedDate?: string | null;\n }\n\n export interface IBatchListResponse {\n content?: IBatch[];\n count?: number;\n enrolled?: boolean;\n workFlow?: {\n wfInitiated?: boolean\n batch?: any\n wfItem?: any\n };\n }\n\n export interface ICourse {\n active: true;\n addedBy: string;\n batch: IBatch;\n batchId: string;\n certificates: [];\n collectionId: string;\n completedOn: string | null;\n completionPercentage: number | null;\n completionStatus?: number;\n content: IContent;\n contentId: string;\n contentStatus: any;\n courseId: string;\n courseLogoUrl: string;\n courseName: string;\n dateTime: number;\n description: string;\n enrolledDate: string;\n issuedCertificates: [];\n lastContentAccessTime?: string;\n lastReadContentId?: string;\n lastReadContentStatus: string | null;\n leafNodesCount: number;\n progress: number;\n status: number;\n userId: string;\n }\n\n export interface IContentMinimal {\n appIcon: string;\n artifactUrl: string;\n difficultyLevel: string;\n contentType: EContentTypes;\n description: string;\n displayContentType?: EDisplayContentTypes;\n duration: number;\n identifier: string;\n hasAccess?: boolean;\n isInIntranet?: boolean;\n learningMode?: TLearningMode;\n mimeType: EMimeTypes;\n name: string;\n creatorDetails: ICreator[];\n creatorContacts: ICreator[];\n posterImage: string;\n primaryCategory: EPrimaryCategory;\n resourceType?: string;\n totalRating?: number;\n }\n\n export interface ICollectionHierarchyResponse {\n data: IContent;\n hasMore: boolean;\n totalContents: number;\n }\n\n export interface IRelatedContentMeta {\n identifier: string;\n name: string;\n }\n\n type TCertificationStatus = 'ongoing' | 'passed' | 'canAttempt' | 'cannotAttempt';\n export type TLearningMode = 'Self-Paced' | 'Instructor-Led' | 'Open' | 'Closed';\n\n interface IMarkAsCompleteProgress {\n progressStatus: 'open' | 'started' | 'completed';\n showMarkAsComplete: boolean;\n markAsCompleteReason: string;\n progressSupported: boolean;\n progress: number | null;\n }\n\n interface ITag {\n id: string;\n type: string;\n value: string;\n }\n interface IMSArtifactDetails {\n channelId: string;\n videoId: string;\n }\n interface IClient {\n displayName: string;\n id: string;\n name: string;\n }\n interface ISubtitle {\n srclang: string;\n label: string;\n url: string;\n }\n interface IPrePostContent {\n identifier: string;\n name: string;\n }\n interface IResourceDetail {\n title?: string;\n url?: string;\n }\n interface IResourcePlayground {\n appIcon: string;\n artifactUrl: string;\n identifier: string;\n name: string;\n }\n interface ITrack {\n id: string;\n name: string;\n status: string;\n visibility: string;\n }\n interface ISkill {\n id: string;\n category: string;\n skill: string;\n name: string;\n }\n export interface ICreator {\n id: string;\n name: string;\n email: string;\n }\n export interface IContentTopic {\n identifier: string;\n name: string;\n }\n // API Based\n\n export interface IContact {\n id: string;\n name: string;\n email: string;\n }\n\n export interface IViewerContinueLearningRequest {\n resourceId: string;\n contextPathId: string;\n data: string;\n dateAccessed: number;\n contextType?: string;\n }\n /**\n * @deprecated Enum EContentTypes should not be used in future\n */\n export enum EContentTypes {\n PROGRAMV2 = 'Program',\n PROGRAM = 'Learning Path',\n CHANNEL = 'Channel',\n COURSE = 'Course',\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\n KNOWLEDGE_BOARD = 'Knowledge Board',\n LEARNING_JOURNEY = 'Learning Journeys',\n MODULE = 'CourseUnit',\n RESOURCE = 'Resource',\n }\n export enum EPrimaryCategory {\n PROGRAM = 'Program',\n COURSE = 'Course',\n MODULE = 'Course Unit',\n RESOURCE = 'Learning Resource',\n GOALS = 'GOALS',\n PLAYLIST = 'PLAYLIST',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n COMP_ASSESSMENT = 'Competency Assessment',\n FTB_QUESTION = 'FTB Question',\n MTF_QUESTION = 'MTF Question',\n MULTIPLE_CHOICE_QUESTION = 'Multiple Choice Question',\n SINGLE_CHOICE_QUESTION = 'Single Choice Question',\n MANDATORY_COURSE_GOAL = 'Mandatory Course Goal',\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\n BLENDED_PROGRAM = 'Blended Program',\n OFFLINE_SESSION = 'Offline Session',\n CURATED_PROGRAM = 'Curated Program',\n // following will not be available soon\n /**\n * @deprecated The type should not be used\n */\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\n /**\n * @deprecated The type should not be used\n */\n KNOWLEDGE_BOARD = 'Knowledge Board',\n /**\n * @deprecated The type should not be used\n */\n LEARNING_JOURNEY = 'Learning Journeys',\n /**\n * @deprecated The type should not be used\n */\n CHANNEL = 'Channel',\n }\n\n export enum ECourseCategory {\n INVITE_ONLY_PROGRAM = 'Invite-Only Program',\n MODERATED_PROGRAM = 'Moderated Program',\n BLENDED_PROGRAM = 'Blended Program',\n CURATED_PROGRAM = 'Curated Program',\n COURSE = 'Course',\n MODERATED_COURSE = 'Moderated Course',\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\n MODERATED_ASSESSEMENT = 'Moderated Assessment',\n }\n\n export enum WFBlendedProgramStatus {\n INITIATE = 'INITIATE',\n SEND_FOR_MDO_APPROVAL = 'SEND_FOR_MDO_APPROVAL',\n SEND_FOR_PC_APPROVAL = 'SEND_FOR_PC_APPROVAL',\n APPROVED = 'APPROVED',\n REJECTED = 'REJECTED',\n WITHDRAWN = 'WITHDRAWN',\n REMOVED = 'REMOVED',\n WITHDRAW = 'WITHDRAW',\n }\n export enum WFBlendedProgramApprovalTypes {\n ONE_STEP_PC = 'oneStepPCApproval',\n ONE_STEP_MDO = 'oneStepMDOApproval',\n TWO_STEP_MDO_PC = 'twoStepMDOAndPCApproval',\n TWO_STEP_PC_MDO = 'twoStepPCAndMDOApproval',\n }\n\n export const WFSTATUS_MSG_MAPPING: any = {\n INITIATE: '',\n SEND_FOR_MDO_APPROVAL: 'BatchEnrollL1Msg',\n SEND_FOR_PC_APPROVAL: 'BatchEnrollL2Msg',\n APPROVED: 'BatchEnrollApprovedMsg',\n REJECTED: 'BatchEnrollRejectedMsg',\n WITHDRAWN: 'BatchEnrollWithdrawMsg',\n REMOVED: 'BatchEnrollRemoveMsg',\n EXPIRED: 'BatchListExpiredMsg',\n };\n\n export enum EResourcePrimaryCategories {\n LEARNING_RESOURCE = 'Learning Resource',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n COMP_ASSESSMENT = 'Competency Assessment',\n OFFLINE_SESSION = 'Offline Session',\n }\n\n export enum EMiscPlayerSupportedCollectionTypes {\n PLAYLIST = 'Playlist',\n }\n export const PLAYER_SUPPORTED_COLLECTION_TYPES: string[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.CURATED_PROGRAM,\n EPrimaryCategory.BLENDED_PROGRAM,\n EPrimaryCategory.STANDALONE_ASSESSMENT,\n EMiscPlayerSupportedCollectionTypes.PLAYLIST,\n ];\n export const KB_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.RESOURCE,\n ];\n export const PLAYLIST_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.RESOURCE,\n ];\n export enum EMimeTypes {\n COLLECTION = 'application/vnd.ekstep.content-collection',\n ZIP = 'application/vnd.ekstep.html-archive',\n ZIP2 = 'application/vnd.ekstep.ecml-archive',\n HTML = 'application/html',\n HTML_TEXT = 'text/html',\n ILP_FP = 'application/ilpfp',\n IAP = 'application/iap-assessment',\n M4A = 'audio/m4a',\n MP3 = 'audio/mpeg',\n MP4 = 'video/mp4',\n M3U8 = 'application/x-mpegURL',\n INTERACTION = 'video/interactive',\n PDF = 'application/pdf',\n QUIZ = 'application/quiz',\n DRAG_DROP = 'application/drag-drop',\n HTML_PICKER = 'application/htmlpicker',\n WEB_MODULE = 'application/web-module',\n WEB_MODULE_EXERCISE = 'application/web-module-exercise',\n YOUTUBE = 'video/x-youtube',\n HANDS_ON = 'application/integrated-hands-on',\n RDBMS_HANDS_ON = 'application/rdbms',\n CLASS_DIAGRAM = 'application/class-diagram',\n CHANNEL = 'application/channel',\n COLLECTION_RESOURCE = 'resource/collection',\n APPLICATION_JSON = 'application/json',\n PRACTICE_RESOURCE = 'application/vnd.sunbird.questionset',\n FINAL_ASSESSMENT = 'application/vnd.sunbird.questionset',\n OFFLINE_SESSION = 'application/offline',\n // Added on UI Only\n CERTIFICATION = 'application/certification',\n PLAYLIST = 'application/playlist',\n TEXT_WEB = 'text/x-url',\n SURVEY = 'application/survey',\n QUESTION_SET = 'application/vnd.sunbird.questionset',\n QUESTION = 'application/vnd.sunbird.question',\n UNKNOWN = 'application/unknown',\n }\n export enum EDisplayContentTypes {\n ASSESSMENT = 'ASSESSMENT',\n STANDALONE_ASSESSMENT = 'STANDALONE ASSESSMENT',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n AUDIO = 'AUDIO',\n CERTIFICATION = 'CERTIFICATION',\n CHANNEL = 'Channel',\n CLASS_DIAGRAM = 'CLASS_DIAGRAM',\n COURSE = 'COURSE',\n DEFAULT = 'DEFAULT',\n DRAG_DROP = 'DRAG_DROP',\n EXTERNAL_CERTIFICATION = 'EXTERNAL_CERTIFICATION',\n EXTERNAL_COURSE = 'EXTERNAL_COURSE',\n GOALS = 'GOALS',\n HANDS_ON = 'HANDS_ON',\n IAP = 'IAP',\n INSTRUCTOR_LED = 'INSTRUCTOR_LED',\n INTERACTIVE_VIDEO = 'INTERACTIVE_VIDEO',\n KNOWLEDGE_ARTIFACT = 'KNOWLEDGE_ARTIFACT',\n MODULE = 'MODULE',\n PDF = 'PDF',\n SURVEY = 'SURVEY',\n PLAYLIST = 'PLAYLIST',\n PROGRAM = 'PROGRAM',\n QUIZ = 'QUIZ',\n RESOURCE = 'RESOURCE',\n RDBMS_HANDS_ON = 'RDBMS_HANDS_ON',\n VIDEO = 'VIDEO',\n WEB_MODULE = 'WEB_MODULE',\n WEB_PAGE = 'WEB_PAGE',\n YOUTUBE = 'YOUTUBE',\n LINK = 'LINK',\n KNOWLEDGE_BOARD = 'Knowledge Board',\n LEARNING_JOURNEY = 'Learning Journeys',\n BLENDED_PROGRAM = 'BLENDED PROGRAM',\n CURATED_PROGRAM = 'CURATED PROGRAM',\n }\n // for UI\n export enum EFilterCategory {\n ALL = 'ALL',\n LEARN = 'LEARN',\n PRACTICE = 'PRACTICE',\n ASSESS = 'ASSESS',\n }\n\n // for UI\n export enum ETagType {\n NEWLY_ADDED = 'NEWLY ADDED',\n }\n\n export const UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS: string[] = [\n // this is comment now for enabling links in the toc page for enrolled users\n // EMimeTypes.QUIZ,\n // EMimeTypes.APPLICATION_JSON,\n // EMimeTypes.WEB_MODULE_EXERCISE,\n\n ];\n export const PUBLIC_SUPPORTED_CONTENT_TYPES: EMimeTypes[] = [\n EMimeTypes.APPLICATION_JSON,\n EMimeTypes.FINAL_ASSESSMENT,\n EMimeTypes.HTML,\n EMimeTypes.HTML_TEXT,\n EMimeTypes.ZIP,\n EMimeTypes.ZIP2,\n EMimeTypes.M4A,\n EMimeTypes.MP3,\n EMimeTypes.MP4,\n EMimeTypes.PDF,\n EMimeTypes.YOUTUBE,\n EMimeTypes.TEXT_WEB,\n EMimeTypes.SURVEY,\n ];\n}\n","import { NsContent } from '../_models/widget-content.model';\n\nexport const VIEWER_ROUTE_FROM_MIME = (mimeType: NsContent.EMimeTypes) => {\n switch (mimeType) {\n case NsContent.EMimeTypes.MP3:\n return 'audio';\n case NsContent.EMimeTypes.M4A:\n return 'audio-native';\n case NsContent.EMimeTypes.COLLECTION:\n return 'html';\n case NsContent.EMimeTypes.CHANNEL:\n // case 'application/json' as any:\n // return 'channel'\n case NsContent.EMimeTypes.CERTIFICATION:\n return 'certification';\n case NsContent.EMimeTypes.HTML_TEXT:\n case NsContent.EMimeTypes.HTML:\n case NsContent.EMimeTypes.ZIP:\n if (window.location.href.includes('mobile/html')) {\n return 'mobile/html';\n }\n return 'html';\n case NsContent.EMimeTypes.TEXT_WEB:\n return 'youtube';\n case NsContent.EMimeTypes.SURVEY:\n return 'survey';\n case NsContent.EMimeTypes.IAP:\n return 'iap';\n case NsContent.EMimeTypes.ILP_FP:\n return 'ilp-fp';\n case NsContent.EMimeTypes.PDF:\n return 'pdf';\n case NsContent.EMimeTypes.MP4:\n case NsContent.EMimeTypes.M3U8:\n return 'video';\n case NsContent.EMimeTypes.YOUTUBE:\n return 'youtube';\n // return 'html'\n case NsContent.EMimeTypes.WEB_MODULE:\n return 'web-module';\n case NsContent.EMimeTypes.WEB_MODULE_EXERCISE:\n return 'web-module';\n case NsContent.EMimeTypes.CLASS_DIAGRAM:\n return 'class-diagram';\n case NsContent.EMimeTypes.HANDS_ON:\n return 'hands-on';\n case NsContent.EMimeTypes.RDBMS_HANDS_ON:\n return 'rdbms-hands-on';\n case NsContent.EMimeTypes.HTML_PICKER:\n return 'html-picker';\n case NsContent.EMimeTypes.QUIZ:\n case NsContent.EMimeTypes.APPLICATION_JSON:\n return 'quiz';\n case NsContent.EMimeTypes.PRACTICE_RESOURCE:\n return 'practice';\n case NsContent.EMimeTypes.COLLECTION_RESOURCE:\n return 'resource-collection';\n case NsContent.EMimeTypes.OFFLINE_SESSION:\n return 'offline-session';\n default:\n return 'html';\n }\n};\n\nexport function viewerRouteGenerator(\n id: string,\n mimeType: NsContent.EMimeTypes,\n collectionId?: string,\n collectionType?: string,\n forPreview = false,\n primaryCategory?: string,\n batchId?: string,\n courseName?: string,\n): { url: string; queryParams: { [key: string]: any } } {\n let collId = collectionId;\n let collType = collectionType;\n if (collType && !NsContent.PLAYER_SUPPORTED_COLLECTION_TYPES.includes(collType)) {\n collId = undefined;\n collType = undefined;\n }\n const url = `/viewer/${VIEWER_ROUTE_FROM_MIME(mimeType)}/${id}`;\n // tslint:disable-next-line\n // console.log(url,'========>Route from MIME TYPE<==========')\n const forcreator = window.location.href.includes('editMode=true');\n let queryParams = {};\n if (primaryCategory) {\n queryParams = {\n primaryCategory,\n };\n }\n if (collectionId && collectionType) {\n queryParams = { ...queryParams, collectionId: collId, collectionType: collType };\n }\n if (batchId) {\n queryParams = { ...queryParams, batchId };\n }\n if (courseName) {\n queryParams = { ...queryParams, courseName };\n }\n if (forPreview) {\n queryParams = { ...queryParams, preview: true };\n }\n if (forcreator) {\n queryParams = { ...queryParams, editMode: true };\n }\n return {\n queryParams,\n url,\n };\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationsService } from '@sunbird-cb/utils-v2';\nimport { Observable, of, EMPTY, BehaviorSubject, Subject } from 'rxjs';\nimport { catchError, retry, map, shareReplay } from 'rxjs/operators';\nimport { NsContentStripMultiple } from '../_models/content-strip-multiple.model';\nimport { NsContent } from '../_models/widget-content.model';\nimport { NSSearch } from '../_models/widget-search.model';\n// tslint:disable\nimport * as _ from 'lodash'\nimport { viewerRouteGenerator } from './viewer-route-util'\nimport * as moment_ from 'moment';\nconst moment = moment_;\n// tslint:enable\n\n// TODO: move this in some common place\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\n\nconst API_END_POINTS = {\n CONTENT: `${PROTECTED_SLAG_V8}/content`,\n AUTHORING_CONTENT: `/api/course/v1/hierarchy`,\n CONTENT_LIKES: `${PROTECTED_SLAG_V8}/content/likeCount`,\n SET_S3_COOKIE: `${PROTECTED_SLAG_V8}/content/setCookie`,\n SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8}/content/setImageCookie`,\n FETCH_MANIFEST: `${PROTECTED_SLAG_V8}/content/getWebModuleManifest`,\n FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8}/content/getWebModuleFiles`,\n MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8}/content/multiple`,\n CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8}/content/searchV5`,\n CONTENT_SEARCH_V6: `/apis/proxies/v8/sunbirdigot/search`,\n TRENDING_CONTENT_SEARCH: `apis/proxies/v8/trending/content/search`,\n CONTENT_SEARCH_RELATED_CBP_V6: `/apis/proxies/v8/sunbirdigot/search`,\n CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8}/content/searchRegionRecommendation`,\n CONTENT_HISTORY: `${PROTECTED_SLAG_V8}/user/history`,\n CONTENT_HISTORYV2: `/apis/proxies/v8/read/content-progres`,\n COURSE_BATCH_LIST: `/apis/proxies/v8/learner/course/v1/batch/list`,\n COURSE_BATCH: `/apis/proxies/v8/course/v1/batch/read`,\n AUTO_ASSIGN_BATCH: `/apis/protected/v8/cohorts/user/autoenrollment/`,\n AUTO_ASSIGN_CURATED_BATCH: `/apis/proxies/v8/curatedprogram/v1/enrol`,\n AUTO_ASSIGN_OPEN_PROGRAM: `/apis/proxies/v8/openprogram/v1/enrol`,\n USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8}/user/history/continue`,\n CONTENT_RATING: `${PROTECTED_SLAG_V8}/user/rating`,\n COLLECTION_HIERARCHY: (type: string, id: string) =>\n `${PROTECTED_SLAG_V8}/content/collection/${type}/${id}`,\n REGISTRATION_STATUS: `${PROTECTED_SLAG_V8}/admin/userRegistration/checkUserRegistrationContent`,\n MARK_AS_COMPLETE_META: (contentId: string) => `${PROTECTED_SLAG_V8}/user/progress/${contentId}`,\n ENROLL_BATCH: `/apis/proxies/v8/learner/course/v1/enrol`,\n ENROLL_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/enrol`,\n WITHDRAW_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/unenrol`,\n BLENDED_USER_WF: `/apis/proxies/v8/workflow/blendedprogram/user/search`,\n BLENDED_USER_COUNT: `apis/proxies/v8/workflow/blendedprogram/enrol/status/count`,\n CERT_ADD_TEMPLATE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/template/add`,\n CERT_ISSUE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/issue`,\n CERT_DOWNLOAD: (certId: any) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,\n READ_KARMAPOINTS: `/apis/proxies/v8/karmapoints/read`,\n CONTENT_READ: (contentId: any) => `/apis/proxies/v8/action/content/v3/read/${contentId}`,\n READ_COURSE_KARMAPOINTS: '/apis/proxies/v8/karmapoints/user/course/read',\n CLAIM_KARMAPOINTS: '/apis/proxies/v8/claimkarmapoints',\n USER_KARMA_POINTS: '/apis/proxies/v8/user/totalkarmapoints',\n AGGREGATION_SEARCH: '/apis/proxies/v8/content/aggregation/search',\n FEATURE_SEARCH: '/apis/proxies/v8/featured/content/search',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetContentService {\n constructor(\n private http: HttpClient,\n private configSvc: ConfigurationsService,\n ) {\n }\n\n tocConfigData: any = new BehaviorSubject<any>({});\n tocConfigData$ = this.tocConfigData.asObservable();\n\n private telemetryData: any = new Subject<any>()\n public telemetryData$ = this.telemetryData.asObservable()\n currentMetaData!: NsContent.IContent;\n currentContentReadMetaData!: NsContent.IContent;\n currentBatchEnrollmentList!: NsContent.ICourse[];\n programChildCourseResumeData = new BehaviorSubject<any>({});\n programChildCourseResumeData$ = this.programChildCourseResumeData.asObservable();\n\n changeTelemetryData(message: string) {\n this.telemetryData.next(message);\n }\n isResource(primaryCategory: string) {\n if (primaryCategory) {\n const isResource = (primaryCategory === NsContent.EResourcePrimaryCategories.LEARNING_RESOURCE) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.PRACTICE_RESOURCE) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.FINAL_ASSESSMENT) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.COMP_ASSESSMENT) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.OFFLINE_SESSION);\n return isResource;\n }\n return false;\n }\n\n fetchMarkAsCompleteMeta(identifier: string): Promise<any> {\n // tslint:disable-next-line\n const url = API_END_POINTS.MARK_AS_COMPLETE_META(identifier)\n // return this.http.get(url).toPromise()\n if (url) { }\n return of().toPromise();\n }\n\n updateTocConfig(data: any) {\n this.tocConfigData.next(data);\n }\n\n fetchContent(\n contentId: string,\n hierarchyType: 'all' | 'minimal' | 'detail' = 'detail',\n _additionalFields: string[] = [],\n primaryCategory?: string | null,\n ): Observable<NsContent.IContent> {\n // const url = `${API_END_POINTS.CONTENT}/${contentId}?hierarchyType=${hierarchyType}`\n let url = '';\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\n if (primaryCategory && this.isResource(primaryCategory)) {\n if (!forPreview) {\n url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;\n } else {\n url = `/api/content/v1/read/${contentId}`;\n }\n } else {\n if (!forPreview) {\n url = `/apis/proxies/v8/action/content/v3/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\n } else {\n const forcreator = window.location.href.includes('editMode=true');\n if (forcreator) {\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\n } else {\n url = `/api/course/v1/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\n }\n }\n }\n // return this.http\n // .post<NsContent.IContent>(url, { additionalFields })\n // .pipe(retry(1))\n return this.http\n .get<NsContent.IContent>(url)\n .pipe(shareReplay(1));\n // if (apiData && apiData.result) {\n // return apiData.result.content\n // }\n }\n fetchAuthoringContent(contentId: string): Observable<NsContent.IContent> {\n const forcreator = window.location.href.includes('editMode=true');\n let url = '';\n if (forcreator) {\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\n } else {\n url = `${API_END_POINTS.AUTHORING_CONTENT}/${contentId}?hierarchyType=detail`;\n }\n return this.http.get<NsContent.IContent>(url).pipe(shareReplay(1), r => r);\n }\n fetchMultipleContent(ids: string[]): Observable<NsContent.IContent[]> {\n return this.http.get<NsContent.IContent[]>(\n `${API_END_POINTS.MULTIPLE_CONTENT}/${ids.join(',')}`,\n );\n }\n fetchCollectionHierarchy(type: string, id: string, pageNumber: number = 0, pageSize: number = 1) {\n return this.http.get<NsContent.ICollectionHierarchyResponse>(\n `${API_END_POINTS.COLLECTION_HIERARCHY(\n type,\n id,\n )}?pageNumber=${pageNumber}&pageSize=${pageSize}`,\n );\n }\n\n fetchBlendedCourse() {\n\n }\n\n fetchCourseBatches(req: any): Observable<NsContent.IBatchListResponse> {\n return this.http\n .post<NsContent.IBatchListResponse>(API_END_POINTS.COURSE_BATCH_LIST, req)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n // fetch individual batch\n fetchCourseBatch(batchId: string): Observable<NsContent.IContinueLearningData> {\n return this.http.get<NsContent.IContinueLearningData>(\n `${API_END_POINTS.COURSE_BATCH}/${batchId}`,\n );\n }\n\n autoAssignBatchApi(identifier: any): Observable<NsContent.IBatchListResponse> {\n return this.http.get<NsContent.IBatchListResponse>(`${API_END_POINTS.AUTO_ASSIGN_BATCH}${identifier}`)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n autoAssignCuratedBatchApi(request: any, programType: any): Observable<NsContent.IBatchListResponse> {\n const url = programType === NsContent.ECourseCategory.MODERATED_PROGRAM ?\n API_END_POINTS.AUTO_ASSIGN_OPEN_PROGRAM : API_END_POINTS.AUTO_ASSIGN_CURATED_BATCH;\n return this.http.post<NsContent.IBatchListResponse>(`${url}`, request)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n enrollUserToBatch(req: any) {\n return this.http\n .post(API_END_POINTS.ENROLL_BATCH, req)\n .toPromise();\n }\n\n enrollAndUnenrollUserToBatchWF(req: any, type: any) {\n const url: any = type === 'WITHDRAW' ? API_END_POINTS.WITHDRAW_BATCH_WF : API_END_POINTS.ENROLL_BATCH_WF;\n return this.http\n .post(url, req)\n .toPromise();\n }\n\n fetchBlendedUserWF(req: any) {\n return this.http\n .post(API_END_POINTS.BLENDED_USER_WF, req)\n .toPromise();\n }\n\n fetchBlendedUserCOUNT(req: any) {\n return this.http\n .post(API_END_POINTS.BLENDED_USER_COUNT, req)\n .toPromise();\n }\n\n fetchContentLikes(contentIds: { content_id: string[] }) {\n return this.http\n .post<{ [identifier: string]: number }>(API_END_POINTS.CONTENT_LIKES, contentIds)\n .toPromise();\n }\n fetchContentRatings(contentIds: { contentIds: string[] }) {\n if (contentIds) { }\n // return this.http\n // .post(`${API_END_POINTS.CONTENT_RATING}/rating`, contentIds)\n // .toPromise()\n return of().toPromise();\n }\n\n fetchContentHistory(contentId: string): Observable<NsContent.IContinueLearningData> {\n return this.http.get<NsContent.IContinueLearningData>(\n `${API_END_POINTS.CONTENT_HISTORY}/${contentId}`,\n );\n }\n\n fetchContentHistoryV2(req: NsContent.IContinueLearningDataReq): Observable<NsContent.IContinueLearningData> {\n req.request.fields = ['progressdetails'];\n const data = this.http.post<NsContent.IContinueLearningData>(\n `${API_END_POINTS.CONTENT_HISTORYV2}/${req.request.courseId}`, req\n );\n data.subscribe((subscribeData: any) => {\n this.programChildCourseResumeData.next({ resumeData: subscribeData.result.contentList, courseId: req.request.courseId });\n });\n return data;\n }\n\n async continueLearning(id: string, collectionId?: string, collectionType?: string): Promise<any> {\n return new Promise(async resolve => {\n if (collectionType &&\n collectionType.toLowerCase() === 'playlist') {\n const reqBody = {\n contextPathId: collectionId ? collectionId : id,\n resourceId: id,\n data: JSON.stringify({\n timestamp: Date.now(),\n contextFullPath: [collectionId, id],\n }),\n dateAccessed: Date.now(),\n contextType: 'playlist',\n };\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\n resolve(true);\n }\n );\n } else {\n const reqBody = {\n contextPathId: collectionId ? collectionId : id,\n resourceId: id,\n data: JSON.stringify({ timestamp: Date.now() }),\n dateAccessed: Date.now(),\n };\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\n resolve(true);\n });\n }\n });\n }\n saveContinueLearning(content: NsContent.IViewerContinueLearningRequest): Observable<any> {\n // const url = API_END_POINTS.USER_CONTINUE_LEARNING\n // return this.http.post<any>(url, content)\n if (content) {\n\n }\n return of() as any;\n }\n\n setS3Cookie(\n _contentId: string,\n // _path: string,\n ): Observable<any> {\n // return this.http\n // .post(API_END_POINTS.SET_S3_COOKIE, { contentId })\n // .pipe(catchError(_err => of(true)))\n\n return EMPTY;\n }\n\n setS3ImageCookie(): Observable<any> {\n return this.http.post(API_END_POINTS.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)));\n }\n\n fetchManifest(url: string): Observable<any> {\n return this.http.post(API_END_POINTS.FETCH_MANIFEST, { url });\n }\n fetchWebModuleContent(url: string): Observable<any> {\n return this.http.get(`${API_END_POINTS.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`);\n }\n search(req: NSSearch.ISearchRequest): Observable<NSSearch.ISearchApiResult> {\n req.query = req.query || '';\n return this.http.post<NSSearch.ISearchApiResult>(API_END_POINTS.CONTENT_SEARCH_V5, {\n request: req,\n });\n }\n searchRegionRecommendation(\n req: NSSearch.ISearchOrgRegionRecommendationRequest,\n ): Observable<NsContentStripMultiple.IContentStripResponseApi> {\n req.query = req.query || '';\n req.preLabelValue =\n (req.preLabelValue || '') +\n ((this.configSvc.userProfile && this.configSvc.userProfile.country) || '');\n req.filters = {\n ...req.filters,\n labels: [req.preLabelValue || ''],\n };\n return this.http.post<NsContentStripMultiple.IContentStripResponseApi>(\n API_END_POINTS.CONTENT_SEARCH_REGION_RECOMMENDATION,\n { request: req },\n );\n }\n searchV6(req: NSSearch.ISearchV6Request): Observable<NSSearch.ISearchV6ApiResultV2> {\n const apiPath = _.get(req, 'api.path');\n req.query = req.query || '';\n if (apiPath) {\n return this.http.get<NSSearch.ISearchV6ApiResultV2>(apiPath);\n }\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_V6, req);\n }\n\n searchRelatedCBPV6(req: NSSearch.ISearchV6RequestV2): Observable<NSSearch.ISearchV6ApiResultV2> {\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_RELATED_CBP_V6, req);\n }\n\n fetchContentRating(contentId: string): Observable<{ rating: number }> {\n return this.http.get<{ rating: number }>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\n }\n deleteContentRating(contentId: string): Observable<any> {\n return this.http.delete(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\n }\n addContentRating(contentId: string, data: { rating: number }): Observable<any> {\n return this.http.post<any>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`, data);\n }\n\n getFirstChildInHierarchy(content: NsContent.IContent): NsContent.IContent {\n if (!(content.children || []).length) {\n return content;\n }\n if (\n (content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM &&\n !(content.artifactUrl && content.artifactUrl.length)) ||\n content.primaryCategory === NsContent.EPrimaryCategory.MANDATORY_COURSE_GOAL ||\n (content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM &&\n !(content.artifactUrl && content.artifactUrl.length)) ||\n (content.primaryCategory === NsContent.EPrimaryCategory.MODULE &&\n !(content.artifactUrl && content.artifactUrl.length))\n ) {\n const child = content.children[0];\n return this.getFirstChildInHierarchy(child);\n }\n if (\n content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE ||\n content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT ||\n content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM ||\n content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE ||\n content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT ||\n content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT ||\n content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\n content.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION\n ) {\n return content;\n }\n const firstChild = content.children[0];\n const resultContent = this.getFirstChildInHierarchy(firstChild);\n return resultContent;\n }\n\n getRegistrationStatus(source: string): Promise<{ hasAccess: boolean; registrationUrl?: string }> {\n return this.http.get<any>(`${API_END_POINTS.REGISTRATION_STATUS}/${source}`).toPromise();\n }\n\n fetchConfig(url: string) {\n return this.http.get<any>(url);\n }\n\n addCertTemplate(body: any) {\n return this.http.patch<any>(`${API_END_POINTS.CERT_ADD_TEMPLATE}`, body);\n }\n\n issueCert(body: any) {\n return this.http.post<any>(`${API_END_POINTS.CERT_ISSUE}`, body);\n }\n downloadCert(certId: any) {\n return this.http.get<any>(`${API_END_POINTS.CERT_DOWNLOAD(certId)}`);\n }\n\n trendingContentSearch(req: any): Observable<NsContent.IContent> {\n req.query = req.query || '';\n return this.http.post<NsContent.IContent>(API_END_POINTS.TRENDING_CONTENT_SEARCH, req);\n }\n\n getKarmaPoitns(limit: number, offset: any) {\n return this.http.post(API_END_POINTS.READ_KARMAPOINTS, { limit, offset }).pipe(catchError(_err => of(true)));\n }\n fetchProgramContent(contentId: string[]): Observable<NsContent.IContent[]> {\n let url = '';\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\n if (!forPreview) {\n return this.http.get<NsContent.IContent[]>(\n API_END_POINTS.CONTENT_READ(contentId),\n );\n }\n url = `/api/content/v1/read/${contentId}`;\n return this.http.get<NsContent.IContent[]>(url);\n // return this.http.get<NsContent.IContent[]>(API_END_POINTS.CONTENT_READ(contentId))\n }\n\n getCourseKarmaPoints(request: any) {\n return this.http.post<any>(API_END_POINTS.READ_COURSE_KARMAPOINTS, request);\n }\n\n claimKarmapoints(request: any) {\n return this.http.post<any>(API_END_POINTS.CLAIM_KARMAPOINTS, request);\n }\n\n userKarmaPoints() {\n return this.http.post<any>(API_END_POINTS.USER_KARMA_POINTS, {});\n }\n\n getEnrolledData(doId: string) {\n const enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}');\n const enrolledCourseData = enrollmentMapData[doId];\n return enrolledCourseData;\n }\n\n async getResourseLink(content: any) {\n const enrolledCourseData: any = this.getEnrolledData(content.identifier);\n if (enrolledCourseData) {\n if (enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.BLENDED_PROGRAM ||\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.INVITE_ONLY_PROGRAM ||\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.MODERATED_PROGRAM ||\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM) {\n if (!this.isBatchInProgress(enrolledCourseData.batch)) {\n return this.gotoTocPage(content);\n }\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\n return data;\n } {\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\n return data;\n }\n\n }\n return this.gotoTocPage(content);\n\n }\n async checkForDataToFormUrl(content: any, enrollData: any) {\n let urlData: any;\n if (enrollData.completionPercentage === 100) {\n return this.gotoTocPage(enrollData);\n }\n if (enrollData.lrcProgressDetails && enrollData.lrcProgressDetails.mimeType) {\n const modifyEnrollData = {\n ...enrollData,\n identifier: enrollData.collectionId,\n primaryCategory: enrollData.content.primaryCategory,\n name: enrollData.content.name,\n };\n if (modifyEnrollData.lastReadContentId) {\n return this.getResourseDataWithData(modifyEnrollData,\n enrollData.lastReadContentId, enrollData.lrcProgressDetails.mimeType);\n }\n if (modifyEnrollData.firstChildId) {\n return this.getResourseDataWithData(modifyEnrollData,\n enrollData.firstChildId,\n enrollData.lrcProgressDetails.mimeType);\n }\n }\n if (enrollData.firstChildId || enrollData.lastReadContentId) {\n const doId = enrollData.firstChildId || enrollData.lastReadContentId;\n const responseData = await this.fetchProgramContent(doId).toPromise().then(async (res: any) => {\n if (res && res.result && res.result.content) {\n const contentData: any = res.result.content;\n const modifyEnrollData = {\n ...enrollData,\n identifier: enrollData.collectionId,\n primaryCategory: enrollData.content.primaryCategory,\n name: enrollData.content.name,\n };\n urlData = this.getResourseDataWithData(modifyEnrollData, contentData.identifier, contentData.mimeType);\n if (urlData) {\n return urlData;\n }\n }\n });\n return responseData ? responseData : this.gotoTocPage(content);\n }\n return this.gotoTocPage(content);\n\n }\n\n getResourseDataWithData(content: any, resourseId: any, mimeType: any) {\n if (content) {\n const url = viewerRouteGenerator(\n resourseId,\n mimeType,\n content.identifier,\n 'Course',\n false,\n 'Learning Resource',\n content.batchId,\n content.name,\n );\n return url;\n }\n return this.gotoTocPage(content);\n }\n gotoTocPage(content: any) {\n const urlData: any = {\n url: `/app/toc/${content.identifier ? content.identifier : content.collectionId}/overview`,\n queryParams: { batchId: content.batchId },\n };\n if (content.endDate) {\n urlData.queryParams = { ...urlData.queryParams, planType: 'cbPlan', endDate: content.endDate };\n }\n return urlData;\n }\n isBatchInProgress(batchData: any) {\n // if (this.content && this.content['batches']) {\n // const batches = this.content['batches'] as NsContent.IBatch\n if (batchData && batchData.endDate) {\n const now = moment().format('YYYY-MM-DD');\n const startDate = moment(batchData.startDate).format('YYYY-MM-DD');\n const endDate = batchData.endDate ? moment(batchData.endDate).format('YYYY-MM-DD') : now;\n return (\n // batch.status &&\n moment(startDate).isSameOrBefore(now)\n && moment(endDate).isSameOrAfter(now)\n );\n } return true;\n }\n postApiMethod(apiUrl: any, req: any): Observable<NsContent.IContent> {\n req.query = req.query || '';\n return this.http.post<NsContent.IContent>(apiUrl, req);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\nimport { IPortalUrls, IUserPreference, NsAppsConfig, NsInstanceConfig, NsPage, NsUser } from '@sunbird-cb/utils-v2';\nimport { NSProfileDataV3 } from '../_models/profile-v3.models';\n// const instanceConfigPath: string | null = window.location.host\n// const locationHost: string | null = window.location.host\n\n// if (!environment.production && Boolean(environment.sitePath)) {\n// locationHost = environment.sitePath\n// instanceConfigPath = environment.sitePath\n// }\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigurationsService {\n // update as the single source of truth\n constructor() {\n // @Inject('env') env: any\n // if (!env.production && Boolean(env.sitePath)) {\n // locationHost = env.sitePath\n // instanceConfigPath = env.sitePath\n // }\n }\n appSetup = true;\n // The url the user tried to access while landing in the app before accepting tnc\n userUrl = '';\n baseUrl = `assets/configurations`;\n sitePath = `assets/configurations`;\n hostPath = (window.location.host).replace(':', '_');\n\n userRoles: Set<string> | null = null;\n userGroups: Set<string> | null = null;\n restrictedFeatures: Set<string> | null = null;\n restrictedWidgets: Set<string> | null = null;\n instanceConfig: NsInstanceConfig.IConfig | null = null;\n appsConfig: NsAppsConfig.IAppsConfig | null = null;\n rootOrg: string | null = null;\n courseContentPath?: string;\n org: string[] | null = null;\n activeOrg: string | null = '';\n isProduction = false;\n hasAcceptedTnc = false;\n profileDetailsStatus = false;\n isActive = true;\n userPreference: IUserPreference | null = null;\n userProfile: NsUser.IUserProfile | null = null;\n userProfileV2: NsUser.IUserProfile | null = null;\n nodebbUserProfile: NsUser.INodebbUserProfile | null = null;\n // created to store complete user details sent by pid\n unMappedUser: any;\n isAuthenticated = false;\n isNewUser = false;\n portalUrls: IPortalUrls | undefined;\n positions: any;\n overrideThemeChanges: any;\n profileTimelyNudges: any;\n\n // pinnedApps\n pinnedApps = new BehaviorSubject<Set<string>>(new Set());\n\n // Notifier\n prefChangeNotifier = new ReplaySubject<Partial<IUserPreference>>(1);\n tourGuideNotifier = new ReplaySubject<boolean>();\n authChangeNotifier = new ReplaySubject<boolean>(1);\n\n private updateProfile = new BehaviorSubject(false);\n updateProfileObservable = this.updateProfile.asObservable();\n\n updateTourGuide = new BehaviorSubject(true);\n updateTourGuideObservable = this.updateTourGuide.asObservable();\n\n // platform rating\n updatePlatformRating = new BehaviorSubject({ bottom: '120px' });\n updatePlatformRatingObservable$ = this.updatePlatformRating.asObservable();\n\n languageTranslationFlag = new Subject();\n\n // Preference Related Values\n activeThemeObject: NsInstanceConfig.ITheme | null = null;\n activeFontObject: NsInstanceConfig.IFontSize | null = null;\n isDarkMode = false;\n isIntranetAllowed = false;\n isRTL = false;\n activeLocale: NsInstanceConfig.ILocalsConfig | null = null;\n activeLocaleGroup = '';\n completedActivity: string[] | null = null;\n completedTour = false;\n profileSettings = ['profilePicture', 'learningTime', 'learningPoints'];\n\n primaryNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n };\n pageNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n };\n primaryNavBarConfig: NsInstanceConfig.IPrimaryNavbarConfig | null = null;\n /* for temp Fix */\n // setBaseUrl = (sitePath: string) => `assets/configurations/${(sitePath).replace(':', '_')}`\n // setSitePath = (sitePath: string) => `assets/configurations/${(sitePath).replace(\n // ':',\n // '_',\n // )}`\n // setHostPath = (sitePath: string) => (sitePath).replace(':', '_')\n welcomeTabs: NSProfileDataV3.IProfileTab | null = null;\n\n // variable setting for csJwtToken\n cstoken = '';\n\n changeNavBarFullView = new Subject();\n openExploreMenuForMWeb = new Subject();\n updateGlobalProfile(state: boolean) {\n this.updateProfile.next(state);\n }\n updateTourGuideMethod(state: boolean) {\n this.updateTourGuide.next(state);\n }\n\n updatePlatformRatingMethod(state: any) {\n this.updatePlatformRating.next(state);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigurationsService } from './configurations.service';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class MultilingualTranslationsService {\n selectedLang = '';\n // website lang change\n languageSelected = new BehaviorSubject(true);\n languageSelectedObservable = this.languageSelected.asObservable();\n editProfileDetails = '/apis/proxies/v8/user/v1/extPatch';\n\n constructor(private translate: TranslateService, private http: HttpClient, private configSvc: ConfigurationsService) {\n // this.getLanguage()\n }\n\n getLanguage() {\n if (this.configSvc.unMappedUser) {\n if (this.configSvc.unMappedUser.profileDetails &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang) {\n const lang = this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang;\n this.translate.use(lang);\n localStorage.setItem('websiteLanguage', lang);\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n } else {\n this.translate.setDefaultLang('en');\n localStorage.setItem('websiteLanguage', 'en');\n }\n }\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n }\n }\n\n translateLabelWithoutspace(label: string, type: any, subtype: any) {\n let nlabel = label;\n nlabel = nlabel && nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n translateLabel(label: string, type: any, subtype: any) {\n let nlabel = label;\n nlabel = nlabel.toLowerCase();\n const sl = nlabel.split(' ');\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1);\n }\n });\n nlabel = sl.join('');\n nlabel = nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n translateActualLabel(label: string, type: any, subtype: any) {\n let nlabel = label;\n const sl = nlabel.split(' ');\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1);\n }\n });\n nlabel = sl.join('');\n nlabel = nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n editProfileDetailsAPI(data: any) {\n return this.http.post<any>(this.editProfileDetails, data);\n }\n\n updatelanguageSelected(state: any, lang: any, userid: any) {\n this.languageSelected.next(state);\n this.translate.use(lang);\n this.selectedLang = lang;\n\n if (userid) {\n const reqUpdates = {\n request: {\n userId: userid,\n profileDetails: {\n additionalProperties: {\n webPortalLang: this.selectedLang,\n },\n },\n },\n };\n this.editProfileDetailsAPI(reqUpdates).subscribe();\n }\n }\n}\n","import { NsContent } from './widget-content.model';\n\nexport namespace NsCardContent {\n export interface ICard {\n content: NsContent.IContent;\n cardSubType: TCardSubType;\n context: { pageSection: string; position?: number };\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n likes?: number;\n contentTags?: IContentTags;\n stateData: any;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField?: string;\n }\n\n export interface ICompetency extends ICard {\n competencyArea: '';\n competencyObject: {};\n }\n\n export type TCardSubType =\n | 'standard'\n | 'minimal'\n | 'space-saving'\n | 'card-user-details'\n | 'basic-info'\n | 'basic-details'\n | 'card-description-back'\n | 'network-card';\n\n export enum EContentStatus {\n LIVE = 'Live',\n EXPIRED = 'Expired',\n DELETED = 'Deleted',\n MARK_FOR_DELETION = 'MarkedForDeletion',\n }\n\n export enum ACBPConst {\n UPCOMING = 'upcoming',\n ALL = 'All',\n OVERDUE = 'overdue',\n SUCCESS = 'success',\n }\n\n export enum IGOTConst {\n COMPETENCIES = 'competencies_v5',\n RETIRED = 'Retired',\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { IUserGroupDetails } from '../_models/widget-user.model';\nimport { NsContent } from '../_models/widget-content.model';\n// import 'rxjs/add/observable/of'\nimport * as dayjs_ from 'dayjs';\nconst dayjs = dayjs_\n// import { environment } from 'src/environments/environment'\nimport { NsCardContent } from '../_models/card-content-v2.model';\nimport * as lodash from 'lodash';\n\n\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\nconst API_END_POINTS = {\n FETCH_USER_GROUPS: (userId: string) =>\n `${PROTECTED_SLAG_V8}/user/group/fetchUserGroup?userId=${userId}`,\n FETCH_CPB_PLANS: `/apis/proxies/v8/user/v1/cbplan`,\n FETCH_USER_ENROLLMENT_LIST: (userId: string | undefined) =>\n // tslint:disable-next-line: max-line-length\n `/apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=orgName,email&licenseDetails=name,description,url&fields=contentType,primaryCategory,courseCategory,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,posterImage,duration,creatorLogo,license,version,versionKey,avgRating,additionalTags,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=name,endDate,startDate,status,enrollmentType,createdBy,certificates,batchAttributes`,\n FETCH_USER_ENROLLMENT_LIST_PROFILE: (userId: string | undefined) =>\n // tslint:disable-next-line: max-line-length\n `/apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=orgName,email&licenseDetails=name,description,url&fields=contentType,primaryCategory,courseCategory,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,posterImage,duration,creatorLogo,license,version,versionKey,avgRating,additionalTags,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=name,endDate,startDate,status,enrollmentType,createdBy,certificates,batchAttributes&retiredCoursesEnabled=true`,\n // tslint:disable-next-line: max-line-length\n FETCH_USER_ENROLLMENT_LIST_V2: (userId: string | undefined, orgdetails: string, licenseDetails: string, fields: string, batchDetails: string) =>\n // tslint:disable-next-line: max-line-length\n `apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=${orgdetails}&licenseDetails=${licenseDetails}&fields=${fields},courseCategory,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=${batchDetails}`,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetUserService {\n environment: any;\n constructor(\n @Inject('environment') environment: any,\n private http: HttpClient) {\n this.environment = environment;\n }\n\n handleError(error: ErrorEvent) {\n let errorMessage = '';\n if (error.error instanceof ErrorEvent) {\n errorMessage = `Error: ${error.error.message}`;\n }\n return throwError(errorMessage);\n }\n\n fetchUserGroupDetails(userId: string): Observable<IUserGroupDetails[]> {\n return this.http\n .get<IUserGroupDetails[]>(API_END_POINTS.FETCH_USER_GROUPS(userId))\n .pipe(catchError(this.handleError));\n }\n // tslint:disable-next-line: max-line-length\n fetchUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\n let path = '';\n if (queryParams) {\n // tslint:disable-next-line: max-line-length\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails);\n } else {\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST(userId);\n }\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n });\n if (this.checkStorageData('enrollmentService', 'enrollmentData')) {\n const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\n (data: any) => {\n localStorage.setItem('enrollmentData', JSON.stringify(data.result));\n this.mapEnrollmentData(data.result);\n return data.result;\n }\n )\n );\n this.setTime('enrollmentService');\n return result;\n }\n return this.getData('enrollmentData');\n\n }\n\n // tslint:disable-next-line: max-line-length\n fetchProfileUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\n let path = '';\n if (queryParams) {\n // tslint:disable-next-line: max-line-length\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails);\n } else {\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_PROFILE(userId);\n }\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n });\n return this.http\n .get(path, { headers })\n .pipe(\n catchError(this.handleError),\n map(\n (data: any) => data.result\n )\n );\n // if (this.checkStorageData('enrollmentService')) {\n // const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\n // (data: any) => {\n // localStorage.setItem('enrollmentData', JSON.stringify(data.result))\n // this.mapEnrollmentData(data.result)\n // return data.result\n // }\n // )\n // )\n // this.setTime('enrollmentService')\n // return result\n // }\n // return this.getData('enrollmentData')\n }\n\n checkStorageData(key: any, dataKey: any) {\n const checkTime = localStorage.getItem('timeCheck');\n if (checkTime) {\n const parsedData = JSON.parse(checkTime);\n if (parsedData[key]) {\n const date = dayjs();\n const diffMin = date.diff(parsedData[key], 'minute');\n const timeCheck = this.environment.apiCache || 0;\n if (diffMin >= timeCheck) {\n return true;\n }\n return localStorage.getItem(dataKey) ? false : true;\n }\n return true;\n }\n return true;\n }\n\n getData(key: any): Observable<any> {\n return of(JSON.parse(localStorage.getItem(key) || '{}'));\n }\n getSavedData(key: any): Observable<any> {\n return JSON.parse(localStorage.getItem(key) || '');\n }\n\n setTime(key: any) {\n const checkTime = localStorage.getItem('timeCheck');\n if (checkTime) {\n const parsedData = JSON.parse(checkTime);\n parsedData[key] = new Date().getTime();\n localStorage.setItem('timeCheck', JSON.stringify(parsedData));\n } else {\n const data: any = {};\n data[key] = new Date().getTime();\n localStorage.setItem('timeCheck', JSON.stringify(data));\n }\n }\n\n resetTime(key: any) {\n const checkTime = localStorage.getItem('timeCheck');\n if (checkTime) {\n const parsedData = JSON.parse(checkTime);\n if (parsedData[key]) {\n delete parsedData[key];\n localStorage.setItem('timeCheck', JSON.stringify(parsedData));\n }\n }\n }\n\n fetchCbpPlanList() {\n\n // let data = JSON.parse(localStorage.getItem('cbpData')|| '')\n // if(!data) {\n // this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\n // (data: any) => {\n // const courseData = this.mapData(data.result)\n // return courseData\n // }\n // )\n // )\n // } else {\n // return this.getData('cbpData')\n\n // }\n if (this.checkStorageData('cbpService', 'cbpData')) {\n const result: any = this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\n async (data: any) => {\n return await this.mapData(data.result);\n }\n )\n );\n this.setTime('cbpService');\n return result;\n }\n return this.getData('cbpData');\n }\n\n async mapData(data: any) {\n const contentNew: any = [];\n const todayDate = dayjs().format('YYYY-MM-DD');\n\n const enrollList: any = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}');\n\n if (data && data.count) {\n data.content.forEach((c: any) => {\n c.contentList.forEach((childData: any) => {\n const childEnrollData = enrollList[childData.identifier];\n const endDate = dayjs(c.endDate).format('YYYY-MM-DD');\n const daysCount = dayjs(endDate).diff(todayDate, 'day');\n childData.planDuration = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29\n ? NsCardContent.ACBPConst.SUCCESS : NsCardContent.ACBPConst.UPCOMING;\n childData.endDate = c.endDate;\n childData.parentId = c.id;\n childData.planType = 'cbPlan';\n if (childData.status !== NsCardContent.IGOTConst.RETIRED) {\n contentNew.push(childData);\n } else {\n if (childEnrollData && childEnrollData.status === 2) {\n contentNew.push(childData);\n }\n }\n\n const competencyArea: any = [];\n const competencyTheme: any = [];\n const competencyThemeType: any = [];\n const competencySubTheme: any = [];\n const competencyAreaId: any = [];\n const competencyThemeId: any = [];\n const competencySubThemeId: any = [];\n childData.contentStatus = 0;\n if (childEnrollData) {\n childData.contentStatus = childEnrollData.status;\n }\n if (childData.competencies_v5) {\n childData.competencies_v5.forEach((element: any) => {\n if (!competencyArea.includes(element.competencyArea)) {\n competencyArea.push(element.competencyArea);\n competencyAreaId.push(element.competencyAreaId);\n }\n if (!competencyTheme.includes(element.competencyTheme)) {\n competencyTheme.push(element.competencyTheme);\n competencyThemeId.push(element.competencyThemeId);\n }\n if (!competencyThemeType.includes(element.competencyThemeType)) {\n competencyThemeType.push(element.competencyThemeType);\n }\n if (!competencySubTheme.includes(element.competencySubTheme)) {\n competencySubTheme.push(element.competencySubTheme);\n competencySubThemeId.push(element.competencySubThemeId);\n }\n });\n }\n\n childData.competencyArea = competencyArea;\n childData.competencyTheme = competencyTheme;\n childData.competencyThemeType = competencyThemeType;\n childData.competencySubTheme = competencySubTheme;\n childData.competencyAreaId = competencyAreaId;\n childData.competencyThemeId = competencyThemeId;\n childData.competencySubThemeId = competencySubThemeId;\n });\n });\n if (contentNew.length > 1) {\n const sortedData: any = contentNew.sort((a: any, b: any) => {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n\n return secondDate > firstDate ? 1 : -1;\n });\n const uniqueUsersByID = lodash.uniqBy(sortedData, 'identifier');\n const sortedByEndDate = lodash.orderBy(uniqueUsersByID, ['endDate'], ['asc']);\n const sortedByStatus = lodash.orderBy(sortedByEndDate, ['contentStatus'], ['asc']);\n localStorage.setItem('cbpData', JSON.stringify(sortedByStatus));\n return sortedByStatus;\n }\n localStorage.setItem('cbpData', JSON.stringify(contentNew));\n return contentNew;\n }\n localStorage.setItem('cbpData', JSON.stringify([]));\n return [];\n }\n\n mapEnrollmentData(courseData: any) {\n const enrollData: any = {};\n if (courseData && courseData.courses.length) {\n courseData.courses.forEach((data: any) => {\n enrollData[data.collectionId] = data;\n });\n }\n localStorage.setItem('enrollmentMapData', JSON.stringify(enrollData));\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsContentStripWithTabs } from './content-strip-with-tabs-lib.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { NsContent } from '../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n WsEvents,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserService } from '../../_services/widget-user.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { NsCardContent } from '../../_models/card-content-v2.model';\nimport { ITodayEvents } from '../../_models/event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\n\ninterface IStripUnitContentData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsContentStripWithTabs.IContentStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsContentStripWithTabs.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n request?: any\n}\n\n@Component({\n selector: 'sb-uic-content-strip-with-tabs',\n templateUrl: './content-strip-with-tabs-lib.component.html',\n styleUrls: ['./content-strip-with-tabs-lib.component.scss'],\n})\nexport class ContentStripWithTabsLibComponent extends WidgetBaseComponent\n implements\n OnInit,\n OnDestroy,\n NsWidgetResolver.IWidgetData<NsContentStripWithTabs.IContentStripMultiple> {\n @Input() widgetData!: NsContentStripWithTabs.IContentStripMultiple;\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() viewAllResponse = new EventEmitter<any>()\n @Output() telemtryResponse = new EventEmitter<any>()\n @Input() providerId : any = ''\n @Input() emitViewAll : boolean = false\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n\n constructor(\n // private contentStripSvc: ContentStripNewMultipleService,\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n public router: Router,\n private userSvc: WidgetUserService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService\n ) {\n super();\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en');\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n this.environment = environment\n console.log('plugin')\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n\n this.contentSvc.telemetryData$.subscribe((data: any) => {\n this.telemtryResponse.emit(data)\n })\n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n if (this.checkForEmptyWidget(strip)) {\n this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n // console.log('data.key', data, data.key, data.widgets);\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitContentData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsContentStripWithTabs.IContentStripMultiple, data: IStripUnitContentData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitContentData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitContentData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitContentData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n const tabWithMaxWidgets = data.tabs.reduce(\n (prev, current) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n\n private getFiltersFromArray(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n private transformSearchV6FiltersV2(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n checkForDateFilters(filters: any) {\n let userData: any;\n if (this.configSvc.userProfile) {\n userData = this.configSvc.userProfile;\n }\n\n if (filters && filters.hasOwnProperty('batches.endDate')) {\n // tslint:disable-next-line\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\n // tslint:disable-next-line\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\n } else if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n filters.organisation = userData && userData.rootOrgId;\n\n if (filters && filters.hasOwnProperty('designation')) {\n filters.designation = userData.professionalDetails.length > 0 ?\n userData.professionalDetails[0].designation : '';\n }\n }\n return filters;\n }\n\n private fetchStripFromRequestData(\n strip: NsContentStripWithTabs.IContentStripUnit,\n calculateParentStatus = true,\n ) {\n // setting initial values\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\n this.processStrip(strip, [], 'fetching', false, null);\n this.fetchFromEnrollmentList(strip, calculateParentStatus);\n this.fetchFromSearchV6(strip, calculateParentStatus);\n this.fetchFromTrendingContent(strip, calculateParentStatus);\n this.fetchAllCbpPlans(strip, calculateParentStatus);\n this.fetchAllTopContent(strip, calculateParentStatus);\n this.fetchAllFeaturedContent(strip, calculateParentStatus);\n this.fetchAllChannela(strip, calculateParentStatus);\n \n // this.enrollInterval = setInterval(() => {\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\n // }, 1000)\n }\n\n fetchFromEnrollmentList(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) {\n let userId = '';\n let content: NsContent.IContent[];\n let contentNew: NsContent.IContent[];\n let tabResults: any[] = [];\n const queryParams = _.get(strip.request.enrollmentList, 'queryParams');\n if (this.configSvc.userProfile) {\n userId = this.configSvc.userProfile.userId;\n }\n // tslint:disable-next-line: deprecation\n this.userSvc.fetchUserBatchList(userId, queryParams).subscribe(\n (result: any) => {\n const courses = result && result.courses;\n const showViewMore = Boolean(\n courses.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: (strip.viewMoreUrl && strip.viewMoreUrl.path) || '',\n queryParams: {\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n strip.request && strip.request.searchV6 && strip.request.searchV6.filters\n ? JSON.stringify(\n // this.searchServSvc.transformSearchV6Filters(\n strip.request.searchV6.filters\n // ),\n )\n : {},\n },\n }\n : null;\n if (courses && courses.length) {\n content = courses.map((c: any) => {\n const contentTemp: NsContent.IContent = c.content;\n contentTemp.completionPercentage = c.completionPercentage || c.progress || 0;\n contentTemp.completionStatus = c.completionStatus || c.status || 0;\n contentTemp.enrolledDate = c.enrolledDate || '';\n contentTemp.lastContentAccessTime = c.lastContentAccessTime || '';\n contentTemp.lastReadContentStatus = c.lastReadContentStatus || '';\n contentTemp.lastReadContentId = c.lastReadContentId || '';\n contentTemp.lrcProgressDetails = c.lrcProgressDetails || '';\n contentTemp.issuedCertificates = c.issuedCertificates || [];\n contentTemp.batchId = c.batchId || '';\n return contentTemp;\n });\n }\n // To filter content with completionPercentage > 0,\n // so that only those content will show in home page\n // continue learing strip\n // if (content && content.length) {\n // contentNew = content.filter((c: any) => {\n // /** commented as both are 0 after enrolll */\n // if (c.completionPercentage && c.completionPercentage > 0) {\n // return c\n // }\n // })\n // }\n\n // To sort in descending order of the enrolled date\n contentNew = (content || []).sort((a: any, b: any) => {\n const dateA: any = new Date(a.lastContentAccessTime || 0);\n const dateB: any = new Date(b.lastContentAccessTime || 0);\n return dateB - dateA;\n });\n\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitEnrollmentTabsData(contentNew, strip);\n this.processStrip(\n strip,\n this.transformContentsToWidgets(contentNew, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(contentNew, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n );\n }\n },\n () => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n );\n }\n }\n\n splitEnrollmentTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\n const tabResults: any[] = [];\n const splitData = this.getInprogressAndCompleted(\n contentNew,\n (e: any) => e.completionStatus === 1 || e.completionPercentage < 100,\n strip,\n );\n\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if (strip.tabs[i]) {\n tabResults.push(\n {\n ...strip.tabs[i],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n }\n return tabResults;\n }\n\n getInprogressAndCompleted(array: NsContent.IContent[],\n customFilter: any,\n strip: NsContentStripWithTabs.IContentStripUnit) {\n const inprogress: any[] = [];\n const completed: any[] = [];\n array.forEach((e: any, idx: number, arr: any[]) => (customFilter(e, idx, arr) ? inprogress : completed).push(e));\n return [\n { value: 'inprogress', widgets: this.transformContentsToWidgets(inprogress, strip) },\n { value: 'completed', widgets: this.transformContentsToWidgets(completed, strip) }];\n }\n\n async fetchFromSearchV6(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n console.log(originalFilters);\n if (strip.request &&\n strip.request.searchV6 &&\n strip.request.searchV6.request &&\n strip.request.searchV6.request.filters) {\n originalFilters = strip.request.searchV6.request.filters;\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\n strip.request.searchV6.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqSearchV6(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else if (response.results.result.Event) {\n this.processStrip(\n strip,\n this.transformEventsToWidgets(response.results.result.Event, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n async searchV6Request(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.searchV6) {\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.searchV6 &&\n request.searchV6.request &&\n request.searchV6.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\n // }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n async fetchFromTrendingContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n console.log(originalFilters);\n if (strip.request &&\n strip.request.trendingSearch &&\n strip.request.trendingSearch.request &&\n strip.request.trendingSearch.request.filters) {\n originalFilters = strip.request.trendingSearch.request.filters;\n strip.request.trendingSearch.request.filters = this.checkForDateFilters(strip.request.trendingSearch.request.filters);\n strip.request.trendingSearch.request.filters = this.getFiltersFromArray(\n strip.request.trendingSearch.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqTrending(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.trendingSearchRequest(strip, strip.request, calculateParentStatus);\n if (response && response.results && response.results.response) {\n const content = response.results.response[strip.request.trendingSearch.responseKey] || [];\n this.processStrip(\n strip,\n this.transformContentsToWidgets(content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl || '',\n );\n } else {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n }\n }\n\n async trendingSearchRequest(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.trendingSearch) {\n // check for the request if it has dynamic values]\n if (request.trendingSearch.request.filters.organisation &&\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\n ) {\n let userRootOrgId;\n if (this.configSvc.userProfile) {\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\n }\n request.trendingSearch.request.filters.organisation = userRootOrgId;\n }\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\n const showViewMore = Boolean(\n results.result &&\n strip.request &&\n results.result[strip.request.trendingSearch.responseKey] &&\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\n strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.trendingSearch &&\n request.trendingSearch.request &&\n request.trendingSearch.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n if (error.error && error.error.status === 400) {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\n reject(error);\n },\n );\n }\n });\n }\n\n toggleInfo(data: IStripUnitContentData) {\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\n if (stripInfo) {\n if (stripInfo.mode !== 'below') {\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\n stripInfo.mode = 'below';\n }\n if (stripInfo.mode === 'below') {\n this.stripsResultDataMap[data.key].stripInfo = {\n ...stripInfo,\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\n };\n }\n }\n }\n\n private transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n private transformEventsToWidgets(\n contents: ITodayEvents[],\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n this.eventSvc.setEventListData(contents);\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n private transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n private async processStrip(\n strip: NsContentStripWithTabs.IContentStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsContentStripWithTabs.IContentStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsContentStripWithTabs.IContentStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length)||\n (strip.request.topContent && Object.keys(strip.request.topContent).length) ||\n (strip.request.featureContent && Object.keys(strip.request.featureContent).length)||\n (strip.request.channels && Object.keys(strip.request.channels).length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitContentData, stripKey: string) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const data: WsEvents.ITelemetryTabData = {\n label: `${tabEvent.tab.textLabel}`,\n index: tabEvent.index,\n };\n this.eventSvc.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\n id: `${_.camelCase(data.label)}-tab`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n );\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.label,\n };\n }\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick) {\n if (currentTabFromMap.requestRequired && currentTabFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentTabFromMap.request.searchV6) {\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.trendingSearch) {\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, currentTabFromMap, true);\n }\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].tabLoading = false;\n }\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].tabLoading = false;\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\n stripMap.showOnLoader = false;\n }\n }, 200);\n }\n }\n }\n\n async getTabDataByNewReqSearchV6(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\n if (response && response.results) {\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async getTabDataByNewReqTrending(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\n if (response && response.results && response.results.response) {\n const content = response.results.response[currentTab.value] || [];\n const widgets = this.transformContentsToWidgets(content, strip);\n // console.log('currentTab --- widgets', widgets)\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n // console.log('tabResults -++++***--', tabResults)\n // console.log('calling after-- ')\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n\n getTabDataByfilter(\n strip: NsContentStripWithTabs.IContentStripUnit,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n // tslint:disable:no-console\n console.log('strip -- ', strip);\n // tslint:disable:no-console\n console.log('currentTab -- ', currentTab);\n // tslint:disable:no-console\n console.log('calculateParentStatus-- ', calculateParentStatus);\n // TODO: Write logic for individual filter if passed in config\n // add switch case based on config key passed\n }\n\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\n\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\n\n let courses: NsContent.IContent[];\n let tabResults: any[] = [];\n const response = await this.userSvc.fetchCbpPlanList().toPromise();\n if (response) {\n courses = response;\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitCbpTabsData(courses, strip);\n await this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n '',\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n 'viewMoreUrl',\n );\n }\n }\n // this.userSvc.fetchCbpPlanList().subscribe( async (res: any) => {\n // if (res) {\n // console.log(res,'===============================>')\n // courses = res\n // if (strip.tabs && strip.tabs.length) {\n // tabResults = this.splitCbpTabsData(courses, strip)\n // await this.processStrip(\n // strip,\n // this.transformContentsToWidgets(courses, strip),\n // 'done',\n // calculateParentStatus,\n // '',\n // tabResults\n // )\n // } else {\n // this.processStrip(\n // strip,\n // this.transformContentsToWidgets(courses, strip),\n // 'done',\n // calculateParentStatus,\n // 'viewMoreUrl',\n // )\n // }\n // }\n // }, (_err: any) => {\n\n // })\n\n clearInterval(this.enrollInterval);\n }\n }\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\n const tabResults: any[] = [];\n const splitData = this.getTabsList(\n contentNew,\n strip,\n );\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if (strip.tabs[i]) {\n tabResults.push(\n {\n ...strip.tabs[i],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n }\n return tabResults;\n }\n\n getTabsList(array: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit) {\n let all: any[] = [];\n let upcoming: any[] = [];\n let overdue: any[] = [];\n array.forEach((e: any) => {\n all.push(e);\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n overdue.push(e);\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\n upcoming.push(e);\n }\n });\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\n\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\n\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\n\n overdue = overdue.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n\n overdue = overdue.sort((a: any, b: any): any => {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n });\n\n upcoming = upcoming.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n // this.getSelectedIndex(1)\n return [\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n if (key === 'cbpPlan') {\n if (stripsResultDataMap.tabs.length) {\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\n }\n }\n return returnValue;\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n async fetchAllTopContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.topContent && Object.keys(strip.request.topContent).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.topContent &&\n strip.request.topContent.request &&\n strip.request.topContent.request.filters) {\n originalFilters = strip.request.topContent.request.filters;\n strip.request.topContent.request.filters = this.postMethodFilters(strip.request.topContent.request.filters);\n }\n try {\n const response = await this.postRequestMethod(strip, strip.request.topContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content && response.results.result.content.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n async fetchAllFeaturedContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.featureContent && Object.keys(strip.request.featureContent).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.featureContent &&\n strip.request.featureContent.request &&\n strip.request.featureContent.request.filters) {\n originalFilters = strip.request.featureContent.request.filters;\n strip.request.featureContent.request.filters = this.postMethodFilters(strip.request.featureContent.request.filters);\n }\n try {\n const response = await this.postRequestMethod(strip, strip.request.featureContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content && response.results.result.content.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null); \n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n async postRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n apiUrl: string,\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.postApiMethod(apiUrl,request).subscribe(results => {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.searchV6 &&\n request.searchV6.request &&\n request.searchV6.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n postMethodFilters(filters: any){\n if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n filters.organisation = this.providerId\n }\n return filters\n }\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\n if(this.emitViewAll) {\n this.viewAllResponse.emit(stripData)\n } else {\n this.router.navigate([path], { queryParams: queryParamsData })\n }\n }\n\n async fetchAllChannela(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.channels && Object.keys(strip.request.channels).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.channels &&\n strip.request.channels.request &&\n strip.request.channels.request.filters) {\n originalFilters = strip.request.channels.request.filters;\n strip.request.channels.request.filters = this.postMethodFilters(strip.request.channels.request.filters);\n }\n try {\n let data = [\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Ministry of Consumer Affairs, Food and Public Distribution',\n programCount: '10',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Ministry of Railways',\n programCount: '10',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Department of Post',\n programCount: '10',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'NLC India Limited',\n programCount: '30',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Mission Karmayogi',\n programCount: '24',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Mission Karmayogi',\n programCount: '50',\n },\n \n ]\n const response = await data\n // console.log('calling after - response, ', response)\n if (response) {\n this.processStrip(\n strip,\n this.transformAllContentsToWidgets(response, strip),\n 'done',\n calculateParentStatus,\n response,\n );\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null); \n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n private transformAllContentsToWidgets(\n contents: any,\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n raiseTelemetryInteratEvent(event) {\n this.telemtryResponse.emit(event)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { ContentStripWithTabsLibComponent } from './content-strip-with-tabs-lib.component';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\n\n// tslint:disable-next-line:function-name\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n declarations: [ContentStripWithTabsLibComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n entryComponents: [ContentStripWithTabsLibComponent],\n exports: [ContentStripWithTabsLibComponent],\n})\nexport class ContentStripWithTabsLibModule { }\n","import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core'\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\nimport { ICarousel, ICarouselStyle } from './sliders.model'\nimport { Subscription, interval } from 'rxjs'\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-sliders',\n templateUrl: './sliders.component.html',\n styleUrls: ['./sliders.component.scss'],\n})\nexport class SlidersLibComponent extends WidgetBaseComponent\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\n @Input() widgetData!: ICarousel[]\n @Input() styleData!: ICarouselStyle\n @Input() title: any = ''\n @HostBinding('id')\n public id = `banner_${Math.random()}`\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n currentIndex = 0\n slideInterval: Subscription | null = null\n isMobile = false\n\n constructor(\n private events: EventService,\n private valueSvc: ValueService\n ) {\n super()\n }\n\n ngOnInit() {\n this.reInitiateSlideInterval()\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n reInitiateSlideInterval() {\n if (this.widgetData && this.widgetData.length > 1) {\n try {\n if (this.slideInterval) {\n this.slideInterval.unsubscribe()\n }\n } catch (e) {\n } finally {\n this.slideInterval = interval(8000).subscribe(() => {\n if (this.currentIndex === this.widgetData.length - 1) {\n this.currentIndex = 0\n } else {\n this.currentIndex += 1\n }\n })\n }\n }\n }\n slideTo(index: number) {\n if (index >= 0 && index < this.widgetData.length) {\n this.currentIndex = index\n } else if (index === this.widgetData.length) {\n this.currentIndex = 0\n } else {\n this.currentIndex = this.widgetData.length + index\n }\n this.reInitiateSlideInterval()\n }\n\n get isOpenInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n return true\n } return false\n }\n\n openInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n window.open(currentData.redirectUrl)\n }\n }\n raiseTelemetry(bannerUrl: string | undefined) {\n this.openInNewTab()\n const path = window.location.pathname.replace('/', '')\n const url = path + window.location.search\n\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'banner',\n },\n {\n pageUrl: url,\n bannerRedirectUrl: bannerUrl,\n },\n {\n pageIdExt: 'banner',\n module: WsEvents.EnumTelemetrymodules.CONTENT,\n })\n }\n\n ngOnDestroy() {\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout'\r\nimport { Directive, HostBinding, Input, OnChanges, OnDestroy } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { distinctUntilChanged } from 'rxjs/operators'\r\n\r\nexport interface IImageResponsiveUnit {\r\n [key: string]: string\r\n}\r\n\r\nconst customBreakPoints = {\r\n xs: '(max-width: 450px)',\r\n s: '(min-width: 450.001px) and (max-width: 768px)',\r\n m: '(min-width: 768.001px) and (max-width: 1024px)',\r\n l: '(min-width: 1024.001px) and (max-width: 1400px)',\r\n xl: '(min-width: 1400.001px) and (max-width: 1920px)',\r\n xxl: '(min-width: 1920.001px)',\r\n}\r\n\r\n@Directive({\r\n selector: '[wsUtilsImageResponsive]',\r\n})\r\nexport class ImageResponsiveDirective implements OnChanges, OnDestroy {\r\n\r\n @Input() src: IImageResponsiveUnit | null = null\r\n @HostBinding('src') srcBindUrl = ''\r\n\r\n currentSize = ''\r\n breakpointSubscription: Subscription | null = null\r\n constructor(\r\n private breakpointObserver: BreakpointObserver,\r\n ) {\r\n this.breakpointSubscription = this.breakpointObserver\r\n .observe([\r\n customBreakPoints.xs,\r\n customBreakPoints.s,\r\n customBreakPoints.m,\r\n customBreakPoints.l,\r\n customBreakPoints.xl,\r\n customBreakPoints.xxl,\r\n ])\r\n .pipe(distinctUntilChanged())\r\n .subscribe(data => {\r\n // //console.log('data >', data)\r\n if (data.breakpoints[customBreakPoints.xxl]) {\r\n this.currentSize = 'xxl'\r\n } else if (data.breakpoints[customBreakPoints.xl]) {\r\n this.currentSize = 'xl'\r\n } else if (data.breakpoints[customBreakPoints.l]) {\r\n this.currentSize = 'l'\r\n } else if (data.breakpoints[customBreakPoints.m]) {\r\n this.currentSize = 'm'\r\n } else if (data.breakpoints[customBreakPoints.s]) {\r\n this.currentSize = 's'\r\n } else if (data.breakpoints[customBreakPoints.xs]) {\r\n this.currentSize = 'xs'\r\n } else {\r\n this.currentSize = 'xl'\r\n }\r\n this.setSrc()\r\n })\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.setSrc()\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.breakpointSubscription) {\r\n this.breakpointSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n private setSrc() {\r\n if (\r\n this.currentSize &&\r\n this.src &&\r\n this.src[this.currentSize]\r\n ) {\r\n this.srcBindUrl = this.src[this.currentSize]\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ImageResponsiveDirective } from './image-responsive.directive'\r\n\r\n@NgModule({\r\n declarations: [ImageResponsiveDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ImageResponsiveDirective],\r\n})\r\nexport class ImageResponsiveModule { }\r\n","import { Directive, OnChanges, Input, HostBinding, HostListener } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsNavigation]',\r\n})\r\nexport class NavigationDirective implements OnChanges {\r\n @Input() wsUtilsNavigation = ''\r\n @Input() openInNewTab = false\r\n @Input()\r\n @HostBinding('attr.routerLink') routeUrl = ''\r\n @HostListener('mousedown', ['$event']) onMouseEnter($event: Event) {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n $event.preventDefault()\r\n $event.stopPropagation()\r\n this.routeUrl = './'\r\n window.open(this.wsUtilsNavigation)\r\n }\r\n }\r\n constructor() { }\r\n\r\n ngOnChanges() {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n this.routeUrl = './'\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NavigationDirective } from './navigation.directive'\r\n\r\n@NgModule({\r\n declarations: [NavigationDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [NavigationDirective],\r\n})\r\nexport class NavigationModule { }\r\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SlidersLibComponent } from './sliders.component'\nimport { RouterModule } from '@angular/router'\nimport { ImageResponsiveModule } from './../../_directives/image-responsive/image-responsive.module'\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\n/* tslint:disable */\nimport Hammer from 'hammerjs'\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\n/* tslint:enable */\nexport class MyHammerConfig extends HammerGestureConfig {\n buildHammer(element: HTMLElement) {\n const mc = new Hammer(element, {\n touchAction: 'pan-y',\n })\n return mc\n }\n}\n\n// tslint:disable-next-line: max-classes-per-file\n@NgModule({\n declarations: [SlidersLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n NavigationModule,\n ImageResponsiveModule,\n ],\n exports: [SlidersLibComponent],\n entryComponents: [SlidersLibComponent],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: MyHammerConfig,\n },\n ],\n})\nexport class SlidersLibModule { }\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nconst API_END_POINTS = {\n PROVIDER_INSIGHTS: `/apis/proxies/v8/microsite/read/insights`,\n TRAINING_DETAILS: `apis/proxies/v8/sunbirdigot/search`\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InsiteDataService {\n\n constructor(\n private http: HttpClient\n ) {}\n fetchSearchData(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.PROVIDER_INSIGHTS, request)\n }\n\n fetchTrainingDetails(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.TRAINING_DETAILS, request)\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-data-points',\n templateUrl: './data-points.component.html',\n styleUrls: ['./data-points.component.css']\n})\nexport class DataPointsComponent implements OnInit {\n @Input() objectData: any\n @Input() layoutType: string = ''\n @Input() fetchDataFromApi: boolean = false\n @Input() providerId : any = ''\n @Input() pageLayout: any = ''\n customArray: any[][] = []\n isDataLoading: boolean = false\n\n constructor(public insightSvc: InsiteDataService) { \n }\n\n ngOnInit() {\n if (this.objectData && this.layoutType === 'gridLayout') {\n this.customArray = this.createCustomArray(this.objectData.metrics)\n }\n if(this.fetchDataFromApi) {\n this.isDataLoading = true\n this.getInsiteData()\n }\n } \n\n createCustomArray(arr: any[]): any[][] {\n const nByn: any[][] = []\n for (let i = 0; i < arr.length; i += this.objectData.dataColSpan) {\n nByn.push(arr.slice(i, i + this.objectData.dataColSpan))\n }\n return nByn \n }\n\n getInsiteData(){\n let request: any = {}\n request = {\n \"request\": {\n \"filters\": {\n \"organisations\": [\n this.providerId\n ]\n }\n }\n }\n if (this.pageLayout && this.pageLayout === 'mdo') {\n request = {\n \"request\": {\n \"filters\": {\n \"requestType\": \"MDO_INSIGHT\",\n \"organisations\": [\n this.providerId\n ]\n }\n }\n }\n }\n this.insightSvc.fetchSearchData(request).subscribe((res: any)=> {\n if(res && res.result && res.result.response && res.result.response.nudges && res.result.response.nudges.length) {\n res.result.response.nudges.forEach((nudgeData: any) => {\n if(this.providerId && this.providerId === nudgeData.orgId) {\n this.objectData = nudgeData.data\n }\n })\n }\n this.isDataLoading = false\n })\n\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-skeleton-loader',\n templateUrl: './skeleton-loader-lib.component.html',\n styleUrls: ['./skeleton-loader-lib.component.scss'],\n})\nexport class SkeletonLoaderLibComponent implements OnInit {\n\n @Input() bindingClass = ''\n @Input() height = ''\n @Input() width = ''\n constructor() { }\n\n ngOnInit() {\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SkeletonLoaderLibComponent } from './skeleton-loader-lib.component'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { MatDialogModule, MatIconModule } from '@angular/material'\n\n@NgModule({\n declarations: [SkeletonLoaderLibComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatIconModule,\n ],\n exports: [\n SkeletonLoaderLibComponent,\n ],\n entryComponents: [SkeletonLoaderLibComponent],\n})\nexport class SkeletonLoaderLibModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataPointsComponent } from './data-points.component';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [DataPointsComponent],\n imports: [\n CommonModule,\n SkeletonLoaderLibModule\n ],\n exports: [DataPointsComponent],\n providers:[InsiteDataService]\n})\nexport class DataPointsModule { }\n","import { DatePipe } from '@angular/common';\nimport {\n Component,\n Input,\n OnInit,\n \n} from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-calender',\n templateUrl: './calender.component.html',\n styleUrls: ['./calender.component.scss']\n})\nexport class CalenderComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() fetchDataFromApi: boolean = false\n @Input() showHeader: boolean = false\n @Input() defaultDays: number = 3\n @Input() providerId: any\n @Input() fullCalendor: boolean = false\n days = []\n trainings: any = {}\n currentMonthAndYear: any\n isDataLoading: boolean = false\n currentDate: any = new Date()\n endDate: any\n startDate: any\n allMonths = [\"January\", \"February\", \"March\",\n \"April\", \"May\", \"June\", \"July\",\n \"August\", \"September\", \"October\",\n \"November\", \"December\"\n ]\n monthsDropdown: any = []\n selectedMonth: any\n constructor(private datePipe: DatePipe, public insightSvc: InsiteDataService) { }\n\n ngOnInit() {\n this.currentMonthAndYear = this.datePipe.transform(this.currentDate, 'MMMM y')\n this.selectedMonth = this.datePipe.transform(this.currentDate, 'LLLL yyyy')\n if (this.fullCalendor) {\n console.log(\"this.currentDate \", this.currentDate)\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\n this.getMonthsDropdownData()\n }\n if (!this.fullCalendor) {\n this.days = this.getDays(this.currentDate, +this.defaultDays)\n }\n this.startDate = this.days[0]\n this.endDate = this.days[this.days.length - 1]\n if(this.fetchDataFromApi) {\n this.isDataLoading = true\n this.getInsiteData()\n }\n }\n getInsiteData() {\n let request = {\n \"locale\": [\n \"en\"\n ],\n \"query\": \"\",\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"category\": [\n \"Calendar\"\n ],\n \"status\": [\n \"Live\",\n \"Retired\"\n ],\n \"contentType\": \"Event\",\n \"startDate\": {\n \">=\": this.startDate,\n \"<=\": this.endDate\n // \">=\": \"2024-01-15\",\n // \"<\": \"2024-05-31\"\n },\n \"channel\": [this.providerId]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n }\n }\n }\n this.insightSvc.fetchTrainingDetails(request).subscribe((res: any)=> {\n if (res && res.result && res.result.Event) {\n res.result.Event.forEach((resp: any) => {\n if (this.trainings[resp.startDate]) {\n let prevData = this.trainings[resp.startDate]\n let location = resp.eventType\n if (resp.venue && location !== \"Online\") {\n const jsonResp = JSON.parse(resp.venue)\n location = jsonResp['address']\n }\n const formatObject = {\n location: location,\n startTime: this.convertTo12HourFormat(resp.startTime),\n endTime: this.convertTo12HourFormat(resp.endTime),\n title: resp.name,\n startDate: this.formatDate(resp.startDate),\n endDate: this.formatDate(resp.endDate),\n registrationLink: resp.registrationLink,\n }\n prevData.push(formatObject)\n this.trainings[resp.startDate] = prevData\n }\n })\n }\n this.isDataLoading = false\n })\n }\n\n getKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n\n formatDate(date: any) {\n let formatDate = new Date(date)\n return this.datePipe.transform(formatDate, 'E, dd LLL')\n }\n\n convertTo12HourFormat(timeString: string): string {\n const time = timeString.split(\":\")\n let hours = +time[0]\n const minutes = +time[1]\n const ampm = hours >= 12 ? 'PM' : 'AM'\n hours = hours % 12\n hours = hours ? hours : 12\n const strHours = hours < 10 ? '0' + hours : hours.toString()\n const strMinutes = minutes < 10 ? '0' + minutes : minutes.toString()\n return `${strHours}:${strMinutes}: ${ampm}`\n }\n\n getDays(cDate: any, counter: number) {\n const days: any = []\n let initDate: any = new Date(cDate)\n initDate = this.datePipe.transform(initDate, 'y-MM-dd')\n days.push(initDate)\n this.trainings[initDate] = []\n while (counter > 0) {\n let myDate: any = new Date(cDate)\n myDate = myDate.setDate(myDate.getDate() + 1)\n cDate = myDate\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\n days.push(myDate)\n this.trainings[myDate] = []\n counter = counter - 1\n }\n return days\n }\n\n getDaysInMonth(year: number, month: number): Date[] {\n const date = new Date(year, month, 1)\n const days: any = []\n this.trainings = {}\n while (date.getMonth() === month) {\n let myDate: any = new Date(date)\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\n days.push(myDate)\n this.trainings[myDate] = []\n date.setDate(date.getDate() + 1)\n }\n return days\n }\n\n getMonthsDropdownData() {\n this.allMonths.forEach((month: any) => {\n this.monthsDropdown.push(`${month} ${this.currentDate.getFullYear()}`)\n })\n }\n\n selectMonth(event: any) {\n const selectedMonth: any = new Date(event)\n this.currentDate = selectedMonth\n this.days = []\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\n this.startDate = this.days[0]\n this.endDate = this.days[this.days.length - 1]\n this.isDataLoading = true\n this.getInsiteData()\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-calender-day',\n templateUrl: './calender-day.component.html',\n styleUrls: ['./calender-day.component.scss']\n})\nexport class CalenderDayComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() day: any\n @Input() dataLoading: boolean\n @Input() rowId: any\n @Input() eventDate: any\n webDisplayDate: string = \"\"\n mobileDisplayDate: string = \"\"\n currentDate: any = new Date()\n\n constructor(private datePipe: DatePipe) { }\n\n ngOnInit() {\n this.currentDate = this.datePipe.transform(this.currentDate, 'y-MM-dd')\n }\n\n openLink(link: string) {\n window.open(link, \"_blank\")\n }\n\n formatDate(date: any, type: string) {\n let fDate = new Date(date)\n if (type === 'web') {\n return this.datePipe.transform(fDate, 'E, dd LLL')\n }\n if (type === 'mob') {\n return this.datePipe.transform(fDate, 'E dd LLL')\n }\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { CalenderComponent } from './calender.component';\nimport { MatIconModule, MatSelectModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { CalenderDayComponent } from './calender-day/calender-day.component';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n SkeletonLoaderLibModule\n ],\n declarations: [CalenderComponent, CalenderDayComponent],\n exports: [CalenderComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n providers:[DatePipe, InsiteDataService],\n})\nexport class CalenderModule {}","import { Injectable } from '@angular/core';\nimport { NsContent } from '../_models/widget-content.model';\nimport { NsContentStripWithTabs } from '../_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model';\nimport { NsCommonStrip } from '../_common/common-strip/common-strip.model'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommonMethodsService {\n\n constructor() { }\n\n transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit | NsCommonStrip.ICommonStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsCommonStrip } from './common-strip.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { NsContent } from '../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserService } from '../../_services/widget-user.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CommonMethodsService } from '../../_services/common-methods.service';\n\n\ninterface IStripUnitCommonData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsCommonStrip.ICommonStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsCommonStrip.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n}\n\n@Component({\n selector: 'sb-uic-common-strip',\n templateUrl: './common-strip.component.html',\n styleUrls: ['./common-strip.component.scss']\n})\nexport class CommonStripComponent extends WidgetBaseComponent\nimplements\nOnInit,\nOnDestroy,\nNsWidgetResolver.IWidgetData<NsCommonStrip.ICommonStrip> {\n @Input() widgetData!: NsCommonStrip.ICommonStrip;\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitCommonData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n\n constructor(\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n private userSvc: WidgetUserService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private commonMethodsSvc: CommonMethodsService\n ) {\n super();\n this.environment = environment\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // null check if in case no strips key in config\n if(this.widgetData && this.widgetData.strips) {\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n this.processStrip(strip, [], 'fetching', false, null);\n if(strip.dataType === 'in-hand' && this.widgetData[strip.dataKey]){\n this.processStrip(\n strip,\n this.commonMethodsSvc.transformContentsToWidgets(this.widgetData[strip.dataKey], strip),\n 'done',\n true,\n strip.viewMoreUrl || '',\n );\n } else {\n if (this.checkForEmptyWidget(strip)) {\n // this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n // this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitCommonData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsCommonStrip.ICommonStrip, data: IStripUnitCommonData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitCommonData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitCommonData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitCommonData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n const tabWithMaxWidgets = data.tabs.reduce(\n (prev, current) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n \n private async processStrip(\n strip: NsCommonStrip.ICommonStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsCommonStrip.ICommonStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n dataType: strip.dataType,\n dataKey: strip.dataKey,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n if (key === 'cbpPlan') {\n if (stripsResultDataMap.tabs.length) {\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\n }\n }\n return returnValue;\n }\n \n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsCommonStrip.ICommonStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitCommonData, stripKey: string) {\n\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CommonStripComponent } from './common-strip.component';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { HttpClient } from '@angular/common/http';\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\n@NgModule({\n declarations: [CommonStripComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports: [CommonStripComponent]\n})\nexport class CommonStripModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-announcements',\n templateUrl: './announcements.component.html',\n styleUrls: ['./announcements.component.scss']\n})\nexport class AnnouncementsComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() mobileHeight: boolean = false\n @Output() openDialog = new EventEmitter<any>()\n isLoading: boolean = false\n\n constructor() { \n this.isLoading = true\n }\n\n ngOnInit() {\n\n setTimeout(() => {\n this.isLoading = false\n }, 10000);\n }\n\n viewMoreOrLess(item: any) {\n if (item.value.length > 152) {\n item.expanded = !item.expanded\n }\n }\n\n openAnnouncements() {\n this.openDialog.emit(true)\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { AnnouncementsComponent } from './announcements.component';\nimport { MatIconModule } from '@angular/material';\n\n\n\n@NgModule({\n declarations: [AnnouncementsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n SkeletonLoaderLibModule\n ],\n exports: [AnnouncementsComponent],\n})\nexport class AnnouncementsModule { }","import { NgModule } from '@angular/core';\nimport { ConsumptionComponent } from './consumption.component';\nimport { ContentStripWithTabsLibModule } from './_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { SlidersLibModule } from '../lib/_common/sliders/sliders.module';\nimport { DataPointsModule } from './_common/data-points/data-points.module';\nimport { CalenderModule } from './_common/calender/calender.module';\nimport { CommonStripModule } from './_common/common-strip/common-strip.module';\nimport { AnnouncementsModule } from './_common/announcements/announcements.module';\n\n\n\n@NgModule({\n declarations: [ConsumptionComponent],\n imports: [\n ContentStripWithTabsLibModule,\n SlidersLibModule\n ],\n exports: [ConsumptionComponent,\n ContentStripWithTabsLibModule,\n SlidersLibModule,\n DataPointsModule,\n CalenderModule,\n CommonStripModule,\n AnnouncementsModule\n ],\n})\nexport class ConsumptionModule { }\n","export const ROOT_WIDGET_CONFIG = {\n \n card: {\n _type: 'cardLib',\n cardResource: 'cardContentLib'\n },\n}\n","import { NsContent } from './widget-content.model';\n\nexport namespace NsCardContent {\n export interface ICard {\n content: NsContent.IContent;\n cardSubType: TCardSubType;\n context: { pageSection: string; position?: number };\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n likes?: number;\n contentTags?: IContentTags;\n stateData: any;\n cardCustomeClass?: any;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField?: string;\n }\n\n export type TCardSubType =\n | 'standard'\n | 'minimal'\n | 'space-saving'\n | 'card-user-details'\n | 'basic-info'\n | 'basic-details'\n | 'card-description-back'\n | 'network-card'\n | 'user-card';\n\n export enum EContentStatus {\n LIVE = 'Live',\n EXPIRED = 'Expired',\n DELETED = 'Deleted',\n MARK_FOR_DELETION = 'MarkedForDeletion',\n }\n export enum ACBPConst {\n UPCOMING = 'upcoming',\n ALL = 'All',\n OVERDUE = 'overdue',\n SUCCESS = 'success',\n }\n\n export enum IGOTConst {\n COMPETENCIES = 'competencies_v5',\n RETIRED = 'Retired',\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { WidgetBaseComponent, NsWidgetResolver } from '@sunbird-cb/resolver-v2';\nimport { NsCardContent } from '../../_models/card-content.model';\nimport { UtilityService } from '@sunbird-cb/utils-v2';\nimport { ConfigurationsService } from '../../_services/configurations.service';\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-cards',\n templateUrl: './cards.component.html',\n styleUrls: ['./cards.component.scss']\n})\nexport class CardsComponent extends WidgetBaseComponent\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\n\n @Input() widgetData!: NsCardContent.ICard;\n isIntranetAllowedSettings = false\n cbPlanMapData: any\n cbPlanInterval: any\n constructor(private utilitySvc: UtilityService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,\n public router: Router\n ) {\n super();\n }\n\n ngOnInit() {\n this.cbPlanInterval = setInterval(() => {\n this.getCbPlanData()\n }, 1000)\n }\n\n get isLiveOrMarkForDeletion() {\n if (\n !this.widgetData.content.status ||\n this.widgetData.content.status === 'Live' ||\n this.widgetData.content.status === 'MarkedForDeletion'\n ) {\n return true\n }\n return false\n }\n\n get showIntranetContent() {\n if (this.widgetData.content.isInIntranet && this.utilitySvc.isMobile) {\n return !this.isIntranetAllowedSettings\n }\n return false\n }\n async getRedirectUrlData(content: any){\n let urlData = await this.contSvc.getResourseLink(content)\n this.router.navigate(\n [urlData.url],\n {\n queryParams: urlData.queryParams\n })\n }\n getCbPlanData() {\n let cbpList: any={}\n if (localStorage.getItem('cbpData')) {\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\n if (cbpListArr && cbpListArr.length) {\n cbpListArr.forEach((data: any) => {\n cbpList[data.identifier] = data\n })\n }\n this.cbPlanMapData = cbpList\n // this.karmaPointLoading = false\n clearInterval(this.cbPlanInterval)\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsCardContent } from '../../../_models/card-content.model';\n\n@Component({\n selector: 'ws-cb-widget-card-resource',\n templateUrl: './card-resource.component.html',\n styleUrls: ['./card-resource.component.scss'],\n})\nexport class CardResourceComponent extends WidgetBaseComponent\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\n\n @Input() widgetData!: NsCardContent.ICard;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport { WidgetContentService } from '../../../_services/widget-content.service';\n\n@Component({\n selector: 'sb-uic-card-portrait',\n templateUrl: './card-portrait.component.html',\n styleUrls: ['./card-portrait.component.scss']\n})\nexport class CardPortraitComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contSvc.changeTelemetryData(contentData)\n this.contentData.emit(contentData)\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipePublicURL',\n})\nexport class PipePublicURL implements PipeTransform {\n environment: any\n constructor(\n @Inject('environment') environment: any,){\n this.environment = environment\n }\n\n transform(value: string): any {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n return value ? finalURL : ''\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipePublicURL } from './pipe-public-URL.pipe'\n\n@NgModule({\n declarations: [PipePublicURL],\n imports: [\n CommonModule,\n ],\n exports: [PipePublicURL],\n})\nexport class PipePublicURLModule { }\n","import { Component, OnInit, Input } from '@angular/core'\nimport { NsContent } from '../../_models/widget-content.model'\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service'\n\n@Component({\n selector: 'sb-uic-display-content-type',\n templateUrl: './display-content-type-lib.component.html',\n styleUrls: ['./display-content-type-lib.component.scss'],\n})\nexport class DisplayContentTypeLibComponent implements OnInit {\n\n @Input() displayContentType: NsContent.EDisplayContentTypes = NsContent.EDisplayContentTypes.DEFAULT\n displayContentTypeEnum = NsContent.EDisplayContentTypes\n constructor(private langtranslations: MultilingualTranslationsService) { }\n\n ngOnInit() {\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '')\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { DisplayContentTypeLibComponent } from './display-content-type-lib.component'\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms'\n\n@NgModule({\n declarations: [DisplayContentTypeLibComponent],\n imports: [CommonModule, ReactiveFormsModule, FormsModule],\n exports: [DisplayContentTypeLibComponent],\n})\nexport class DisplayContentTypeLibModule {}\n","import { Directive, Input, HostListener, HostBinding, OnChanges } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsDefaultThumbnail]',\r\n})\r\nexport class DefaultThumbnailDirective implements OnChanges {\r\n\r\n @Input() wsUtilsDefaultThumbnail = ''\r\n @Input() src = ''\r\n isSrcUpdateAttemptedForDefault = false\r\n\r\n @HostBinding('src') srcUrl = ''\r\n @HostListener('error') updateSrc() {\r\n if (!this.isSrcUpdateAttemptedForDefault) {\r\n this.srcUrl = this.wsUtilsDefaultThumbnail\r\n this.isSrcUpdateAttemptedForDefault = true\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.srcUrl = this.src\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { DefaultThumbnailDirective } from './default-thumbnail.directive'\r\n\r\n@NgModule({\r\n declarations: [DefaultThumbnailDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [DefaultThumbnailDirective],\r\n})\r\nexport class DefaultThumbnailModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport * as moment from 'moment'\r\n\r\n@Pipe({\r\n name: 'pipeDurationTransform',\r\n})\r\nexport class PipeDurationTransformPipe implements PipeTransform {\r\n\r\n transform(data: number, type: 'time24' | 'hms' | 'hour' | 'hms2H' | 'hms2M'| 'day'): any {\r\n if (data <= 0) {\r\n return ''\r\n }\r\n const h = Math.floor(data / 3600)\r\n const m = Math.floor((data % 3600) / 60)\r\n const s = Math.floor((data % 3600) % 60)\r\n let duration = ''\r\n switch (type) {\r\n case 'time24':\r\n return this.defaultDuration(h, m, s)\r\n case 'hms':\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n case 'hms2H':\r\n /**to Print HH:mm:ss */\r\n const duration2 = moment.duration(data, 'seconds')\r\n const resultstring = moment.utc(duration2.asMilliseconds()).format('HH:mm:ss')\r\n return resultstring\r\n case 'hms2M': /**to Print mm:ss */\r\n const duration2H = moment.duration(data, 'seconds')\r\n const resultstring2H = moment.utc(duration2H.asMilliseconds()).format('mm:ss')\r\n\r\n return resultstring2H\r\n case 'hour':\r\n if (h === 0) {\r\n duration += 'less than an hour'\r\n }\r\n if (h === 1) {\r\n duration += `${h} hour`\r\n }\r\n if (h > 1) {\r\n duration += `${h} hours`\r\n }\r\n return duration\r\n case 'day':\r\n if (h > 24) {\r\n const duration3 = moment.duration(data, 'seconds')\r\n return `${duration3.days()} day(s)`\r\n }\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n\r\n default:\r\n return this.defaultDuration(h, m, s)\r\n }\r\n }\r\n\r\n defaultDuration(h: number, m: number, s: number) {\r\n let duration = ''\r\n duration += h > 0 ? `${h.toString().padStart(2)}:` : ''\r\n duration += m > 0 ? `${m.toString().padStart(2)}:` : '00:'\r\n duration += s > 0 ? s.toString().padStart(2) : '00'\r\n return duration\r\n }\r\n hmsCalculation(h: number, m: number, s: number, dur: string, type: string) {\r\n let space = ''\r\n let duration = dur\r\n if (h > 0) {\r\n duration += type === 'hms' ? `${h}h` : `${h} hr`\r\n }\r\n if (m > 0) {\r\n if (h > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${m}m` : `${space}${m} min`\r\n }\r\n if (s > 0 && h === 0) {\r\n if (m > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${s}s` : `${space}${s} sec`\r\n }\r\n return duration\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeDurationTransformPipe } from './pipe-duration-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeDurationTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeDurationTransformPipe],\r\n})\r\nexport class PipeDurationTransformModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardUser } from '../../../_models/card-users.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-user',\n templateUrl: './card-user.component.html',\n styleUrls: ['./card-user.component.scss']\n})\nexport class CardUserComponent implements OnInit {\n @Input() widgetData!: NsCardUser.ICard;\n @Output() userData = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n }\n }\n\n getRedirectUrlData(userData: any){\n this.userData.emit(userData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\n },\n {\n id: this.widgetData.content.userId,\n // type: this.widgetData.user.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n // ver: `${this.widgetData.user.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase('user')}-card`,\n module: _.camelCase('user'),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n \n@Component({\n selector: 'sb-uic-card-landscape',\n templateUrl: './card-landscape.component.html',\n styleUrls: ['./card-landscape.component.scss']\n})\nexport class CardLandscapeComponent implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n defaultThumbnail: any\n acbpConstants = NsCardContent.ACBPConst\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n cbPlanMapData: any\n cbPlanInterval: any\n \n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.cbPlanInterval = setInterval(() => {\n this.getCbPlanData()\n }, 1000)\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n getCbPlanData() {\n let cbpList: any={}\n if (localStorage.getItem('cbpData')) {\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\n if (cbpListArr && cbpListArr.length) {\n cbpListArr.forEach((data: any) => {\n cbpList[data.identifier] = data\n })\n }\n this.cbPlanMapData = cbpList\n // this.karmaPointLoading = false\n clearInterval(this.cbPlanInterval)\n }\n }\n\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-wide',\n templateUrl: './card-wide.component.html',\n styleUrls: ['./card-wide.component.scss']\n})\nexport class CardWideComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n \n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\n\n@Component({\n selector: 'sb-uic-card-mdo-channel',\n templateUrl: './card-mdo-channel.component.html',\n styleUrls: ['./card-mdo-channel.component.scss']\n})\nexport class CardMDOChannelComponent implements OnInit {\n @Input() widgetData!: NsContent.IContent;\n @Output() userData = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\n },\n {\n id: this.widgetData.content.userId,\n // type: this.widgetData.user.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n // ver: `${this.widgetData.user.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase('user')}-card`,\n module: _.camelCase('user'),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-wide-v2',\n templateUrl: './card-wide-v2.component.html',\n styleUrls: ['./card-wide-v2.component.scss']\n})\nexport class CardWideV2Component implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() cbPlanMapData: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\n\n@Component({\n selector: 'sb-uic-card-karma-programs',\n templateUrl: './card-karma-programs.component.html',\n styleUrls: ['./card-karma-programs.component.scss']\n})\nexport class CardKarmaProgramsComponent implements OnInit {\n\n @Input() widgetData!: NsContent.IContent;\n @Input() randomColorApply: boolean = false\n @Output() userData = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n randomColors: any = [\n '#EF941D',\n '#F97440',\n '#35B5B0',\n '#9988FF',\n '#254092',\n '#926525',\n '#4F72DF'\n ]\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.setRandomColor()\n }\n\n setRandomColor(){\n if(this.widgetData && this.widgetData.content) {\n if(this.randomColorApply){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\n }else {\n this.widgetData.content['bgColor'] = '#1a4ca1'\n }\n }\n console.log( this.widgetData.content, this.randomColorApply)\n }\n\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\n },\n {\n id: this.widgetData.content.userId,\n // type: this.widgetData.user.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n // ver: `${this.widgetData.user.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase('user')}-card`,\n module: _.camelCase('user'),\n })\n }\n\n get getRandomColors(){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n return this.randomColors[randomIndex1]\n }\n}\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule, MatCardModule, MatIconModule, 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 { 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\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 ],\r\n imports: [\r\n CommonModule,\r\n MatCardModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n RouterModule,\r\n PipePublicURLModule,\r\n DisplayContentTypeLibModule,\r\n DefaultThumbnailModule,\r\n PipeDurationTransformModule,\r\n SkeletonLoaderLibModule\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 ],\r\n})\r\nexport class CardsModule { }\r\n","import { NsWidgetResolver } from '@sunbird-cb/resolver-v2'\nimport { ROOT_WIDGET_CONFIG } from './consumption.config'\n// Components\nimport { CardsComponent } from './_common/cards/cards.component'\nimport { CardsModule } from './_common/cards/cards.module'\n\n\nexport const WIDGET_REGISTERED_LIB_MODULES = [\n CardsModule\n]\n\nexport const WIDGET_REGISTRATION_LIB_CONFIG: NsWidgetResolver.IRegistrationConfig[] = [\n {\n widgetType: ROOT_WIDGET_CONFIG.card._type,\n widgetSubType: ROOT_WIDGET_CONFIG.card.cardResource,\n component: CardsComponent,\n }\n]\n","import { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { Observable } from 'rxjs'\n\nconst API_POINTS = {\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\n CERTIFICATE_URL: `apis/protected/v8/cohorts/course/batch/cert/download/`,\n}\n\n@Injectable({ providedIn: 'root' })\n\nexport class CompetencyPassbookService {\n // tslint: disable-next-line: whitespace\n constructor(private http: HttpClient) { }\n getCompetencyList(payload: any): Observable<any> {\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\n }\n\n fetchCertificate(certId: string): Observable<any> {\n return this.http.get(API_POINTS.CERTIFICATE_URL + certId)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { CompetencyPassbookService } from './competency-passbook.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-competency-passbook',\n templateUrl: './competency-passbook.component.html',\n styleUrls: ['./competency-passbook.component.scss']\n})\nexport class CompetencyPassbookComponent implements OnInit {\n\n @Input() objectData: any\n @Input() providerId: any\n @Input() cardDisplayCount: any = 3\n @Input() dynamicClass: any\n @Input() dynamicColor: any\n @Input() dynamicAlignPills: any = 'center'\n @Output() emptyResponse = new EventEmitter<any>()\n loadCometency: boolean = false\n loadCompetencyArea: boolean = false\n originalCompetencyArray: any\n competencyArea: any []\n selectedValue: any;\n competencyVersion:string = ''\n competencyTheme: any = []\n allcompetencyTheme: any ={}\n competencyStrength: any = 0\n competencyThemeLength: any = 6\n showAllTheme : any = [{name:'Show all', showAll: false}]\n\n // subTheme = ['Behavioural']\n // currentFilter = 'Behavioural'\n // currentCompetencies: any = []\n // competencyData: any\n constructor(public configSvc: ConfigurationsService,\n public contentSvc:WidgetContentService,\n public competencySvc: CompetencyPassbookService,\n public router : Router\n ) { \n \n }\n\n \n ngOnInit() {\n this.getAllCompetencies()\n // this.competencyData = this.objectData\n // this.filter(this.currentFilter)\n }\n // filter(filterValue: string) {\n // this.currentFilter = filterValue\n // this.currentCompetencies = this.competencyData.data.filter((item: any) => item.type === filterValue)\n // }\n showMore() {\n this.objectData.viewMore = !this.objectData.viewMore\n }\n\n // to get competency area from facets\n async getCompetencyArea(){let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"channel\": [\n this.providerId\n ],\n }\n }\n this.loadCompetencyArea = true\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addfilter,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n \"competencies_v5.competencyArea\"\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n this.competencyArea = response.results.result.facets[0].values\n this.competencyStrength = this.competencyArea.reduce((partialSum: any, data: any) => partialSum + data.count, 0) \n this.selectedValue = this.competencyArea[0].name.toLowerCase()\n let addFilter = {\n \"channel\": [\n this.providerId\n ]\n }\n this.getcompetencyTheme(this.competencyArea[0].name, addFilter)\n this.loadCompetencyArea = false\n }\n }\n } catch (error) {\n this.loadCompetencyArea = false\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async callCompetencySearch(request){\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.searchV6(request).subscribe(results => {\n resolve({ results });\n },(error: any) => {\n reject(error);\n },\n );\n }\n });\n }\n\n // competency theam change\n competencyChange(e){\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"channel\": [\n this.providerId\n ],\n }\n }\n \n this.getcompetencyTheme(e.name, addfilter)\n this.selectedValue = e.name\n }\n getAllCompetencies(){\n this.loadCometency = true\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\n this.competencySvc.getCompetencyList(request).subscribe((response: any) => {\n this.allcompetencyTheme = {}\n if(response && response.result && response.result.competency) {\n this.originalCompetencyArray = response.result.competency\n\n this.getCompetencyArea()\n response.result.competency.forEach(element => {\n element.children.forEach((childEle) => {\n let name = childEle.name.toLowerCase()\n this.allcompetencyTheme[name] = childEle\n this.allcompetencyTheme[name]['viewMore'] = false\n });\n });\n }\n this.loadCometency = false\n })\n }\n\n async getcompetencyTheme(value: any,addFilter?: any) {\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addFilter,\n \"competencies_v5.competencyArea\" : value,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n \"competencies_v5.competencyTheme\"\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n this.loadCometency = true\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n let competencyThemeData : any = response.results.result.facets[0].values \n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === value) {\n this.competencyTheme = competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n this.resetViewMore()\n }\n this.loadCometency = false\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n resetViewMore(){\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\n this.allcompetencyTheme[comp]['viewMore'] = false\n })\n }\n viewMoreChildren(data: any) {\n data.viewMore = !data.viewMore\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\n }\n displayAllTheme(event: any) {\n this.showAllTheme[0]['showAll'] = !event.showAll \n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\n }\n\n navigateToCompetency(compData: any){\n this.router.navigateByUrl(`app/learn/browse-by/competency/${compData.name}`)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-pills',\n templateUrl: './pills.component.html',\n styleUrls: ['./pills.component.scss']\n})\nexport class PillsComponent implements OnInit {\n\n @Input() pillsData: any\n @Input() selectedValue: any\n @Input() isLoading: boolean = false\n @Output() pillClick = new EventEmitter<any>()\n @Input() dynamicClass: any = ''\n @Input() dynamicColor: any = ''\n @Input() requiredTitlecase: boolean = true\n\n constructor() { }\n\n ngOnInit() {\n }\n selectedPill(pillData: any) {\n this.pillClick.emit(pillData)\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule } from '@angular/material';\nimport { PillsComponent } from './pills.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [PillsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule\n ],\n exports: [PillsComponent]\n})\nexport class PillsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CompetencyPassbookComponent } from './competency-passbook.component';\nimport { MatIconModule } from '@angular/material';\nimport { PillsModule } from './../pills/pills.module';\nimport { CompetencyPassbookService } from './competency-passbook.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [CompetencyPassbookComponent],\n imports: [\n CommonModule,\n MatIconModule,\n PillsModule,\n SkeletonLoaderLibModule\n ],\n exports: [CompetencyPassbookComponent],\n providers:[CompetencyPassbookService]\n})\nexport class CompetencyPassbookModule { }\n","import { Injectable } from '@angular/core'\nimport { Observable, of } from 'rxjs'\nimport { HttpClient } from '@angular/common/http'\nimport { NsAppRating } from '../_models/rating.model'\n\nconst PROXY_SLAG_V8 = '/apis/proxies/v8'\nconst API_END_POINTS = {\n GET_RATING: (contentId: string, contentType: string, userId: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/${contentType}/${userId}`,\n ADD_OR_UPDATE: `${PROXY_SLAG_V8}/ratings/v1/upsert`,\n GET_RATING_SUMMARY: (contentId: string, contentType: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/summary/${contentId}/${contentType}`,\n GET_RATING_LOOKUP: `${PROXY_SLAG_V8}/ratings/v1/ratingLookUp`,\n GET_AUTHOR_REPLY: (contentId: string, userID: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/Course/${userID}`,\n POST_AUTHOR_REPLY: `${PROXY_SLAG_V8}/ratings/v2/read`,\n}\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class RatingService {\n\n constructor(public http: HttpClient) { }\n\n getRating(contentId: string, contentType: string, userId: string): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.get<any>(\n API_END_POINTS.GET_RATING(contentId, contentType, userId)\n )\n }\n return of({})\n }\n\n addOrUpdateRating(req: NsAppRating.IRating): Observable<any> {\n return this.http.post<any>(\n API_END_POINTS.ADD_OR_UPDATE, req\n )\n }\n\n getRatingSummary(contentId: string, contentType: string): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.get<any>(\n API_END_POINTS.GET_RATING_SUMMARY(contentId, contentType)\n )\n }\n return of({})\n }\n\n getRatingLookup(req: NsAppRating.ILookupRequest): Observable<any> {\n return this.http.post<any>(\n API_END_POINTS.GET_RATING_LOOKUP, req\n )\n }\n\n getRatingReply(req: any): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.post<any>(\n API_END_POINTS.POST_AUTHOR_REPLY, req\n )\n }\n return of({})\n }\n\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\n if (avg) {\n const avgRating = avg\n const ratingFloor = Math.floor(avgRating)\n // const difference = avgRating - ratingIndex\n if (ratingIndex <= ratingFloor) {\n return 'star'\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\n return 'star_half'\n }\n }\n return 'star'\n }\n\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\n if (avg) {\n const avgRating = avg\n const ratingFloor = Math.floor(avgRating)\n if (ratingIndex <= ratingFloor) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 > 0.71) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 < 0.29) {\n return false\n }\n }\n return false\n }\n\n getAuthorReply(contentId: string, userID: string): Observable<any> {\n return this.http.get<any>(\n API_END_POINTS.GET_AUTHOR_REPLY(contentId, userID)\n )\n }\n}\n","import { Directive, Input, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[sbUicScrollableItem]'\n})\nexport class ScrollableItemDirective {\n\n @Input('sbUicScrollableItem') public key: string\n constructor(private el: ElementRef<HTMLElement>) {}\n\n public scrollIntoView(blockValue: any) {\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: blockValue });\n }\n\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nconst API_END_POINTS = {\n TOP_REVIEWS: `/apis/proxies/v8/ratings/v1/topReviews`\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class UserContentRatingLibService {\n\n constructor(private http: HttpClient) { }\n fetchTopReviews(doId: any): Observable<any> {\n return this.http.get<any>(`${API_END_POINTS.TOP_REVIEWS}/${doId}`)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { RatingService } from '../../_services/rating.service';\nimport { ScrollableItemDirective } from './../../_directives/scrollable-item/scrollable-item.directive';\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\n\n@Component({\n selector: 'sb-uic-user-content-rating',\n templateUrl: './user-content-rating-lib.component.html',\n styleUrls: ['./user-content-rating-lib.component.scss']\n})\nexport class UserContentRatingLibComponent implements OnInit {\n currentIndex: any =0\n @Input() providerId : any = ''\n @Input() formData : any = ''\n @Output() emptyResponse = new EventEmitter<any>()\n styleData: any = {} \n contentdata: any = []\n\n\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor(public ratingService: RatingService,\n public userRatingSvc: UserContentRatingLibService\n ) { }\n\n ngOnInit() {\n this.styleData = this.formData && this.formData.sliderData && this.formData.sliderData.styleData\n this.getTopReviews();\n }\n\n getTopReviews() {\n this.contentdata = []\n this.userRatingSvc.fetchTopReviews(this.providerId).subscribe((response: any) => {\n if(response && response.result && response.result.content.length) {\n response.result.content.forEach((contentEle: any) => {\n let localData = {}\n localData['content'] = contentEle.contentInfo\n localData['rating'] = contentEle.rating\n localData['review'] = contentEle.review\n localData['userDetails'] = contentEle.userDetails\n localData['cardSubType'] = \"card-wide-lib\"\n localData['cardCustomeClass'] = \"\"\n this.contentdata.push(localData)\n });\n } else {\n this.emptyResponse.emit(true)\n }\n },(_error: any)=> {\n this.emptyResponse.emit(true)\n })\n }\n\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\n return this.ratingService.getRatingIcon(ratingIndex, avg)\n }\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\n return this.ratingService.getRatingIconClass(ratingIndex, avg)\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n this.handleScrollClick(indexValue)\n }\n\n handleScrollClick(dataValue: string) {\n const item = this.scrollableItems.find(x => x.key === dataValue)\n item.scrollIntoView(\"nearest\");\n }\n\n}\n","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-avatar-photo',\n templateUrl: './avatar-photo-lib.component.html',\n styleUrls: ['./avatar-photo-lib.component.scss'],\n})\nexport class AvatarPhotoLibComponent implements OnInit, OnChanges {\n @Input() datalen: any\n\n @Input()\n public photoUrl!: string\n\n @Input()\n public name!: string\n @Input() public size = ''\n @Input() public defaulfColor = ''\n @Input() randomColor = false\n @Input() initials?: string\n @Input() showBadge = false\n public showInitials = false\n public circleColor!: string\n random = Math.random().toString(36).slice(2)\n\n // public initials!: string\n\n private colors = [\n '#EB7181', // red\n '#306933', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n ]\n\n private randomcolors = [\n '#EB7181', // red\n '#006400', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n ]\n\n ngOnInit() {\n if (!this.photoUrl) {\n this.showInitials = true\n if (!this.initials) {\n this.createInititals()\n }\n if (this.datalen === 1) {\n if(this.defaulfColor) {\n this.randomcolors = [\n this.defaulfColor\n ]\n } else {\n this.randomcolors = [\n '#006400', // green\n ]\n }\n }\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\n this.circleColor = this.colors[randomIndex]\n if (this.randomColor) {\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomcolors.length))\n this.circleColor = this.randomcolors[randomIndex1]\n }\n }\n\n }\n ngOnChanges(change: SimpleChanges) {\n if (change.name.currentValue !== change.name.previousValue && !change.name.firstChange) {\n this.createInititals()\n }\n }\n get userInitials() {\n return this.initials\n }\n private createInititals(): void {\n let initials = ''\n const array = `${this.name} `.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < this.name.length; i += 1) {\n if (this.name.charAt(i) === ' ') {\n continue\n }\n\n if (this.name.charAt(i) === this.name.charAt(i)) {\n initials += this.name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n this.initials = initials.toUpperCase()\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { RouterModule } from '@angular/router'\nimport { MatButtonModule, MatIconModule, MatMenuModule, MatRippleModule } from '@angular/material'\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2'\nimport { AvatarPhotoLibComponent } from './avatar-photo-lib.component'\n\n@NgModule({\n declarations: [AvatarPhotoLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatRippleModule,\n SbUiResolverModule,\n ],\n exports: [AvatarPhotoLibComponent],\n entryComponents: [AvatarPhotoLibComponent],\n})\nexport class AvatarPhotoLibModule { }\n","import { Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core'\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\nimport { ICarousel, ICarouselStyle } from './sliders-ng-content.model'\nimport { Subscription, interval } from 'rxjs'\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-sliders-ng-content',\n templateUrl: './sliders-ng-content.component.html',\n styleUrls: ['./sliders-ng-content.component.scss'],\n})\nexport class SlidersNgContentLibComponent extends WidgetBaseComponent\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\n @Input() widgetData!: ICarousel[]\n @Input() styleData!: ICarouselStyle\n @Input() title: any = ''\n @Input() loadNgContentData: boolean = false\n @Input() autoScroll: boolean = false\n @Output() currentIndexValue = new EventEmitter<any>()\n \n @HostBinding('id')\n public id = `banner_${Math.random()}`\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n @Input() currentIndex = 0\n slideInterval: Subscription | null = null\n isMobile = false\n\n constructor(\n private events: EventService,\n private valueSvc: ValueService\n ) {\n super()\n }\n\n ngOnInit() {\n if(this.autoScroll) {\n this.reInitiateSlideInterval()\n }\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n reInitiateSlideInterval() {\n if (this.widgetData && this.widgetData.length > 1) {\n try {\n if (this.slideInterval) {\n this.slideInterval.unsubscribe()\n }\n } catch (e) {\n } finally {\n this.slideInterval = interval(8000).subscribe(() => {\n if (this.currentIndex === this.widgetData.length - 1) {\n this.currentIndex = 0\n this.currentIndexValue.emit(this.currentIndex)\n } else {\n this.currentIndex += 1\n this.currentIndexValue.emit(this.currentIndex)\n }\n })\n }\n }\n }\n slideTo(index: number) {\n if (index >= 0 && index < this.widgetData.length) {\n this.currentIndex = index\n this.currentIndexValue.emit(this.currentIndex)\n } else if (index === this.widgetData.length) {\n this.currentIndex = 0\n this.currentIndexValue.emit(this.currentIndex)\n } else {\n this.currentIndex = this.widgetData.length + index\n this.currentIndexValue.emit(this.currentIndex)\n }\n if(this.autoScroll) {\n this.reInitiateSlideInterval()\n }\n }\n\n get isOpenInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n return true\n } return false\n }\n\n openInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n window.open(currentData.redirectUrl)\n }\n }\n raiseTelemetry(bannerUrl: string | undefined) {\n this.openInNewTab()\n const path = window.location.pathname.replace('/', '')\n const url = path + window.location.search\n\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'banner',\n },\n {\n pageUrl: url,\n bannerRedirectUrl: bannerUrl,\n },\n {\n pageIdExt: 'banner',\n module: WsEvents.EnumTelemetrymodules.CONTENT,\n })\n }\n\n ngOnDestroy() {\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SlidersNgContentLibComponent } from './sliders-ng-content.component'\nimport { RouterModule } from '@angular/router'\nimport { ImageResponsiveModule } from '../../_directives/image-responsive/image-responsive.module'\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\n/* tslint:disable */\nimport Hammer from 'hammerjs'\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\n/* tslint:enable */\nexport class MyHammerConfig extends HammerGestureConfig {\n buildHammer(element: HTMLElement) {\n const mc = new Hammer(element, {\n touchAction: 'pan-y',\n })\n return mc\n }\n}\n\n// tslint:disable-next-line: max-classes-per-file\n@NgModule({\n declarations: [SlidersNgContentLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n NavigationModule,\n ImageResponsiveModule,\n ],\n exports: [SlidersNgContentLibComponent],\n entryComponents: [SlidersNgContentLibComponent],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: MyHammerConfig,\n },\n ],\n})\nexport class SlidersNgContentLibModule { }\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { ScrollableItemDirective } from './scrollable-item.directive'\n\n@NgModule({\n declarations: [ScrollableItemDirective],\n imports: [\n CommonModule,\n ],\n exports: [ScrollableItemDirective],\n})\nexport class ScrollableItemModule { }\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule } from '@angular/material';\nimport { UserContentRatingLibComponent } from './user-content-rating-lib.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { SlidersLibModule } from '../sliders/sliders.module';\nimport { RatingService } from '../../_services/rating.service';\nimport { CardsModule } from '../cards/cards.module';\nimport { AvatarPhotoLibModule } from '../avatar-photo-lib/avatar-photo-lib.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\n\n\n\n@NgModule({\n declarations: [UserContentRatingLibComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n SlidersLibModule,\n CardsModule,\n AvatarPhotoLibModule,\n SlidersNgContentLibModule,\n ScrollableItemModule\n ],\n exports: [UserContentRatingLibComponent],\n providers: [RatingService, UserContentRatingLibService],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class UserContentRatingLibModule { }\n"]}
|
|
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/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/_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-program-v2/card-karma-program-v2.component.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/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/_services/rating.service.ts","ng://@sunbird-cb/consumption/lib/_directives/scrollable-item/scrollable-item.directive.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/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/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/user-content-rating/user-content-rating-lib.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","Math","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","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","split","forEach","w","index","toUpperCase","slice","translateActualLabel","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","mapEnrollmentData","setTime","getData","fetchProfileUserBatchList","dataKey","checkTime","parsedData","apiCache","getSavedData","getTime","resetTime","fetchCbpPlanList","mapData","contentNew","todayDate","enrollList","count","childData","childEnrollData","daysCount","planDuration","OVERDUE","SUCCESS","UPCOMING","parentId","status","RETIRED","competencyArea","competencyTheme","competencyThemeType","competencySubTheme","competencyAreaId","competencyThemeId","competencySubThemeId","contentStatus","competencies_v5","element","sortedData","sort","firstDate","uniqueUsersByID","lodash.uniqBy","sortedByEndDate","lodash.orderBy","sortedByStatus","courseData","courses","Inject","IStripUnitContentData","ContentStripWithTabsLibComponent","_super","contentSvc","loggerSvc","eventSvc","utilitySvc","router","userSvc","langtranslations","emptyResponse","viewAllResponse","telemtryResponse","providerId","emitViewAll","random","stripsResultDataMap","stripsKeyOrder","showAccordionData","showParentLoader","showParentError","showParentNoData","errorDataCount","noDataCount","successDataCount","contentAvailable","veifiedKarmayogi","changeEventSubscription","todaysEvents","console","log","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","userData","eval","organisation","rootOrgId","designation","professionalDetails","loaderWidgets","transformSkeletonToWidgets","fetchFromEnrollmentList","fetchFromSearchV6","fetchFromTrendingContent","fetchAllCbpPlans","fetchAllTopContent","fetchAllFeaturedContent","fetchAllChannela","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","originalFilters","requestRequired","allTabs","currentTabFromMap","getTabDataByNewReqSearchV6","searchV6Request","results","Event","transformEventsToWidgets","tab","trendingSearch","getTabDataByNewReqTrending","trendingSearchRequest","responseKey","userRootOrgId","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","stripName","stripBackground","secondaryHeading","preWidgets","postWidgets","showOnNoData","showOnLoader","showOnError","checkParentStatus","stripWidgetsCount","settledCount","totalCount","api","cbpList","topContent","featureContent","channels","tabClicked","tabEvent","stripMap","stripKey","tabLoading","textLabel","raiseInteractTelemetry","WsEvents","EnumInteractTypes","CLICK","subType","EnumInteractSubTypes","HOME_PAGE_STRIP_TABS","_.camelCase","module","EnumTelemetrymodules","HOME","currentStrip","tabSelected","computeDataOnClick","getTabDataByfilter","tabIndex","currentTab","splitCbpTabsData","clearInterval","enrollInterval","getTabsList","all","upcoming","overdue","allCompleted","allData","allInCompleted","allCompletedOverDue","allCompletedAll","getSelectedIndex","returnValue","translateLabels","identify","item","tracker","postMethodFilters","postRequestMethod","redirectViewAll","queryParamsData","navigate","posterImage","appIcon","programCount","transformAllContentsToWidgets","raiseTelemetryInteratEvent","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","raiseTelemetry","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","InsiteDataService","fetchSearchData","fetchTrainingDetails","DataPointsComponent","insightSvc","layoutType","fetchDataFromApi","pageLayout","customArray","isDataLoading","objectData","createCustomArray","metrics","getInsiteData","nByn","dataColSpan","organisations","requestType","nudges","nudgeData","orgId","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","venue","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","IStripUnitCommonData","CommonStripComponent","commonMethodsSvc","dataType","ɵ0$2","CommonStripModule","AnnouncementsComponent","mobileHeight","openDialog","isLoading","viewMoreOrLess","expanded","openAnnouncements","AnnouncementsModule","ConsumptionModule","ROOT_WIDGET_CONFIG","card","_type","cardResource","CardsComponent","contSvc","isIntranetAllowedSettings","cbPlanInterval","setInterval","getCbPlanData","isInIntranet","getRedirectUrlData","cbpListArr","cbPlanMapData","CardResourceComponent","CardPortraitComponent","snackBar","isCardLoading","isCardFlipped","showFlip","defaultThumbnail","logos","defaultContent","sourceLogos","sources","defaultSLogo","defaultSourceLogo","showSnackbar","showIntranetContent","duration","isLiveOrMarkForDeletion","MatSnackBar","PipePublicURL","mainUrl","finalURL","contentHost","contentBucket","Pipe","PipePublicURLModule","DisplayContentTypeLibComponent","displayContentType","DEFAULT","displayContentTypeEnum","DisplayContentTypeLibModule","DefaultThumbnailDirective","wsUtilsDefaultThumbnail","isSrcUpdateAttemptedForDefault","srcUrl","updateSrc","DefaultThumbnailModule","PipeDurationTransformPipe","h","floor","defaultDuration","hmsCalculation","duration2","moment.duration","moment.utc","asMilliseconds","duration2H","padStart","dur","space","PipeDurationTransformModule","CardUserComponent","rollup","CardLandscapeComponent","acbpConstants","ver","version","CardWideComponent","CardMDOChannelComponent","CardWideV2Component","CardKarmaProgramsComponent","randomColorApply","randomColors","setRandomColor","randomIndex1","CardKarmaProgramV2Component","CardsModule","WIDGET_REGISTERED_LIB_MODULES","WIDGET_REGISTRATION_LIB_CONFIG","component","API_POINTS","COMPETENCY_LIST","CERTIFICATE_URL","CompetencyPassbookService","getCompetencyList","payload","fetchCertificate","CompetencyPassbookComponent","competencySvc","cardDisplayCount","dynamicAlignPills","loadCometency","loadCompetencyArea","competencyVersion","allcompetencyTheme","competencyStrength","competencyThemeLength","showAllTheme","showAll","getAllCompetencies","showMore","viewMore","getCompetencyArea","addfilter","facets","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","pillData","PillsModule","CompetencyPassbookModule","PROXY_SLAG_V8","ɵ1$2","ɵ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","ScrollableItemDirective","el","scrollIntoView","blockValue","block","ElementRef","TOP_REVIEWS","UserContentRatingLibService","fetchTopReviews","UserContentRatingLibComponent","ratingService","userRatingSvc","formData","styleData","contentdata","sliderData","getTopReviews","contentEle","localData","contentInfo","rating","review","userDetails","_error","getCurrentIndex","indexValue","handleScrollClick","dataValue","scrollableItems","x","ViewChildren","AvatarPhotoLibComponent","size","defaulfColor","randomColor","showBadge","showInitials","colors","randomcolors","photoUrl","initials","createInititals","datalen","randomIndex","circleColor","change","currentValue","previousValue","firstChange","charAt","AvatarPhotoLibModule","MatMenuModule","MatRippleModule","SlidersNgContentLibComponent","loadNgContentData","autoScroll","currentIndexValue","SlidersNgContentLibModule","ScrollableItemModule","UserContentRatingLibModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConsumptionService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-consumption',\n template: `\n <p>\n consumption works!\n </p>\n `,\n styles: []\n})\nexport class ConsumptionComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit, OnChanges, OnDestroy, Input, Output, ViewChild, EventEmitter, ElementRef } from '@angular/core';\nimport {\n fromEvent,\n Subscription,\n timer,\n} from 'rxjs';\nimport { debounceTime, throttleTime } from 'rxjs/operators';\nimport { TFetchStatus } from '../../_constants/misc.constants';\nimport { ValueService } from '@sunbird-cb/utils-v2';\nimport { NsCommonStrip } from '../common-strip/common-strip.model';\nimport { NsContentStripMultiple } from '../../_models/content-strip-multiple.model';\n\n@Component({\n selector: 'sb-uic-horizontal-scroller-v2',\n templateUrl: './horizontal-scroller-v2.component.html',\n styleUrls: ['./horizontal-scroller-v2.component.scss'],\n})\n\nexport class HorizontalScrollerV2Component implements OnInit, OnChanges, OnDestroy {\n\n @Input() loadStatus: TFetchStatus = 'fetching';\n @Input() id: string = '';\n @Input() onHover = false;\n @Input() sliderConfig: any = {\n showNavs: true,\n showDots: true,\n cerificateCardMargin: false,\n };\n @Output() loadNext = new EventEmitter();\n @Input() widgetsLength: any;\n @Input() defaultMaxWidgets: any;\n @Input() stripConfig: any;\n @ViewChild('horizontalScrollElem', { static: true })\n horizontalScrollElem: ElementRef | null = null;\n\n enablePrev = false;\n enableNext = false;\n activeNav = 0;\n cardSubType = 'standard';\n bottomDotsArray: any = [];\n private scrollObserver: Subscription | null = null;\n isMobile = false\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n\n constructor(private valueSvc: ValueService) { }\n\n ngOnInit() {\n this.cardSubType = this.stripConfig && this.stripConfig.cardSubType ? this.stripConfig.cardSubType : 'standard';\n if (this.horizontalScrollElem) {\n const horizontalScrollElem = this.horizontalScrollElem;\n this.scrollObserver = fromEvent(\n horizontalScrollElem.nativeElement,\n 'scroll',\n )\n .pipe(debounceTime(100), throttleTime(100))\n .subscribe(_ => {\n this.updateNavigationBtnStatus(horizontalScrollElem\n .nativeElement as HTMLElement);\n });\n setTimeout(() => {\n this.getBottomDotsArray();\n }, 700);\n }\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n\n ngOnChanges() {\n timer(100).subscribe(() => {\n if (this.horizontalScrollElem) {\n this.updateNavigationBtnStatus(this.horizontalScrollElem\n .nativeElement as HTMLElement);\n }\n });\n setTimeout(() => {\n this.getBottomDotsArray();\n }, 700);\n }\n\n ngOnDestroy() {\n if (this.scrollObserver) {\n this.scrollObserver.unsubscribe();\n }\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n\n showPrev() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft -= 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft - clientWidth,\n behavior: 'smooth',\n });\n \n const elem = this.horizontalScrollElem.nativeElement\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav -= 1;\n } else {\n if(this.sliderConfig.arrowsAlwaysOn) {\n if(this.horizontalScrollElem.nativeElement.scrollLeft === 0){\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: elem.scrollWidth,\n behavior: 'smooth',\n });\n this.activeNav = this.bottomDotsArray.length - 1;\n }\n }\n }\n }\n }\n\n showNext() {\n // const elem = this.horizontalScrollElem.nativeElement\n // elem.scrollLeft += 0.20 * elem.clientWidth\n if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth * 0.24)\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + clientWidth,\n behavior: 'smooth',\n });\n const elem = this.horizontalScrollElem.nativeElement\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav += 1;\n } else {\n if(this.sliderConfig.arrowsAlwaysOn) {\n if(this.horizontalScrollElem.nativeElement.scrollLeft !== 0 && elem.clientWidth + elem.scrollLeft >= elem.scrollWidth ){\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: 0,\n behavior: 'smooth',\n });\n this.activeNav = 0;\n }\n }\n }\n }\n }\n\n private updateNavigationBtnStatus(elem: HTMLElement) {\n debugger\n this.enablePrev = true;\n this.enableNext = true;\n if (elem.scrollLeft === 0) {\n if(!this.sliderConfig.arrowsAlwaysOn) {\n this.enablePrev = false;\n }\n this.activeNav = 0;\n }\n if (elem.scrollWidth === Math.round(elem.clientWidth + elem.scrollLeft)) {\n if (this.loadStatus === 'hasMore') {\n this.loadNext.emit();\n } else {\n if(!this.sliderConfig.arrowsAlwaysOn) {\n this.enableNext = false;\n }\n if (this.bottomDotsArray.length) {\n this.activeNav = this.bottomDotsArray.length - 1;\n }\n }\n }\n if (elem.scrollLeft !== 0 && (elem.scrollWidth !== elem.clientWidth + elem.scrollLeft)) {\n this.activeNav = Math.ceil(elem.scrollLeft / elem.clientWidth);\n }\n }\n\n slideTo(ele: any) {\n const diff = ele - this.activeNav;\n // if (ele > this.activeNav && ele !== this.activeNav) {\n // if (this.horizontalScrollElem) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // } else {\n // if (this.horizontalScrollElem && ele >= 0 && ele !== this.activeNav) {\n // const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth)\n // this.horizontalScrollElem.nativeElement.scrollTo({\n // left: this.horizontalScrollElem.nativeElement.scrollLeft - (clientWidth*diff),\n // behavior: 'smooth',\n // })\n // }\n // this.activeNav = ele\n // }\n if (this.horizontalScrollElem) {\n const clientWidth = (this.horizontalScrollElem.nativeElement.clientWidth);\n this.horizontalScrollElem.nativeElement.scrollTo({\n left: this.horizontalScrollElem.nativeElement.scrollLeft + (clientWidth * diff),\n behavior: 'smooth',\n });\n }\n this.activeNav = ele;\n }\n\n getBottomDotsArray() {\n if (this.horizontalScrollElem) {\n this.bottomDotsArray = [];\n let cardWidth;\n let arrLength;\n if (this.cardSubType !== 'card-wide-v2') {\n cardWidth = this.cardSubType === 'standard' ? 245 :\n ((document.getElementsByClassName(this.cardSubType) &&\n document.getElementsByClassName(this.cardSubType)[0] !== undefined)\n ? document.getElementsByClassName(this.cardSubType)[0].clientWidth : 245);\n if (document.getElementById(`${this.id}`)) {\n const scrollerWidth = document.getElementById(`${this.id}`).clientWidth;\n const totalCardsLength = cardWidth * this.widgetsLength;\n if (totalCardsLength > scrollerWidth) {\n arrLength = (scrollerWidth / cardWidth);\n this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?\n this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets;\n arrLength = this.defaultMaxWidgets / arrLength;\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i);\n }\n // console.log('this.cardSubType', this.cardSubType, arrLength, this.widgetsLength ,\n // this.defaultMaxWidgets, scrollerWidth, this.bottomDotsArray)\n }\n }\n } else {\n setTimeout(() => {\n arrLength = document.getElementsByClassName(this.cardSubType).length;\n for (let i = 0; i < arrLength; i += 1) {\n this.bottomDotsArray.push(i);\n }\n }, 1000);\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HorizontalScrollerV2Component } from './horizontal-scroller-v2.component';\nimport { MatButtonModule, MatIconModule, MatProgressSpinnerModule } from '@angular/material';\n\n@NgModule({\n declarations: [HorizontalScrollerV2Component],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatProgressSpinnerModule,\n ],\n exports: [HorizontalScrollerV2Component],\n})\nexport class HorizontalScrollerV2Module { }\n","export namespace NsContent {\n export interface IContinueLearningData extends IContent {\n continueData: any;\n }\n\n export interface IContinueLearningDataReq {\n request: {\n userId: string | undefined,\n courseId: string,\n contentIds: string[],\n batchId: string | undefined | null\n fields?: string[]\n };\n }\n\n export interface IContent {\n platform?: any;\n addedOn: string;\n appIcon: string;\n artifactUrl: string;\n averageRating?: any;\n // this will be used to content form enrollment user list\n batches?: any;\n batch?: any;\n body?: string;\n certificationList?: IRelatedContentMeta[];\n certificationStatus?: TCertificationStatus;\n certificationSubmissionDate?: string;\n certificationUrl: string;\n childNodes?: string[];\n children: IContent[];\n childrenClassifiers?: string[];\n clients?: IClient[];\n collections?: IContent[];\n completionPercentage?: number | null;\n completionStatus?: number;\n difficultyLevel: string;\n contentId: string;\n contentType: EContentTypes;\n contentUrlAtSource: string;\n creatorContacts: ICreator[];\n\n creatorDetails: ICreator[];\n creatorLogo: string;\n creatorPosterImage: string;\n creatorThumbnail: string;\n\n curatedTags: string[];\n description: string;\n displayContentType: EDisplayContentTypes; // For UI\n downloadUrl?: string;\n duration: number;\n enrolledDate?: string;\n exclusiveContent?: boolean;\n expiryDate?: string;\n equivalentCertifications?: IRelatedContentMeta[];\n hasAccess: boolean;\n hasAssessment?: string;\n idealScreenSize?: string;\n identifier: string;\n introductoryVideo?: string;\n introductoryVideoIcon?: string;\n learningTrack?: string;\n isExternal: boolean;\n isIframeSupported: 'Yes' | 'No' | 'Maybe';\n isInIntranet?: boolean;\n keywords?: string[];\n kArtifacts?: IRelatedContentMeta[];\n lastContentAccessTime?: string;\n lastUpdatedOn: string;\n learningMode?: TLearningMode;\n learningObjective: string;\n labels?: string[];\n locale?: string;\n hasTranslations?: { identifier: string; locale: string }[];\n isTranslationOf?: { identifier: string; locale: string }[];\n me_totalSessionsCount: number;\n mediaType: string;\n mimeType: EMimeTypes;\n msArtifactDetails?: IMSArtifactDetails;\n mode?: ETagType;\n name: string;\n nextCertificationAttemptDate?: string;\n playgroundInstructions?: string;\n playgroundResources?: IResourcePlayground[];\n postContents?: IPrePostContent[];\n posterImage?: string;\n preContents?: IPrePostContent[];\n preRequisites: string;\n price?: {\n currency: string\n value: number\n };\n primaryCategory: EPrimaryCategory;\n proctorUrl?: string;\n progress?: IMarkAsCompleteProgress;\n publishedOn: string;\n recentCertificationAttemptScore?: number;\n recommendationReasons?: string[];\n region?: string[];\n registrationUrl?: string;\n registrationInstructions?: string;\n resourceCategory?: string[];\n resourceType: string;\n size?: number;\n skills: ISkill[];\n softwareRequirements?: IResourceDetail[];\n sourceName: string;\n sourceShortName: string;\n sourceIconUrl?: string;\n sourceUrl?: string;\n ssoEnabled?: boolean;\n lastReadContentId?: string;\n status:\n | 'Draft'\n | 'InReview'\n | 'QualityReview'\n | 'Reviewed'\n | 'Processing'\n | 'Live'\n | 'Deleted'\n | 'MarkedForDeletion'\n | 'Expired';\n subTitle?: string;\n subTitles?: ISubtitle[];\n studyMaterials?: IRelatedContentMeta[];\n systemRequirements?: string[];\n tags: ITag[];\n topics: IContentTopic[];\n totalLikes?: { [key: string]: number };\n totalRating?: number;\n track: ITrack[];\n uniqueLearners?: number;\n viewCount?: { [key: string]: number };\n reason?: string; // required for Knowledge board\n trainingLHubCount?: number; // for LHub trainings\n verifiers?: {\n // required for External Certifications\n name: string\n email: string\n id: string\n }[];\n references?: { url: string; title: string }[];\n resumePage?: number; // For player WebModule in UI\n [key: string]: any;\n optionalReading: boolean;\n additionalTags?: string[];\n }\n\n export interface IContentResponse {\n id: string;\n params: any;\n responseCode: string;\n result: {\n content: IContent\n };\n ts: string;\n ver: string;\n }\n\n export interface IBatch {\n batchId: string;\n createdBy: string;\n endDate: string | null;\n enrollmentType: string;\n identifier: string;\n name: string;\n startDate: string;\n status: number;\n cert_templates?: null;\n collectionId: string;\n courseId: string;\n createdDate: string;\n createdFor: string[];\n description?: null;\n enrollmentEndDate: string | null;\n id: string;\n mentors?: string[] | null;\n tandc?: null;\n updatedDate?: string | null;\n }\n\n export interface IBatchListResponse {\n content?: IBatch[];\n count?: number;\n enrolled?: boolean;\n workFlow?: {\n wfInitiated?: boolean\n batch?: any\n wfItem?: any\n };\n }\n\n export interface ICourse {\n active: true;\n addedBy: string;\n batch: IBatch;\n batchId: string;\n certificates: [];\n collectionId: string;\n completedOn: string | null;\n completionPercentage: number | null;\n completionStatus?: number;\n content: IContent;\n contentId: string;\n contentStatus: any;\n courseId: string;\n courseLogoUrl: string;\n courseName: string;\n dateTime: number;\n description: string;\n enrolledDate: string;\n issuedCertificates: [];\n lastContentAccessTime?: string;\n lastReadContentId?: string;\n lastReadContentStatus: string | null;\n leafNodesCount: number;\n progress: number;\n status: number;\n userId: string;\n }\n\n export interface IContentMinimal {\n appIcon: string;\n artifactUrl: string;\n difficultyLevel: string;\n contentType: EContentTypes;\n description: string;\n displayContentType?: EDisplayContentTypes;\n duration: number;\n identifier: string;\n hasAccess?: boolean;\n isInIntranet?: boolean;\n learningMode?: TLearningMode;\n mimeType: EMimeTypes;\n name: string;\n creatorDetails: ICreator[];\n creatorContacts: ICreator[];\n posterImage: string;\n primaryCategory: EPrimaryCategory;\n resourceType?: string;\n totalRating?: number;\n }\n\n export interface ICollectionHierarchyResponse {\n data: IContent;\n hasMore: boolean;\n totalContents: number;\n }\n\n export interface IRelatedContentMeta {\n identifier: string;\n name: string;\n }\n\n type TCertificationStatus = 'ongoing' | 'passed' | 'canAttempt' | 'cannotAttempt';\n export type TLearningMode = 'Self-Paced' | 'Instructor-Led' | 'Open' | 'Closed';\n\n interface IMarkAsCompleteProgress {\n progressStatus: 'open' | 'started' | 'completed';\n showMarkAsComplete: boolean;\n markAsCompleteReason: string;\n progressSupported: boolean;\n progress: number | null;\n }\n\n interface ITag {\n id: string;\n type: string;\n value: string;\n }\n interface IMSArtifactDetails {\n channelId: string;\n videoId: string;\n }\n interface IClient {\n displayName: string;\n id: string;\n name: string;\n }\n interface ISubtitle {\n srclang: string;\n label: string;\n url: string;\n }\n interface IPrePostContent {\n identifier: string;\n name: string;\n }\n interface IResourceDetail {\n title?: string;\n url?: string;\n }\n interface IResourcePlayground {\n appIcon: string;\n artifactUrl: string;\n identifier: string;\n name: string;\n }\n interface ITrack {\n id: string;\n name: string;\n status: string;\n visibility: string;\n }\n interface ISkill {\n id: string;\n category: string;\n skill: string;\n name: string;\n }\n export interface ICreator {\n id: string;\n name: string;\n email: string;\n }\n export interface IContentTopic {\n identifier: string;\n name: string;\n }\n // API Based\n\n export interface IContact {\n id: string;\n name: string;\n email: string;\n }\n\n export interface IViewerContinueLearningRequest {\n resourceId: string;\n contextPathId: string;\n data: string;\n dateAccessed: number;\n contextType?: string;\n }\n /**\n * @deprecated Enum EContentTypes should not be used in future\n */\n export enum EContentTypes {\n PROGRAMV2 = 'Program',\n PROGRAM = 'Learning Path',\n CHANNEL = 'Channel',\n COURSE = 'Course',\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\n KNOWLEDGE_BOARD = 'Knowledge Board',\n LEARNING_JOURNEY = 'Learning Journeys',\n MODULE = 'CourseUnit',\n RESOURCE = 'Resource',\n }\n export enum EPrimaryCategory {\n PROGRAM = 'Program',\n COURSE = 'Course',\n MODULE = 'Course Unit',\n RESOURCE = 'Learning Resource',\n GOALS = 'GOALS',\n PLAYLIST = 'PLAYLIST',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n COMP_ASSESSMENT = 'Competency Assessment',\n FTB_QUESTION = 'FTB Question',\n MTF_QUESTION = 'MTF Question',\n MULTIPLE_CHOICE_QUESTION = 'Multiple Choice Question',\n SINGLE_CHOICE_QUESTION = 'Single Choice Question',\n MANDATORY_COURSE_GOAL = 'Mandatory Course Goal',\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\n BLENDED_PROGRAM = 'Blended Program',\n OFFLINE_SESSION = 'Offline Session',\n CURATED_PROGRAM = 'Curated Program',\n // following will not be available soon\n /**\n * @deprecated The type should not be used\n */\n KNOWLEDGE_ARTIFACT = 'Knowledge Artifact',\n /**\n * @deprecated The type should not be used\n */\n KNOWLEDGE_BOARD = 'Knowledge Board',\n /**\n * @deprecated The type should not be used\n */\n LEARNING_JOURNEY = 'Learning Journeys',\n /**\n * @deprecated The type should not be used\n */\n CHANNEL = 'Channel',\n }\n\n export enum ECourseCategory {\n INVITE_ONLY_PROGRAM = 'Invite-Only Program',\n MODERATED_PROGRAM = 'Moderated Program',\n BLENDED_PROGRAM = 'Blended Program',\n CURATED_PROGRAM = 'Curated Program',\n COURSE = 'Course',\n MODERATED_COURSE = 'Moderated Course',\n STANDALONE_ASSESSMENT = 'Standalone Assessment',\n MODERATED_ASSESSEMENT = 'Moderated Assessment',\n }\n\n export enum WFBlendedProgramStatus {\n INITIATE = 'INITIATE',\n SEND_FOR_MDO_APPROVAL = 'SEND_FOR_MDO_APPROVAL',\n SEND_FOR_PC_APPROVAL = 'SEND_FOR_PC_APPROVAL',\n APPROVED = 'APPROVED',\n REJECTED = 'REJECTED',\n WITHDRAWN = 'WITHDRAWN',\n REMOVED = 'REMOVED',\n WITHDRAW = 'WITHDRAW',\n }\n export enum WFBlendedProgramApprovalTypes {\n ONE_STEP_PC = 'oneStepPCApproval',\n ONE_STEP_MDO = 'oneStepMDOApproval',\n TWO_STEP_MDO_PC = 'twoStepMDOAndPCApproval',\n TWO_STEP_PC_MDO = 'twoStepPCAndMDOApproval',\n }\n\n export const WFSTATUS_MSG_MAPPING: any = {\n INITIATE: '',\n SEND_FOR_MDO_APPROVAL: 'BatchEnrollL1Msg',\n SEND_FOR_PC_APPROVAL: 'BatchEnrollL2Msg',\n APPROVED: 'BatchEnrollApprovedMsg',\n REJECTED: 'BatchEnrollRejectedMsg',\n WITHDRAWN: 'BatchEnrollWithdrawMsg',\n REMOVED: 'BatchEnrollRemoveMsg',\n EXPIRED: 'BatchListExpiredMsg',\n };\n\n export enum EResourcePrimaryCategories {\n LEARNING_RESOURCE = 'Learning Resource',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n COMP_ASSESSMENT = 'Competency Assessment',\n OFFLINE_SESSION = 'Offline Session',\n }\n\n export enum EMiscPlayerSupportedCollectionTypes {\n PLAYLIST = 'Playlist',\n }\n export const PLAYER_SUPPORTED_COLLECTION_TYPES: string[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.CURATED_PROGRAM,\n EPrimaryCategory.BLENDED_PROGRAM,\n EPrimaryCategory.STANDALONE_ASSESSMENT,\n EMiscPlayerSupportedCollectionTypes.PLAYLIST,\n ];\n export const KB_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.RESOURCE,\n ];\n export const PLAYLIST_SUPPORTED_CONTENT_TYPES: EPrimaryCategory[] = [\n EPrimaryCategory.COURSE,\n EPrimaryCategory.MODULE,\n EPrimaryCategory.PROGRAM,\n EPrimaryCategory.RESOURCE,\n ];\n export enum EMimeTypes {\n COLLECTION = 'application/vnd.ekstep.content-collection',\n ZIP = 'application/vnd.ekstep.html-archive',\n ZIP2 = 'application/vnd.ekstep.ecml-archive',\n HTML = 'application/html',\n HTML_TEXT = 'text/html',\n ILP_FP = 'application/ilpfp',\n IAP = 'application/iap-assessment',\n M4A = 'audio/m4a',\n MP3 = 'audio/mpeg',\n MP4 = 'video/mp4',\n M3U8 = 'application/x-mpegURL',\n INTERACTION = 'video/interactive',\n PDF = 'application/pdf',\n QUIZ = 'application/quiz',\n DRAG_DROP = 'application/drag-drop',\n HTML_PICKER = 'application/htmlpicker',\n WEB_MODULE = 'application/web-module',\n WEB_MODULE_EXERCISE = 'application/web-module-exercise',\n YOUTUBE = 'video/x-youtube',\n HANDS_ON = 'application/integrated-hands-on',\n RDBMS_HANDS_ON = 'application/rdbms',\n CLASS_DIAGRAM = 'application/class-diagram',\n CHANNEL = 'application/channel',\n COLLECTION_RESOURCE = 'resource/collection',\n APPLICATION_JSON = 'application/json',\n PRACTICE_RESOURCE = 'application/vnd.sunbird.questionset',\n FINAL_ASSESSMENT = 'application/vnd.sunbird.questionset',\n OFFLINE_SESSION = 'application/offline',\n // Added on UI Only\n CERTIFICATION = 'application/certification',\n PLAYLIST = 'application/playlist',\n TEXT_WEB = 'text/x-url',\n SURVEY = 'application/survey',\n QUESTION_SET = 'application/vnd.sunbird.questionset',\n QUESTION = 'application/vnd.sunbird.question',\n UNKNOWN = 'application/unknown',\n }\n export enum EDisplayContentTypes {\n ASSESSMENT = 'ASSESSMENT',\n STANDALONE_ASSESSMENT = 'STANDALONE ASSESSMENT',\n PRACTICE_RESOURCE = 'Practice Question Set',\n FINAL_ASSESSMENT = 'Course Assessment',\n AUDIO = 'AUDIO',\n CERTIFICATION = 'CERTIFICATION',\n CHANNEL = 'Channel',\n CLASS_DIAGRAM = 'CLASS_DIAGRAM',\n COURSE = 'COURSE',\n DEFAULT = 'DEFAULT',\n DRAG_DROP = 'DRAG_DROP',\n EXTERNAL_CERTIFICATION = 'EXTERNAL_CERTIFICATION',\n EXTERNAL_COURSE = 'EXTERNAL_COURSE',\n GOALS = 'GOALS',\n HANDS_ON = 'HANDS_ON',\n IAP = 'IAP',\n INSTRUCTOR_LED = 'INSTRUCTOR_LED',\n INTERACTIVE_VIDEO = 'INTERACTIVE_VIDEO',\n KNOWLEDGE_ARTIFACT = 'KNOWLEDGE_ARTIFACT',\n MODULE = 'MODULE',\n PDF = 'PDF',\n SURVEY = 'SURVEY',\n PLAYLIST = 'PLAYLIST',\n PROGRAM = 'PROGRAM',\n QUIZ = 'QUIZ',\n RESOURCE = 'RESOURCE',\n RDBMS_HANDS_ON = 'RDBMS_HANDS_ON',\n VIDEO = 'VIDEO',\n WEB_MODULE = 'WEB_MODULE',\n WEB_PAGE = 'WEB_PAGE',\n YOUTUBE = 'YOUTUBE',\n LINK = 'LINK',\n KNOWLEDGE_BOARD = 'Knowledge Board',\n LEARNING_JOURNEY = 'Learning Journeys',\n BLENDED_PROGRAM = 'BLENDED PROGRAM',\n CURATED_PROGRAM = 'CURATED PROGRAM',\n }\n // for UI\n export enum EFilterCategory {\n ALL = 'ALL',\n LEARN = 'LEARN',\n PRACTICE = 'PRACTICE',\n ASSESS = 'ASSESS',\n }\n\n // for UI\n export enum ETagType {\n NEWLY_ADDED = 'NEWLY ADDED',\n }\n\n export const UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS: string[] = [\n // this is comment now for enabling links in the toc page for enrolled users\n // EMimeTypes.QUIZ,\n // EMimeTypes.APPLICATION_JSON,\n // EMimeTypes.WEB_MODULE_EXERCISE,\n\n ];\n export const PUBLIC_SUPPORTED_CONTENT_TYPES: EMimeTypes[] = [\n EMimeTypes.APPLICATION_JSON,\n EMimeTypes.FINAL_ASSESSMENT,\n EMimeTypes.HTML,\n EMimeTypes.HTML_TEXT,\n EMimeTypes.ZIP,\n EMimeTypes.ZIP2,\n EMimeTypes.M4A,\n EMimeTypes.MP3,\n EMimeTypes.MP4,\n EMimeTypes.PDF,\n EMimeTypes.YOUTUBE,\n EMimeTypes.TEXT_WEB,\n EMimeTypes.SURVEY,\n ];\n}\n","import { NsContent } from '../_models/widget-content.model';\n\nexport const VIEWER_ROUTE_FROM_MIME = (mimeType: NsContent.EMimeTypes) => {\n switch (mimeType) {\n case NsContent.EMimeTypes.MP3:\n return 'audio';\n case NsContent.EMimeTypes.M4A:\n return 'audio-native';\n case NsContent.EMimeTypes.COLLECTION:\n return 'html';\n case NsContent.EMimeTypes.CHANNEL:\n // case 'application/json' as any:\n // return 'channel'\n case NsContent.EMimeTypes.CERTIFICATION:\n return 'certification';\n case NsContent.EMimeTypes.HTML_TEXT:\n case NsContent.EMimeTypes.HTML:\n case NsContent.EMimeTypes.ZIP:\n if (window.location.href.includes('mobile/html')) {\n return 'mobile/html';\n }\n return 'html';\n case NsContent.EMimeTypes.TEXT_WEB:\n return 'youtube';\n case NsContent.EMimeTypes.SURVEY:\n return 'survey';\n case NsContent.EMimeTypes.IAP:\n return 'iap';\n case NsContent.EMimeTypes.ILP_FP:\n return 'ilp-fp';\n case NsContent.EMimeTypes.PDF:\n return 'pdf';\n case NsContent.EMimeTypes.MP4:\n case NsContent.EMimeTypes.M3U8:\n return 'video';\n case NsContent.EMimeTypes.YOUTUBE:\n return 'youtube';\n // return 'html'\n case NsContent.EMimeTypes.WEB_MODULE:\n return 'web-module';\n case NsContent.EMimeTypes.WEB_MODULE_EXERCISE:\n return 'web-module';\n case NsContent.EMimeTypes.CLASS_DIAGRAM:\n return 'class-diagram';\n case NsContent.EMimeTypes.HANDS_ON:\n return 'hands-on';\n case NsContent.EMimeTypes.RDBMS_HANDS_ON:\n return 'rdbms-hands-on';\n case NsContent.EMimeTypes.HTML_PICKER:\n return 'html-picker';\n case NsContent.EMimeTypes.QUIZ:\n case NsContent.EMimeTypes.APPLICATION_JSON:\n return 'quiz';\n case NsContent.EMimeTypes.PRACTICE_RESOURCE:\n return 'practice';\n case NsContent.EMimeTypes.COLLECTION_RESOURCE:\n return 'resource-collection';\n case NsContent.EMimeTypes.OFFLINE_SESSION:\n return 'offline-session';\n default:\n return 'html';\n }\n};\n\nexport function viewerRouteGenerator(\n id: string,\n mimeType: NsContent.EMimeTypes,\n collectionId?: string,\n collectionType?: string,\n forPreview = false,\n primaryCategory?: string,\n batchId?: string,\n courseName?: string,\n): { url: string; queryParams: { [key: string]: any } } {\n let collId = collectionId;\n let collType = collectionType;\n if (collType && !NsContent.PLAYER_SUPPORTED_COLLECTION_TYPES.includes(collType)) {\n collId = undefined;\n collType = undefined;\n }\n const url = `/viewer/${VIEWER_ROUTE_FROM_MIME(mimeType)}/${id}`;\n // tslint:disable-next-line\n // console.log(url,'========>Route from MIME TYPE<==========')\n const forcreator = window.location.href.includes('editMode=true');\n let queryParams = {};\n if (primaryCategory) {\n queryParams = {\n primaryCategory,\n };\n }\n if (collectionId && collectionType) {\n queryParams = { ...queryParams, collectionId: collId, collectionType: collType };\n }\n if (batchId) {\n queryParams = { ...queryParams, batchId };\n }\n if (courseName) {\n queryParams = { ...queryParams, courseName };\n }\n if (forPreview) {\n queryParams = { ...queryParams, preview: true };\n }\n if (forcreator) {\n queryParams = { ...queryParams, editMode: true };\n }\n return {\n queryParams,\n url,\n };\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationsService } from '@sunbird-cb/utils-v2';\nimport { Observable, of, EMPTY, BehaviorSubject, Subject } from 'rxjs';\nimport { catchError, retry, map, shareReplay } from 'rxjs/operators';\nimport { NsContentStripMultiple } from '../_models/content-strip-multiple.model';\nimport { NsContent } from '../_models/widget-content.model';\nimport { NSSearch } from '../_models/widget-search.model';\n// tslint:disable\nimport * as _ from 'lodash'\nimport { viewerRouteGenerator } from './viewer-route-util'\nimport * as moment_ from 'moment';\nconst moment = moment_;\n// tslint:enable\n\n// TODO: move this in some common place\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\n\nconst API_END_POINTS = {\n CONTENT: `${PROTECTED_SLAG_V8}/content`,\n AUTHORING_CONTENT: `/api/course/v1/hierarchy`,\n CONTENT_LIKES: `${PROTECTED_SLAG_V8}/content/likeCount`,\n SET_S3_COOKIE: `${PROTECTED_SLAG_V8}/content/setCookie`,\n SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8}/content/setImageCookie`,\n FETCH_MANIFEST: `${PROTECTED_SLAG_V8}/content/getWebModuleManifest`,\n FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8}/content/getWebModuleFiles`,\n MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8}/content/multiple`,\n CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8}/content/searchV5`,\n CONTENT_SEARCH_V6: `/apis/proxies/v8/sunbirdigot/search`,\n TRENDING_CONTENT_SEARCH: `apis/proxies/v8/trending/content/search`,\n CONTENT_SEARCH_RELATED_CBP_V6: `/apis/proxies/v8/sunbirdigot/search`,\n CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8}/content/searchRegionRecommendation`,\n CONTENT_HISTORY: `${PROTECTED_SLAG_V8}/user/history`,\n CONTENT_HISTORYV2: `/apis/proxies/v8/read/content-progres`,\n COURSE_BATCH_LIST: `/apis/proxies/v8/learner/course/v1/batch/list`,\n COURSE_BATCH: `/apis/proxies/v8/course/v1/batch/read`,\n AUTO_ASSIGN_BATCH: `/apis/protected/v8/cohorts/user/autoenrollment/`,\n AUTO_ASSIGN_CURATED_BATCH: `/apis/proxies/v8/curatedprogram/v1/enrol`,\n AUTO_ASSIGN_OPEN_PROGRAM: `/apis/proxies/v8/openprogram/v1/enrol`,\n USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8}/user/history/continue`,\n CONTENT_RATING: `${PROTECTED_SLAG_V8}/user/rating`,\n COLLECTION_HIERARCHY: (type: string, id: string) =>\n `${PROTECTED_SLAG_V8}/content/collection/${type}/${id}`,\n REGISTRATION_STATUS: `${PROTECTED_SLAG_V8}/admin/userRegistration/checkUserRegistrationContent`,\n MARK_AS_COMPLETE_META: (contentId: string) => `${PROTECTED_SLAG_V8}/user/progress/${contentId}`,\n ENROLL_BATCH: `/apis/proxies/v8/learner/course/v1/enrol`,\n ENROLL_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/enrol`,\n WITHDRAW_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/unenrol`,\n BLENDED_USER_WF: `/apis/proxies/v8/workflow/blendedprogram/user/search`,\n BLENDED_USER_COUNT: `apis/proxies/v8/workflow/blendedprogram/enrol/status/count`,\n CERT_ADD_TEMPLATE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/template/add`,\n CERT_ISSUE: `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/issue`,\n CERT_DOWNLOAD: (certId: any) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,\n READ_KARMAPOINTS: `/apis/proxies/v8/karmapoints/read`,\n CONTENT_READ: (contentId: any) => `/apis/proxies/v8/action/content/v3/read/${contentId}`,\n READ_COURSE_KARMAPOINTS: '/apis/proxies/v8/karmapoints/user/course/read',\n CLAIM_KARMAPOINTS: '/apis/proxies/v8/claimkarmapoints',\n USER_KARMA_POINTS: '/apis/proxies/v8/user/totalkarmapoints',\n AGGREGATION_SEARCH: '/apis/proxies/v8/content/aggregation/search',\n FEATURE_SEARCH: '/apis/proxies/v8/featured/content/search',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetContentService {\n constructor(\n private http: HttpClient,\n private configSvc: ConfigurationsService,\n ) {\n }\n\n tocConfigData: any = new BehaviorSubject<any>({});\n tocConfigData$ = this.tocConfigData.asObservable();\n\n private telemetryData: any = new Subject<any>()\n public telemetryData$ = this.telemetryData.asObservable()\n currentMetaData!: NsContent.IContent;\n currentContentReadMetaData!: NsContent.IContent;\n currentBatchEnrollmentList!: NsContent.ICourse[];\n programChildCourseResumeData = new BehaviorSubject<any>({});\n programChildCourseResumeData$ = this.programChildCourseResumeData.asObservable();\n\n changeTelemetryData(message: string) {\n this.telemetryData.next(message);\n }\n isResource(primaryCategory: string) {\n if (primaryCategory) {\n const isResource = (primaryCategory === NsContent.EResourcePrimaryCategories.LEARNING_RESOURCE) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.PRACTICE_RESOURCE) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.FINAL_ASSESSMENT) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.COMP_ASSESSMENT) ||\n (primaryCategory === NsContent.EResourcePrimaryCategories.OFFLINE_SESSION);\n return isResource;\n }\n return false;\n }\n\n fetchMarkAsCompleteMeta(identifier: string): Promise<any> {\n // tslint:disable-next-line\n const url = API_END_POINTS.MARK_AS_COMPLETE_META(identifier)\n // return this.http.get(url).toPromise()\n if (url) { }\n return of().toPromise();\n }\n\n updateTocConfig(data: any) {\n this.tocConfigData.next(data);\n }\n\n fetchContent(\n contentId: string,\n hierarchyType: 'all' | 'minimal' | 'detail' = 'detail',\n _additionalFields: string[] = [],\n primaryCategory?: string | null,\n ): Observable<NsContent.IContent> {\n // const url = `${API_END_POINTS.CONTENT}/${contentId}?hierarchyType=${hierarchyType}`\n let url = '';\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\n if (primaryCategory && this.isResource(primaryCategory)) {\n if (!forPreview) {\n url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;\n } else {\n url = `/api/content/v1/read/${contentId}`;\n }\n } else {\n if (!forPreview) {\n url = `/apis/proxies/v8/action/content/v3/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\n } else {\n const forcreator = window.location.href.includes('editMode=true');\n if (forcreator) {\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\n } else {\n url = `/api/course/v1/hierarchy/${contentId}?hierarchyType=${hierarchyType}`;\n }\n }\n }\n // return this.http\n // .post<NsContent.IContent>(url, { additionalFields })\n // .pipe(retry(1))\n return this.http\n .get<NsContent.IContent>(url)\n .pipe(shareReplay(1));\n // if (apiData && apiData.result) {\n // return apiData.result.content\n // }\n }\n fetchAuthoringContent(contentId: string): Observable<NsContent.IContent> {\n const forcreator = window.location.href.includes('editMode=true');\n let url = '';\n if (forcreator) {\n url = `apis/proxies/v8/action/content/v3/hierarchy/${contentId}?mode=edit`;\n } else {\n url = `${API_END_POINTS.AUTHORING_CONTENT}/${contentId}?hierarchyType=detail`;\n }\n return this.http.get<NsContent.IContent>(url).pipe(shareReplay(1), r => r);\n }\n fetchMultipleContent(ids: string[]): Observable<NsContent.IContent[]> {\n return this.http.get<NsContent.IContent[]>(\n `${API_END_POINTS.MULTIPLE_CONTENT}/${ids.join(',')}`,\n );\n }\n fetchCollectionHierarchy(type: string, id: string, pageNumber: number = 0, pageSize: number = 1) {\n return this.http.get<NsContent.ICollectionHierarchyResponse>(\n `${API_END_POINTS.COLLECTION_HIERARCHY(\n type,\n id,\n )}?pageNumber=${pageNumber}&pageSize=${pageSize}`,\n );\n }\n\n fetchBlendedCourse() {\n\n }\n\n fetchCourseBatches(req: any): Observable<NsContent.IBatchListResponse> {\n return this.http\n .post<NsContent.IBatchListResponse>(API_END_POINTS.COURSE_BATCH_LIST, req)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n // fetch individual batch\n fetchCourseBatch(batchId: string): Observable<NsContent.IContinueLearningData> {\n return this.http.get<NsContent.IContinueLearningData>(\n `${API_END_POINTS.COURSE_BATCH}/${batchId}`,\n );\n }\n\n autoAssignBatchApi(identifier: any): Observable<NsContent.IBatchListResponse> {\n return this.http.get<NsContent.IBatchListResponse>(`${API_END_POINTS.AUTO_ASSIGN_BATCH}${identifier}`)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n autoAssignCuratedBatchApi(request: any, programType: any): Observable<NsContent.IBatchListResponse> {\n const url = programType === NsContent.ECourseCategory.MODERATED_PROGRAM ?\n API_END_POINTS.AUTO_ASSIGN_OPEN_PROGRAM : API_END_POINTS.AUTO_ASSIGN_CURATED_BATCH;\n return this.http.post<NsContent.IBatchListResponse>(`${url}`, request)\n .pipe(\n retry(1),\n map(\n (data: any) => data.result.response\n )\n );\n }\n\n enrollUserToBatch(req: any) {\n return this.http\n .post(API_END_POINTS.ENROLL_BATCH, req)\n .toPromise();\n }\n\n enrollAndUnenrollUserToBatchWF(req: any, type: any) {\n const url: any = type === 'WITHDRAW' ? API_END_POINTS.WITHDRAW_BATCH_WF : API_END_POINTS.ENROLL_BATCH_WF;\n return this.http\n .post(url, req)\n .toPromise();\n }\n\n fetchBlendedUserWF(req: any) {\n return this.http\n .post(API_END_POINTS.BLENDED_USER_WF, req)\n .toPromise();\n }\n\n fetchBlendedUserCOUNT(req: any) {\n return this.http\n .post(API_END_POINTS.BLENDED_USER_COUNT, req)\n .toPromise();\n }\n\n fetchContentLikes(contentIds: { content_id: string[] }) {\n return this.http\n .post<{ [identifier: string]: number }>(API_END_POINTS.CONTENT_LIKES, contentIds)\n .toPromise();\n }\n fetchContentRatings(contentIds: { contentIds: string[] }) {\n if (contentIds) { }\n // return this.http\n // .post(`${API_END_POINTS.CONTENT_RATING}/rating`, contentIds)\n // .toPromise()\n return of().toPromise();\n }\n\n fetchContentHistory(contentId: string): Observable<NsContent.IContinueLearningData> {\n return this.http.get<NsContent.IContinueLearningData>(\n `${API_END_POINTS.CONTENT_HISTORY}/${contentId}`,\n );\n }\n\n fetchContentHistoryV2(req: NsContent.IContinueLearningDataReq): Observable<NsContent.IContinueLearningData> {\n req.request.fields = ['progressdetails'];\n const data = this.http.post<NsContent.IContinueLearningData>(\n `${API_END_POINTS.CONTENT_HISTORYV2}/${req.request.courseId}`, req\n );\n data.subscribe((subscribeData: any) => {\n this.programChildCourseResumeData.next({ resumeData: subscribeData.result.contentList, courseId: req.request.courseId });\n });\n return data;\n }\n\n async continueLearning(id: string, collectionId?: string, collectionType?: string): Promise<any> {\n return new Promise(async resolve => {\n if (collectionType &&\n collectionType.toLowerCase() === 'playlist') {\n const reqBody = {\n contextPathId: collectionId ? collectionId : id,\n resourceId: id,\n data: JSON.stringify({\n timestamp: Date.now(),\n contextFullPath: [collectionId, id],\n }),\n dateAccessed: Date.now(),\n contextType: 'playlist',\n };\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\n resolve(true);\n }\n );\n } else {\n const reqBody = {\n contextPathId: collectionId ? collectionId : id,\n resourceId: id,\n data: JSON.stringify({ timestamp: Date.now() }),\n dateAccessed: Date.now(),\n };\n await this.saveContinueLearning(reqBody).toPromise().catch().finally(() => {\n resolve(true);\n });\n }\n });\n }\n saveContinueLearning(content: NsContent.IViewerContinueLearningRequest): Observable<any> {\n // const url = API_END_POINTS.USER_CONTINUE_LEARNING\n // return this.http.post<any>(url, content)\n if (content) {\n\n }\n return of() as any;\n }\n\n setS3Cookie(\n _contentId: string,\n // _path: string,\n ): Observable<any> {\n // return this.http\n // .post(API_END_POINTS.SET_S3_COOKIE, { contentId })\n // .pipe(catchError(_err => of(true)))\n\n return EMPTY;\n }\n\n setS3ImageCookie(): Observable<any> {\n return this.http.post(API_END_POINTS.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)));\n }\n\n fetchManifest(url: string): Observable<any> {\n return this.http.post(API_END_POINTS.FETCH_MANIFEST, { url });\n }\n fetchWebModuleContent(url: string): Observable<any> {\n return this.http.get(`${API_END_POINTS.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`);\n }\n search(req: NSSearch.ISearchRequest): Observable<NSSearch.ISearchApiResult> {\n req.query = req.query || '';\n return this.http.post<NSSearch.ISearchApiResult>(API_END_POINTS.CONTENT_SEARCH_V5, {\n request: req,\n });\n }\n searchRegionRecommendation(\n req: NSSearch.ISearchOrgRegionRecommendationRequest,\n ): Observable<NsContentStripMultiple.IContentStripResponseApi> {\n req.query = req.query || '';\n req.preLabelValue =\n (req.preLabelValue || '') +\n ((this.configSvc.userProfile && this.configSvc.userProfile.country) || '');\n req.filters = {\n ...req.filters,\n labels: [req.preLabelValue || ''],\n };\n return this.http.post<NsContentStripMultiple.IContentStripResponseApi>(\n API_END_POINTS.CONTENT_SEARCH_REGION_RECOMMENDATION,\n { request: req },\n );\n }\n searchV6(req: NSSearch.ISearchV6Request): Observable<NSSearch.ISearchV6ApiResultV2> {\n const apiPath = _.get(req, 'api.path');\n req.query = req.query || '';\n if (apiPath) {\n return this.http.get<NSSearch.ISearchV6ApiResultV2>(apiPath);\n }\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_V6, req);\n }\n\n searchRelatedCBPV6(req: NSSearch.ISearchV6RequestV2): Observable<NSSearch.ISearchV6ApiResultV2> {\n return this.http.post<NSSearch.ISearchV6ApiResultV2>(API_END_POINTS.CONTENT_SEARCH_RELATED_CBP_V6, req);\n }\n\n fetchContentRating(contentId: string): Observable<{ rating: number }> {\n return this.http.get<{ rating: number }>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\n }\n deleteContentRating(contentId: string): Observable<any> {\n return this.http.delete(`${API_END_POINTS.CONTENT_RATING}/${contentId}`);\n }\n addContentRating(contentId: string, data: { rating: number }): Observable<any> {\n return this.http.post<any>(`${API_END_POINTS.CONTENT_RATING}/${contentId}`, data);\n }\n\n getFirstChildInHierarchy(content: NsContent.IContent): NsContent.IContent {\n if (!(content.children || []).length) {\n return content;\n }\n if (\n (content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM &&\n !(content.artifactUrl && content.artifactUrl.length)) ||\n content.primaryCategory === NsContent.EPrimaryCategory.MANDATORY_COURSE_GOAL ||\n (content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM &&\n !(content.artifactUrl && content.artifactUrl.length)) ||\n (content.primaryCategory === NsContent.EPrimaryCategory.MODULE &&\n !(content.artifactUrl && content.artifactUrl.length))\n ) {\n const child = content.children[0];\n return this.getFirstChildInHierarchy(child);\n }\n if (\n content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE ||\n content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT ||\n content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM ||\n content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE ||\n content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT ||\n content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT ||\n content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\n content.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION\n ) {\n return content;\n }\n const firstChild = content.children[0];\n const resultContent = this.getFirstChildInHierarchy(firstChild);\n return resultContent;\n }\n\n getRegistrationStatus(source: string): Promise<{ hasAccess: boolean; registrationUrl?: string }> {\n return this.http.get<any>(`${API_END_POINTS.REGISTRATION_STATUS}/${source}`).toPromise();\n }\n\n fetchConfig(url: string) {\n return this.http.get<any>(url);\n }\n\n addCertTemplate(body: any) {\n return this.http.patch<any>(`${API_END_POINTS.CERT_ADD_TEMPLATE}`, body);\n }\n\n issueCert(body: any) {\n return this.http.post<any>(`${API_END_POINTS.CERT_ISSUE}`, body);\n }\n downloadCert(certId: any) {\n return this.http.get<any>(`${API_END_POINTS.CERT_DOWNLOAD(certId)}`);\n }\n\n trendingContentSearch(req: any): Observable<NsContent.IContent> {\n req.query = req.query || '';\n return this.http.post<NsContent.IContent>(API_END_POINTS.TRENDING_CONTENT_SEARCH, req);\n }\n\n getKarmaPoitns(limit: number, offset: any) {\n return this.http.post(API_END_POINTS.READ_KARMAPOINTS, { limit, offset }).pipe(catchError(_err => of(true)));\n }\n fetchProgramContent(contentId: string[]): Observable<NsContent.IContent[]> {\n let url = '';\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');\n if (!forPreview) {\n return this.http.get<NsContent.IContent[]>(\n API_END_POINTS.CONTENT_READ(contentId),\n );\n }\n url = `/api/content/v1/read/${contentId}`;\n return this.http.get<NsContent.IContent[]>(url);\n // return this.http.get<NsContent.IContent[]>(API_END_POINTS.CONTENT_READ(contentId))\n }\n\n getCourseKarmaPoints(request: any) {\n return this.http.post<any>(API_END_POINTS.READ_COURSE_KARMAPOINTS, request);\n }\n\n claimKarmapoints(request: any) {\n return this.http.post<any>(API_END_POINTS.CLAIM_KARMAPOINTS, request);\n }\n\n userKarmaPoints() {\n return this.http.post<any>(API_END_POINTS.USER_KARMA_POINTS, {});\n }\n\n getEnrolledData(doId: string) {\n const enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}');\n const enrolledCourseData = enrollmentMapData[doId];\n return enrolledCourseData;\n }\n\n async getResourseLink(content: any) {\n const enrolledCourseData: any = this.getEnrolledData(content.identifier);\n if (enrolledCourseData) {\n if (enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.BLENDED_PROGRAM ||\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.INVITE_ONLY_PROGRAM ||\n enrolledCourseData.content.courseCategory === NsContent.ECourseCategory.MODERATED_PROGRAM ||\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.BLENDED_PROGRAM ||\n enrolledCourseData.content.primaryCategory === NsContent.EPrimaryCategory.PROGRAM) {\n if (!this.isBatchInProgress(enrolledCourseData.batch)) {\n return this.gotoTocPage(content);\n }\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\n return data;\n } {\n const data = await this.checkForDataToFormUrl(content, enrolledCourseData);\n return data;\n }\n\n }\n return this.gotoTocPage(content);\n\n }\n async checkForDataToFormUrl(content: any, enrollData: any) {\n let urlData: any;\n if (enrollData.completionPercentage === 100) {\n return this.gotoTocPage(enrollData);\n }\n if (enrollData.lrcProgressDetails && enrollData.lrcProgressDetails.mimeType) {\n const modifyEnrollData = {\n ...enrollData,\n identifier: enrollData.collectionId,\n primaryCategory: enrollData.content.primaryCategory,\n name: enrollData.content.name,\n };\n if (modifyEnrollData.lastReadContentId) {\n return this.getResourseDataWithData(modifyEnrollData,\n enrollData.lastReadContentId, enrollData.lrcProgressDetails.mimeType);\n }\n if (modifyEnrollData.firstChildId) {\n return this.getResourseDataWithData(modifyEnrollData,\n enrollData.firstChildId,\n enrollData.lrcProgressDetails.mimeType);\n }\n }\n if (enrollData.firstChildId || enrollData.lastReadContentId) {\n const doId = enrollData.firstChildId || enrollData.lastReadContentId;\n const responseData = await this.fetchProgramContent(doId).toPromise().then(async (res: any) => {\n if (res && res.result && res.result.content) {\n const contentData: any = res.result.content;\n const modifyEnrollData = {\n ...enrollData,\n identifier: enrollData.collectionId,\n primaryCategory: enrollData.content.primaryCategory,\n name: enrollData.content.name,\n };\n urlData = this.getResourseDataWithData(modifyEnrollData, contentData.identifier, contentData.mimeType);\n if (urlData) {\n return urlData;\n }\n }\n });\n return responseData ? responseData : this.gotoTocPage(content);\n }\n return this.gotoTocPage(content);\n\n }\n\n getResourseDataWithData(content: any, resourseId: any, mimeType: any) {\n if (content) {\n const url = viewerRouteGenerator(\n resourseId,\n mimeType,\n content.identifier,\n 'Course',\n false,\n 'Learning Resource',\n content.batchId,\n content.name,\n );\n return url;\n }\n return this.gotoTocPage(content);\n }\n gotoTocPage(content: any) {\n const urlData: any = {\n url: `/app/toc/${content.identifier ? content.identifier : content.collectionId}/overview`,\n queryParams: { batchId: content.batchId },\n };\n if (content.endDate) {\n urlData.queryParams = { ...urlData.queryParams, planType: 'cbPlan', endDate: content.endDate };\n }\n return urlData;\n }\n isBatchInProgress(batchData: any) {\n // if (this.content && this.content['batches']) {\n // const batches = this.content['batches'] as NsContent.IBatch\n if (batchData && batchData.endDate) {\n const now = moment().format('YYYY-MM-DD');\n const startDate = moment(batchData.startDate).format('YYYY-MM-DD');\n const endDate = batchData.endDate ? moment(batchData.endDate).format('YYYY-MM-DD') : now;\n return (\n // batch.status &&\n moment(startDate).isSameOrBefore(now)\n && moment(endDate).isSameOrAfter(now)\n );\n } return true;\n }\n postApiMethod(apiUrl: any, req: any): Observable<NsContent.IContent> {\n req.query = req.query || '';\n return this.http.post<NsContent.IContent>(apiUrl, req);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject, Subject } from 'rxjs';\nimport { IPortalUrls, IUserPreference, NsAppsConfig, NsInstanceConfig, NsPage, NsUser } from '@sunbird-cb/utils-v2';\nimport { NSProfileDataV3 } from '../_models/profile-v3.models';\n// const instanceConfigPath: string | null = window.location.host\n// const locationHost: string | null = window.location.host\n\n// if (!environment.production && Boolean(environment.sitePath)) {\n// locationHost = environment.sitePath\n// instanceConfigPath = environment.sitePath\n// }\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfigurationsService {\n // update as the single source of truth\n constructor() {\n // @Inject('env') env: any\n // if (!env.production && Boolean(env.sitePath)) {\n // locationHost = env.sitePath\n // instanceConfigPath = env.sitePath\n // }\n }\n appSetup = true;\n // The url the user tried to access while landing in the app before accepting tnc\n userUrl = '';\n baseUrl = `assets/configurations`;\n sitePath = `assets/configurations`;\n hostPath = (window.location.host).replace(':', '_');\n\n userRoles: Set<string> | null = null;\n userGroups: Set<string> | null = null;\n restrictedFeatures: Set<string> | null = null;\n restrictedWidgets: Set<string> | null = null;\n instanceConfig: NsInstanceConfig.IConfig | null = null;\n appsConfig: NsAppsConfig.IAppsConfig | null = null;\n rootOrg: string | null = null;\n courseContentPath?: string;\n org: string[] | null = null;\n activeOrg: string | null = '';\n isProduction = false;\n hasAcceptedTnc = false;\n profileDetailsStatus = false;\n isActive = true;\n userPreference: IUserPreference | null = null;\n userProfile: NsUser.IUserProfile | null = null;\n userProfileV2: NsUser.IUserProfile | null = null;\n nodebbUserProfile: NsUser.INodebbUserProfile | null = null;\n // created to store complete user details sent by pid\n unMappedUser: any;\n isAuthenticated = false;\n isNewUser = false;\n portalUrls: IPortalUrls | undefined;\n positions: any;\n overrideThemeChanges: any;\n profileTimelyNudges: any;\n\n // pinnedApps\n pinnedApps = new BehaviorSubject<Set<string>>(new Set());\n\n // Notifier\n prefChangeNotifier = new ReplaySubject<Partial<IUserPreference>>(1);\n tourGuideNotifier = new ReplaySubject<boolean>();\n authChangeNotifier = new ReplaySubject<boolean>(1);\n\n private updateProfile = new BehaviorSubject(false);\n updateProfileObservable = this.updateProfile.asObservable();\n\n updateTourGuide = new BehaviorSubject(true);\n updateTourGuideObservable = this.updateTourGuide.asObservable();\n\n // platform rating\n updatePlatformRating = new BehaviorSubject({ bottom: '120px' });\n updatePlatformRatingObservable$ = this.updatePlatformRating.asObservable();\n\n languageTranslationFlag = new Subject();\n\n // Preference Related Values\n activeThemeObject: NsInstanceConfig.ITheme | null = null;\n activeFontObject: NsInstanceConfig.IFontSize | null = null;\n isDarkMode = false;\n isIntranetAllowed = false;\n isRTL = false;\n activeLocale: NsInstanceConfig.ILocalsConfig | null = null;\n activeLocaleGroup = '';\n completedActivity: string[] | null = null;\n completedTour = false;\n profileSettings = ['profilePicture', 'learningTime', 'learningPoints'];\n\n primaryNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n };\n pageNavBar: Partial<NsPage.INavBackground> = {\n color: 'primary',\n };\n primaryNavBarConfig: NsInstanceConfig.IPrimaryNavbarConfig | null = null;\n /* for temp Fix */\n // setBaseUrl = (sitePath: string) => `assets/configurations/${(sitePath).replace(':', '_')}`\n // setSitePath = (sitePath: string) => `assets/configurations/${(sitePath).replace(\n // ':',\n // '_',\n // )}`\n // setHostPath = (sitePath: string) => (sitePath).replace(':', '_')\n welcomeTabs: NSProfileDataV3.IProfileTab | null = null;\n\n // variable setting for csJwtToken\n cstoken = '';\n\n changeNavBarFullView = new Subject();\n openExploreMenuForMWeb = new Subject();\n updateGlobalProfile(state: boolean) {\n this.updateProfile.next(state);\n }\n updateTourGuideMethod(state: boolean) {\n this.updateTourGuide.next(state);\n }\n\n updatePlatformRatingMethod(state: any) {\n this.updatePlatformRating.next(state);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigurationsService } from './configurations.service';\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class MultilingualTranslationsService {\n selectedLang = '';\n // website lang change\n languageSelected = new BehaviorSubject(true);\n languageSelectedObservable = this.languageSelected.asObservable();\n editProfileDetails = '/apis/proxies/v8/user/v1/extPatch';\n\n constructor(private translate: TranslateService, private http: HttpClient, private configSvc: ConfigurationsService) {\n // this.getLanguage()\n }\n\n getLanguage() {\n if (this.configSvc.unMappedUser) {\n if (this.configSvc.unMappedUser.profileDetails &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties &&\n this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang) {\n const lang = this.configSvc.unMappedUser.profileDetails.additionalProperties.webPortalLang;\n this.translate.use(lang);\n localStorage.setItem('websiteLanguage', lang);\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n } else {\n this.translate.setDefaultLang('en');\n localStorage.setItem('websiteLanguage', 'en');\n }\n }\n } else {\n if (localStorage.getItem('websiteLanguage')) {\n // this.translate.setDefaultLang('en')\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n }\n }\n\n translateLabelWithoutspace(label: string, type: any, subtype: any) {\n let nlabel = label;\n nlabel = nlabel && nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n translateLabel(label: string, type: any, subtype: any) {\n let nlabel = label;\n nlabel = nlabel.toLowerCase();\n const sl = nlabel.split(' ');\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1);\n }\n });\n nlabel = sl.join('');\n nlabel = nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n translateActualLabel(label: string, type: any, subtype: any) {\n let nlabel = label;\n const sl = nlabel.split(' ');\n sl.forEach((w: any, index: any) => {\n if (index !== 0) {\n sl[index] = w[0].toUpperCase() + w.slice(1);\n }\n });\n nlabel = sl.join('');\n nlabel = nlabel.replace(/\\s/g, '');\n if (subtype) {\n // tslint:disable-next-line: prefer-template\n const translationKey = type + '.' + nlabel + subtype;\n return this.translate.instant(translationKey);\n }\n // tslint:disable-next-line: prefer-template\n const translationKeyn = type + '.' + nlabel;\n return this.translate.instant(translationKeyn);\n }\n\n editProfileDetailsAPI(data: any) {\n return this.http.post<any>(this.editProfileDetails, data);\n }\n\n updatelanguageSelected(state: any, lang: any, userid: any) {\n this.languageSelected.next(state);\n this.translate.use(lang);\n this.selectedLang = lang;\n\n if (userid) {\n const reqUpdates = {\n request: {\n userId: userid,\n profileDetails: {\n additionalProperties: {\n webPortalLang: this.selectedLang,\n },\n },\n },\n };\n this.editProfileDetailsAPI(reqUpdates).subscribe();\n }\n }\n}\n","import { NsContent } from './widget-content.model';\n\nexport namespace NsCardContent {\n export interface ICard {\n content: NsContent.IContent;\n cardSubType: TCardSubType;\n context: { pageSection: string; position?: number };\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n likes?: number;\n contentTags?: IContentTags;\n stateData: any;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField?: string;\n }\n\n export interface ICompetency extends ICard {\n competencyArea: '';\n competencyObject: {};\n }\n\n export type TCardSubType =\n | 'standard'\n | 'minimal'\n | 'space-saving'\n | 'card-user-details'\n | 'basic-info'\n | 'basic-details'\n | 'card-description-back'\n | 'network-card';\n\n export enum EContentStatus {\n LIVE = 'Live',\n EXPIRED = 'Expired',\n DELETED = 'Deleted',\n MARK_FOR_DELETION = 'MarkedForDeletion',\n }\n\n export enum ACBPConst {\n UPCOMING = 'upcoming',\n ALL = 'All',\n OVERDUE = 'overdue',\n SUCCESS = 'success',\n }\n\n export enum IGOTConst {\n COMPETENCIES = 'competencies_v5',\n RETIRED = 'Retired',\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { IUserGroupDetails } from '../_models/widget-user.model';\nimport { NsContent } from '../_models/widget-content.model';\n// import 'rxjs/add/observable/of'\nimport * as dayjs_ from 'dayjs';\nconst dayjs = dayjs_\n// import { environment } from 'src/environments/environment'\nimport { NsCardContent } from '../_models/card-content-v2.model';\nimport * as lodash from 'lodash';\n\n\nconst PROTECTED_SLAG_V8 = '/apis/protected/v8';\nconst API_END_POINTS = {\n FETCH_USER_GROUPS: (userId: string) =>\n `${PROTECTED_SLAG_V8}/user/group/fetchUserGroup?userId=${userId}`,\n FETCH_CPB_PLANS: `/apis/proxies/v8/user/v1/cbplan`,\n FETCH_USER_ENROLLMENT_LIST: (userId: string | undefined) =>\n // tslint:disable-next-line: max-line-length\n `/apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=orgName,email&licenseDetails=name,description,url&fields=contentType,primaryCategory,courseCategory,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,posterImage,duration,creatorLogo,license,version,versionKey,avgRating,additionalTags,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=name,endDate,startDate,status,enrollmentType,createdBy,certificates,batchAttributes`,\n FETCH_USER_ENROLLMENT_LIST_PROFILE: (userId: string | undefined) =>\n // tslint:disable-next-line: max-line-length\n `/apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=orgName,email&licenseDetails=name,description,url&fields=contentType,primaryCategory,courseCategory,topic,name,channel,mimeType,appIcon,gradeLevel,resourceType,identifier,medium,pkgVersion,board,subject,trackable,posterImage,duration,creatorLogo,license,version,versionKey,avgRating,additionalTags,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=name,endDate,startDate,status,enrollmentType,createdBy,certificates,batchAttributes&retiredCoursesEnabled=true`,\n // tslint:disable-next-line: max-line-length\n FETCH_USER_ENROLLMENT_LIST_V2: (userId: string | undefined, orgdetails: string, licenseDetails: string, fields: string, batchDetails: string) =>\n // tslint:disable-next-line: max-line-length\n `apis/proxies/v8/learner/course/v2/user/enrollment/list/${userId}?orgdetails=${orgdetails}&licenseDetails=${licenseDetails}&fields=${fields},courseCategory,${NsCardContent.IGOTConst.COMPETENCIES}&batchDetails=${batchDetails}`,\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetUserService {\n environment: any;\n constructor(\n @Inject('environment') environment: any,\n private http: HttpClient) {\n this.environment = environment;\n }\n\n handleError(error: ErrorEvent) {\n let errorMessage = '';\n if (error.error instanceof ErrorEvent) {\n errorMessage = `Error: ${error.error.message}`;\n }\n return throwError(errorMessage);\n }\n\n fetchUserGroupDetails(userId: string): Observable<IUserGroupDetails[]> {\n return this.http\n .get<IUserGroupDetails[]>(API_END_POINTS.FETCH_USER_GROUPS(userId))\n .pipe(catchError(this.handleError));\n }\n // tslint:disable-next-line: max-line-length\n fetchUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\n let path = '';\n if (queryParams) {\n // tslint:disable-next-line: max-line-length\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails);\n } else {\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST(userId);\n }\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n });\n if (this.checkStorageData('enrollmentService', 'enrollmentData')) {\n const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\n (data: any) => {\n localStorage.setItem('enrollmentData', JSON.stringify(data.result));\n this.mapEnrollmentData(data.result);\n return data.result;\n }\n )\n );\n this.setTime('enrollmentService');\n return result;\n }\n return this.getData('enrollmentData');\n\n }\n\n // tslint:disable-next-line: max-line-length\n fetchProfileUserBatchList(userId: string | undefined, queryParams?: { orgdetails: any, licenseDetails: any, fields: any, batchDetails: any }): Observable<NsContent.ICourse[]> {\n let path = '';\n if (queryParams) {\n // tslint:disable-next-line: max-line-length\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_V2(userId, queryParams.orgdetails, queryParams.licenseDetails, queryParams.fields, queryParams.batchDetails);\n } else {\n path = API_END_POINTS.FETCH_USER_ENROLLMENT_LIST_PROFILE(userId);\n }\n const headers = new HttpHeaders({\n 'Cache-Control': 'no-cache, no-store, must-revalidate, post-check=0, pre-check=0',\n Pragma: 'no-cache',\n Expires: '0',\n });\n return this.http\n .get(path, { headers })\n .pipe(\n catchError(this.handleError),\n map(\n (data: any) => data.result\n )\n );\n // if (this.checkStorageData('enrollmentService')) {\n // const result: any = this.http.get(path, { headers }).pipe(catchError(this.handleError), map(\n // (data: any) => {\n // localStorage.setItem('enrollmentData', JSON.stringify(data.result))\n // this.mapEnrollmentData(data.result)\n // return data.result\n // }\n // )\n // )\n // this.setTime('enrollmentService')\n // return result\n // }\n // return this.getData('enrollmentData')\n }\n\n checkStorageData(key: any, dataKey: any) {\n const checkTime = localStorage.getItem('timeCheck');\n if (checkTime) {\n const parsedData = JSON.parse(checkTime);\n if (parsedData[key]) {\n const date = dayjs();\n const diffMin = date.diff(parsedData[key], 'minute');\n const timeCheck = this.environment.apiCache || 0;\n if (diffMin >= timeCheck) {\n return true;\n }\n return localStorage.getItem(dataKey) ? false : true;\n }\n return true;\n }\n return true;\n }\n\n getData(key: any): Observable<any> {\n return of(JSON.parse(localStorage.getItem(key) || '{}'));\n }\n getSavedData(key: any): Observable<any> {\n return JSON.parse(localStorage.getItem(key) || '');\n }\n\n setTime(key: any) {\n const checkTime = localStorage.getItem('timeCheck');\n if (checkTime) {\n const parsedData = JSON.parse(checkTime);\n parsedData[key] = new Date().getTime();\n localStorage.setItem('timeCheck', JSON.stringify(parsedData));\n } else {\n const data: any = {};\n data[key] = new Date().getTime();\n localStorage.setItem('timeCheck', JSON.stringify(data));\n }\n }\n\n resetTime(key: any) {\n const checkTime = localStorage.getItem('timeCheck');\n if (checkTime) {\n const parsedData = JSON.parse(checkTime);\n if (parsedData[key]) {\n delete parsedData[key];\n localStorage.setItem('timeCheck', JSON.stringify(parsedData));\n }\n }\n }\n\n fetchCbpPlanList() {\n\n // let data = JSON.parse(localStorage.getItem('cbpData')|| '')\n // if(!data) {\n // this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\n // (data: any) => {\n // const courseData = this.mapData(data.result)\n // return courseData\n // }\n // )\n // )\n // } else {\n // return this.getData('cbpData')\n\n // }\n if (this.checkStorageData('cbpService', 'cbpData')) {\n const result: any = this.http.get(API_END_POINTS.FETCH_CPB_PLANS).pipe(catchError(this.handleError), map(\n async (data: any) => {\n return await this.mapData(data.result);\n }\n )\n );\n this.setTime('cbpService');\n return result;\n }\n return this.getData('cbpData');\n }\n\n async mapData(data: any) {\n const contentNew: any = [];\n const todayDate = dayjs().format('YYYY-MM-DD');\n\n const enrollList: any = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}');\n\n if (data && data.count) {\n data.content.forEach((c: any) => {\n c.contentList.forEach((childData: any) => {\n const childEnrollData = enrollList[childData.identifier];\n const endDate = dayjs(c.endDate).format('YYYY-MM-DD');\n const daysCount = dayjs(endDate).diff(todayDate, 'day');\n childData.planDuration = daysCount < 0 ? NsCardContent.ACBPConst.OVERDUE : daysCount > 29\n ? NsCardContent.ACBPConst.SUCCESS : NsCardContent.ACBPConst.UPCOMING;\n childData.endDate = c.endDate;\n childData.parentId = c.id;\n childData.planType = 'cbPlan';\n if (childData.status !== NsCardContent.IGOTConst.RETIRED) {\n contentNew.push(childData);\n } else {\n if (childEnrollData && childEnrollData.status === 2) {\n contentNew.push(childData);\n }\n }\n\n const competencyArea: any = [];\n const competencyTheme: any = [];\n const competencyThemeType: any = [];\n const competencySubTheme: any = [];\n const competencyAreaId: any = [];\n const competencyThemeId: any = [];\n const competencySubThemeId: any = [];\n childData.contentStatus = 0;\n if (childEnrollData) {\n childData.contentStatus = childEnrollData.status;\n }\n if (childData.competencies_v5) {\n childData.competencies_v5.forEach((element: any) => {\n if (!competencyArea.includes(element.competencyArea)) {\n competencyArea.push(element.competencyArea);\n competencyAreaId.push(element.competencyAreaId);\n }\n if (!competencyTheme.includes(element.competencyTheme)) {\n competencyTheme.push(element.competencyTheme);\n competencyThemeId.push(element.competencyThemeId);\n }\n if (!competencyThemeType.includes(element.competencyThemeType)) {\n competencyThemeType.push(element.competencyThemeType);\n }\n if (!competencySubTheme.includes(element.competencySubTheme)) {\n competencySubTheme.push(element.competencySubTheme);\n competencySubThemeId.push(element.competencySubThemeId);\n }\n });\n }\n\n childData.competencyArea = competencyArea;\n childData.competencyTheme = competencyTheme;\n childData.competencyThemeType = competencyThemeType;\n childData.competencySubTheme = competencySubTheme;\n childData.competencyAreaId = competencyAreaId;\n childData.competencyThemeId = competencyThemeId;\n childData.competencySubThemeId = competencySubThemeId;\n });\n });\n if (contentNew.length > 1) {\n const sortedData: any = contentNew.sort((a: any, b: any) => {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n\n return secondDate > firstDate ? 1 : -1;\n });\n const uniqueUsersByID = lodash.uniqBy(sortedData, 'identifier');\n const sortedByEndDate = lodash.orderBy(uniqueUsersByID, ['endDate'], ['asc']);\n const sortedByStatus = lodash.orderBy(sortedByEndDate, ['contentStatus'], ['asc']);\n localStorage.setItem('cbpData', JSON.stringify(sortedByStatus));\n return sortedByStatus;\n }\n localStorage.setItem('cbpData', JSON.stringify(contentNew));\n return contentNew;\n }\n localStorage.setItem('cbpData', JSON.stringify([]));\n return [];\n }\n\n mapEnrollmentData(courseData: any) {\n const enrollData: any = {};\n if (courseData && courseData.courses.length) {\n courseData.courses.forEach((data: any) => {\n enrollData[data.collectionId] = data;\n });\n }\n localStorage.setItem('enrollmentMapData', JSON.stringify(enrollData));\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject, EventEmitter, Output } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsContentStripWithTabs } from './content-strip-with-tabs-lib.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { NsContent } from '../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n WsEvents,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserService } from '../../_services/widget-user.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { NsCardContent } from '../../_models/card-content-v2.model';\nimport { ITodayEvents } from '../../_models/event';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\n\ninterface IStripUnitContentData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsContentStripWithTabs.IContentStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsContentStripWithTabs.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n request?: any\n}\n\n@Component({\n selector: 'sb-uic-content-strip-with-tabs',\n templateUrl: './content-strip-with-tabs-lib.component.html',\n styleUrls: ['./content-strip-with-tabs-lib.component.scss'],\n})\nexport class ContentStripWithTabsLibComponent extends WidgetBaseComponent\n implements\n OnInit,\n OnDestroy,\n NsWidgetResolver.IWidgetData<NsContentStripWithTabs.IContentStripMultiple> {\n @Input() widgetData!: NsContentStripWithTabs.IContentStripMultiple;\n @Output() emptyResponse = new EventEmitter<any>()\n @Output() viewAllResponse = new EventEmitter<any>()\n @Output() telemtryResponse = new EventEmitter<any>()\n @Input() providerId : any = ''\n @Input() emitViewAll : boolean = false\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitContentData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n\n constructor(\n // private contentStripSvc: ContentStripNewMultipleService,\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n public router: Router,\n private userSvc: WidgetUserService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService\n ) {\n super();\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en');\n let lang = JSON.stringify(localStorage.getItem('websiteLanguage'));\n lang = lang.replace(/\\\"/g, '');\n this.translate.use(lang);\n }\n this.environment = environment\n console.log('plugin')\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n\n this.contentSvc.telemetryData$.subscribe((data: any) => {\n this.telemtryResponse.emit(data)\n })\n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n if (this.checkForEmptyWidget(strip)) {\n this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n // console.log('data.key', data, data.key, data.widgets);\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitContentData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsContentStripWithTabs.IContentStripMultiple, data: IStripUnitContentData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitContentData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitContentData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitContentData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n const tabWithMaxWidgets = data.tabs.reduce(\n (prev, current) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n\n private getFiltersFromArray(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n private transformSearchV6FiltersV2(v6filters: any) {\n const filters: any = {};\n if (v6filters.constructor === Array) {\n v6filters.forEach(((f: any) => {\n Object.keys(f).forEach(key => {\n filters[key] = f[key];\n });\n }));\n return filters;\n }\n return v6filters;\n }\n\n checkForDateFilters(filters: any) {\n let userData: any;\n if (this.configSvc.userProfile) {\n userData = this.configSvc.userProfile;\n }\n\n if (filters && filters.hasOwnProperty('batches.endDate')) {\n // tslint:disable-next-line\n filters['batches.endDate']['>='] = eval(filters['batches.endDate']['>='])\n } else if (filters && filters.hasOwnProperty('batches.enrollmentEndDate')) {\n // tslint:disable-next-line\n filters['batches.enrollmentEndDate']['>='] = eval(filters['batches.enrollmentEndDate']['>='])\n } else if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n filters.organisation = userData && userData.rootOrgId;\n\n if (filters && filters.hasOwnProperty('designation')) {\n filters.designation = userData.professionalDetails.length > 0 ?\n userData.professionalDetails[0].designation : '';\n }\n }\n return filters;\n }\n\n private fetchStripFromRequestData(\n strip: NsContentStripWithTabs.IContentStripUnit,\n calculateParentStatus = true,\n ) {\n // setting initial values\n strip.loaderWidgets = this.transformSkeletonToWidgets(strip);\n this.processStrip(strip, [], 'fetching', false, null);\n this.fetchFromEnrollmentList(strip, calculateParentStatus);\n this.fetchFromSearchV6(strip, calculateParentStatus);\n this.fetchFromTrendingContent(strip, calculateParentStatus);\n this.fetchAllCbpPlans(strip, calculateParentStatus);\n this.fetchAllTopContent(strip, calculateParentStatus);\n this.fetchAllFeaturedContent(strip, calculateParentStatus);\n this.fetchAllChannela(strip, calculateParentStatus);\n \n // this.enrollInterval = setInterval(() => {\n // this.fetchAllCbpPlans(strip, calculateParentStatus)\n // }, 1000)\n }\n\n fetchFromEnrollmentList(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) {\n let userId = '';\n let content: NsContent.IContent[];\n let contentNew: NsContent.IContent[];\n let tabResults: any[] = [];\n const queryParams = _.get(strip.request.enrollmentList, 'queryParams');\n if (this.configSvc.userProfile) {\n userId = this.configSvc.userProfile.userId;\n }\n // tslint:disable-next-line: deprecation\n this.userSvc.fetchUserBatchList(userId, queryParams).subscribe(\n (result: any) => {\n const courses = result && result.courses;\n const showViewMore = Boolean(\n courses.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: (strip.viewMoreUrl && strip.viewMoreUrl.path) || '',\n queryParams: {\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n strip.request && strip.request.searchV6 && strip.request.searchV6.filters\n ? JSON.stringify(\n // this.searchServSvc.transformSearchV6Filters(\n strip.request.searchV6.filters\n // ),\n )\n : {},\n },\n }\n : null;\n if (courses && courses.length) {\n content = courses.map((c: any) => {\n const contentTemp: NsContent.IContent = c.content;\n contentTemp.completionPercentage = c.completionPercentage || c.progress || 0;\n contentTemp.completionStatus = c.completionStatus || c.status || 0;\n contentTemp.enrolledDate = c.enrolledDate || '';\n contentTemp.lastContentAccessTime = c.lastContentAccessTime || '';\n contentTemp.lastReadContentStatus = c.lastReadContentStatus || '';\n contentTemp.lastReadContentId = c.lastReadContentId || '';\n contentTemp.lrcProgressDetails = c.lrcProgressDetails || '';\n contentTemp.issuedCertificates = c.issuedCertificates || [];\n contentTemp.batchId = c.batchId || '';\n return contentTemp;\n });\n }\n // To filter content with completionPercentage > 0,\n // so that only those content will show in home page\n // continue learing strip\n // if (content && content.length) {\n // contentNew = content.filter((c: any) => {\n // /** commented as both are 0 after enrolll */\n // if (c.completionPercentage && c.completionPercentage > 0) {\n // return c\n // }\n // })\n // }\n\n // To sort in descending order of the enrolled date\n contentNew = (content || []).sort((a: any, b: any) => {\n const dateA: any = new Date(a.lastContentAccessTime || 0);\n const dateB: any = new Date(b.lastContentAccessTime || 0);\n return dateB - dateA;\n });\n\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitEnrollmentTabsData(contentNew, strip);\n this.processStrip(\n strip,\n this.transformContentsToWidgets(contentNew, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(contentNew, strip),\n 'done',\n calculateParentStatus,\n viewMoreUrl,\n );\n }\n },\n () => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n );\n }\n }\n\n splitEnrollmentTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\n const tabResults: any[] = [];\n const splitData = this.getInprogressAndCompleted(\n contentNew,\n (e: any) => e.completionStatus === 1 || e.completionPercentage < 100,\n strip,\n );\n\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if (strip.tabs[i]) {\n tabResults.push(\n {\n ...strip.tabs[i],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n }\n return tabResults;\n }\n\n getInprogressAndCompleted(array: NsContent.IContent[],\n customFilter: any,\n strip: NsContentStripWithTabs.IContentStripUnit) {\n const inprogress: any[] = [];\n const completed: any[] = [];\n array.forEach((e: any, idx: number, arr: any[]) => (customFilter(e, idx, arr) ? inprogress : completed).push(e));\n return [\n { value: 'inprogress', widgets: this.transformContentsToWidgets(inprogress, strip) },\n { value: 'completed', widgets: this.transformContentsToWidgets(completed, strip) }];\n }\n\n async fetchFromSearchV6(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.searchV6 && Object.keys(strip.request.searchV6).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n console.log(originalFilters);\n if (strip.request &&\n strip.request.searchV6 &&\n strip.request.searchV6.request &&\n strip.request.searchV6.request.filters) {\n originalFilters = strip.request.searchV6.request.filters;\n strip.request.searchV6.request.filters = this.checkForDateFilters(strip.request.searchV6.request.filters);\n strip.request.searchV6.request.filters = this.getFiltersFromArray(\n strip.request.searchV6.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqSearchV6(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.searchV6Request(strip, strip.request, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else if (response.results.result.Event) {\n this.processStrip(\n strip,\n this.transformEventsToWidgets(response.results.result.Event, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n }\n\n async searchV6Request(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.searchV6) {\n this.contentSvc.searchV6(request.searchV6).subscribe(results => {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.searchV6 &&\n request.searchV6.request &&\n request.searchV6.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n // if (viewMoreUrl && viewMoreUrl.queryParams) {\n // viewMoreUrl.queryParams = viewMoreUrl.queryParams\n // }\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n\n async fetchFromTrendingContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length) {\n // if (!(strip.request.searchV6.locale && strip.request.searchV6.locale.length > 0)) {\n // if (this.configSvc.activeLocale) {\n // strip.request.searchV6.locale = [this.configSvc.activeLocale.locals[0]]\n // } else {\n // strip.request.searchV6.locale = ['en']\n // }\n // }\n let originalFilters: any = [];\n // tslint:disable:no-console\n console.log(originalFilters);\n if (strip.request &&\n strip.request.trendingSearch &&\n strip.request.trendingSearch.request &&\n strip.request.trendingSearch.request.filters) {\n originalFilters = strip.request.trendingSearch.request.filters;\n strip.request.trendingSearch.request.filters = this.checkForDateFilters(strip.request.trendingSearch.request.filters);\n strip.request.trendingSearch.request.filters = this.getFiltersFromArray(\n strip.request.trendingSearch.request.filters,\n );\n }\n if (strip.tabs && strip.tabs.length) {\n // TODO: Have to extract requestRequired to outer level of tabs config\n const firstTab = strip.tabs[0];\n if (firstTab.requestRequired) {\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n const currentTabFromMap = (allTabs && allTabs.length && allTabs[0]) as NsContentStripWithTabs.IContentStripTab;\n\n this.getTabDataByNewReqTrending(strip, 0, currentTabFromMap, calculateParentStatus);\n }\n }\n\n } else {\n try {\n const response = await this.trendingSearchRequest(strip, strip.request, calculateParentStatus);\n if (response && response.results && response.results.response) {\n const content = response.results.response[strip.request.trendingSearch.responseKey] || [];\n this.processStrip(\n strip,\n this.transformContentsToWidgets(content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl || '',\n );\n } else {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n }\n }\n\n async trendingSearchRequest(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request.trendingSearch) {\n // check for the request if it has dynamic values]\n if (request.trendingSearch.request.filters.organisation &&\n request.trendingSearch.request.filters.organisation.indexOf('<orgID>') >= 0\n ) {\n let userRootOrgId;\n if (this.configSvc.userProfile) {\n userRootOrgId = this.configSvc.userProfile.rootOrgId;\n }\n request.trendingSearch.request.filters.organisation = userRootOrgId;\n }\n this.contentSvc.trendingContentSearch(request.trendingSearch).subscribe(results => {\n const showViewMore = Boolean(\n results.result &&\n strip.request &&\n results.result[strip.request.trendingSearch.responseKey] &&\n results.result[strip.request.trendingSearch.responseKey].length > 5 &&\n strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.trendingSearch &&\n request.trendingSearch.request &&\n request.trendingSearch.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n if (error.error && error.error.status === 400) {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n // this.processStrip(strip, [], 'done', calculateParentStatus, null)\n reject(error);\n },\n );\n }\n });\n }\n\n toggleInfo(data: IStripUnitContentData) {\n const stripInfo = this.stripsResultDataMap[data.key].stripInfo;\n if (stripInfo) {\n if (stripInfo.mode !== 'below') {\n this.loggerSvc.warn(`strip info mode: ${stripInfo.mode} not implemented yet`);\n stripInfo.mode = 'below';\n }\n if (stripInfo.mode === 'below') {\n this.stripsResultDataMap[data.key].stripInfo = {\n ...stripInfo,\n visibilityMode: stripInfo.visibilityMode === 'hidden' ? 'visible' : 'hidden',\n };\n }\n }\n }\n\n private transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n\n private transformEventsToWidgets(\n contents: ITodayEvents[],\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n this.eventSvc.setEventListData(contents);\n return (this.eventSvc.todaysEvents || []).map((content: any, idx: any) => (content ? {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'eventHubCard',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n private transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n\n private async processStrip(\n strip: NsContentStripWithTabs.IContentStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsContentStripWithTabs.IContentStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsContentStripWithTabs.IContentStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length)||\n (strip.request.topContent && Object.keys(strip.request.topContent).length) ||\n (strip.request.featureContent && Object.keys(strip.request.featureContent).length)||\n (strip.request.channels && Object.keys(strip.request.channels).length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitContentData, stripKey: string) {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'inprogress';\n stripMap.tabs[tabEvent.index].tabLoading = true;\n stripMap.showOnLoader = true;\n }\n const data: WsEvents.ITelemetryTabData = {\n label: `${tabEvent.tab.textLabel}`,\n index: tabEvent.index,\n };\n this.eventSvc.raiseInteractTelemetry(\n {\n type: WsEvents.EnumInteractTypes.CLICK,\n subType: WsEvents.EnumInteractSubTypes.HOME_PAGE_STRIP_TABS,\n id: `${_.camelCase(data.label)}-tab`,\n },\n {},\n {\n module: WsEvents.EnumTelemetrymodules.HOME,\n }\n );\n const currentTabFromMap: any = stripMap.tabs && stripMap.tabs[tabEvent.index];\n const currentStrip = this.widgetData.strips.find(s => s.key === stripKey);\n if (this.stripsResultDataMap[stripKey] && currentTabFromMap) {\n this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams = {\n ...this.stripsResultDataMap[stripKey].viewMoreUrl.queryParams,\n tabSelected: currentTabFromMap.label,\n };\n }\n if (currentStrip && currentTabFromMap && !currentTabFromMap.computeDataOnClick) {\n if (currentTabFromMap.requestRequired && currentTabFromMap.request) {\n // call API to get tab data and process\n // this.processStrip(currentStrip, [], 'fetching', true, null)\n if (currentTabFromMap.request.searchV6) {\n this.getTabDataByNewReqSearchV6(currentStrip, tabEvent.index, currentTabFromMap, true);\n } else if (currentTabFromMap.request.trendingSearch) {\n this.getTabDataByNewReqTrending(currentStrip, tabEvent.index, currentTabFromMap, true);\n }\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].tabLoading = false;\n }\n } else {\n this.getTabDataByfilter(currentStrip, currentTabFromMap, true);\n setTimeout(() => {\n if (stripMap && stripMap.tabs && stripMap.tabs[tabEvent.index]) {\n stripMap.tabs[tabEvent.index].tabLoading = false;\n stripMap.tabs[tabEvent.index].fetchTabStatus = 'done';\n stripMap.showOnLoader = false;\n }\n }, 200);\n }\n }\n }\n\n async getTabDataByNewReqSearchV6(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.searchV6Request(strip, currentTab.request, calculateParentStatus);\n if (response && response.results) {\n const widgets = this.transformContentsToWidgets(response.results.result.content, strip);\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async getTabDataByNewReqTrending(\n strip: NsContentStripWithTabs.IContentStripUnit,\n tabIndex: number,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n try {\n const response = await this.trendingSearchRequest(strip, currentTab.request, calculateParentStatus);\n if (response && response.results && response.results.response) {\n const content = response.results.response[currentTab.value] || [];\n const widgets = this.transformContentsToWidgets(content, strip);\n // console.log('currentTab --- widgets', widgets)\n let tabResults: any[] = [];\n if (this.stripsResultDataMap[strip.key] && this.stripsResultDataMap[strip.key].tabs) {\n const allTabs = this.stripsResultDataMap[strip.key].tabs;\n if (allTabs && allTabs.length && allTabs[tabIndex]) {\n allTabs[tabIndex] = {\n ...allTabs[tabIndex],\n widgets,\n fetchTabStatus: 'done',\n };\n tabResults = allTabs;\n }\n }\n // console.log('tabResults -++++***--', tabResults)\n // console.log('calling after-- ')\n this.processStrip(\n strip,\n widgets,\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n tabResults // tabResults as widgets\n );\n } else {\n this.processStrip(strip, [], 'done', calculateParentStatus, null);\n }\n } catch (error) {\n // Handle errors\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n }\n }\n\n getTabDataByfilter(\n strip: NsContentStripWithTabs.IContentStripUnit,\n currentTab: NsContentStripWithTabs.IContentStripTab,\n calculateParentStatus: boolean\n ) {\n // tslint:disable:no-console\n console.log('strip -- ', strip);\n // tslint:disable:no-console\n console.log('currentTab -- ', currentTab);\n // tslint:disable:no-console\n console.log('calculateParentStatus-- ', calculateParentStatus);\n // TODO: Write logic for individual filter if passed in config\n // add switch case based on config key passed\n }\n\n async fetchAllCbpPlans(strip: any, calculateParentStatus = true) {\n\n if (strip.request && strip.request.cbpList && Object.keys(strip.request.cbpList).length) {\n\n let courses: NsContent.IContent[];\n let tabResults: any[] = [];\n const response = await this.userSvc.fetchCbpPlanList().toPromise();\n if (response) {\n courses = response;\n if (strip.tabs && strip.tabs.length) {\n tabResults = this.splitCbpTabsData(courses, strip);\n await this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n '',\n tabResults\n );\n } else {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(courses, strip),\n 'done',\n calculateParentStatus,\n 'viewMoreUrl',\n );\n }\n }\n // this.userSvc.fetchCbpPlanList().subscribe( async (res: any) => {\n // if (res) {\n // console.log(res,'===============================>')\n // courses = res\n // if (strip.tabs && strip.tabs.length) {\n // tabResults = this.splitCbpTabsData(courses, strip)\n // await this.processStrip(\n // strip,\n // this.transformContentsToWidgets(courses, strip),\n // 'done',\n // calculateParentStatus,\n // '',\n // tabResults\n // )\n // } else {\n // this.processStrip(\n // strip,\n // this.transformContentsToWidgets(courses, strip),\n // 'done',\n // calculateParentStatus,\n // 'viewMoreUrl',\n // )\n // }\n // }\n // }, (_err: any) => {\n\n // })\n\n clearInterval(this.enrollInterval);\n }\n }\n splitCbpTabsData(contentNew: NsContent.IContent[], strip: NsContentStripWithTabs.IContentStripUnit) {\n const tabResults: any[] = [];\n const splitData = this.getTabsList(\n contentNew,\n strip,\n );\n if (strip.tabs && strip.tabs.length) {\n for (let i = 0; i < strip.tabs.length; i += 1) {\n if (strip.tabs[i]) {\n tabResults.push(\n {\n ...strip.tabs[i],\n fetchTabStatus: 'done',\n ...(splitData.find(itmInner => {\n if (strip.tabs && strip.tabs[i] && itmInner.value === strip.tabs[i].value) {\n return itmInner;\n }\n return undefined;\n })),\n }\n );\n }\n }\n }\n return tabResults;\n }\n\n getTabsList(array: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit) {\n let all: any[] = [];\n let upcoming: any[] = [];\n let overdue: any[] = [];\n array.forEach((e: any) => {\n all.push(e);\n if (e.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n overdue.push(e);\n } else if (e.planDuration === NsCardContent.ACBPConst.UPCOMING) {\n upcoming.push(e);\n }\n });\n const allCompleted = all.filter((allData: any) => allData.contentStatus === 2);\n let allInCompleted = all.filter((allData: any) => allData.contentStatus < 2);\n\n let allCompletedOverDue = allCompleted.filter((allData: any) => allData.planDuration === NsCardContent.ACBPConst.OVERDUE);\n const allCompletedAll = allCompleted.filter((allData: any) => allData.planDuration !== NsCardContent.ACBPConst.OVERDUE);\n\n allCompletedOverDue = allCompletedOverDue.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n allInCompleted = allInCompleted.sort((a: any, b: any): any => {\n if (a.planDuration === NsCardContent.ACBPConst.OVERDUE && b.planDuration === NsCardContent.ACBPConst.OVERDUE) {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n }\n });\n\n all = [...allInCompleted, ...allCompletedAll, ...allCompletedOverDue];\n\n overdue = overdue.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n\n overdue = overdue.sort((a: any, b: any): any => {\n const firstDate: any = new Date(a.endDate);\n const secondDate: any = new Date(b.endDate);\n return firstDate > secondDate ? -1 : 1;\n });\n\n upcoming = upcoming.filter((data: any): any => {\n return data.contentStatus < 2;\n });\n // this.getSelectedIndex(1)\n return [\n { value: 'all', widgets: this.transformContentsToWidgets(all, strip) },\n { value: 'upcoming', widgets: this.transformContentsToWidgets(upcoming, strip) },\n { value: 'overdue', widgets: this.transformContentsToWidgets(overdue, strip) }];\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n if (key === 'cbpPlan') {\n if (stripsResultDataMap.tabs.length) {\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\n }\n }\n return returnValue;\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n async fetchAllTopContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.topContent && Object.keys(strip.request.topContent).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.topContent &&\n strip.request.topContent.request &&\n strip.request.topContent.request.filters) {\n originalFilters = strip.request.topContent.request.filters;\n strip.request.topContent.request.filters = this.postMethodFilters(strip.request.topContent.request.filters);\n }\n try {\n const response = await this.postRequestMethod(strip, strip.request.topContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content && response.results.result.content.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n async fetchAllFeaturedContent(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.featureContent && Object.keys(strip.request.featureContent).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.featureContent &&\n strip.request.featureContent.request &&\n strip.request.featureContent.request.filters) {\n originalFilters = strip.request.featureContent.request.filters;\n strip.request.featureContent.request.filters = this.postMethodFilters(strip.request.featureContent.request.filters);\n }\n try {\n const response = await this.postRequestMethod(strip, strip.request.featureContent, strip.request.apiUrl, calculateParentStatus);\n // console.log('calling after - response, ', response)\n if (response && response.results) {\n // console.log('calling after-- ')\n if (response.results.result.content && response.results.result.content.length) {\n this.processStrip(\n strip,\n this.transformContentsToWidgets(response.results.result.content, strip),\n 'done',\n calculateParentStatus,\n response.viewMoreUrl,\n );\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n this.emptyResponse.emit(true)\n }\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null); \n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n async postRequestMethod(strip: NsContentStripWithTabs.IContentStripUnit,\n request: NsContentStripWithTabs.IContentStripUnit['request'],\n apiUrl: string,\n calculateParentStatus: boolean\n ): Promise<any> {\n const originalFilters: any = [];\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.postApiMethod(apiUrl,request).subscribe(results => {\n const showViewMore = Boolean(\n results.result.content && results.result.content.length > 5 && strip.stripConfig && strip.stripConfig.postCardForSearch,\n );\n const viewMoreUrl = showViewMore\n ? {\n path: strip.viewMoreUrl && strip.viewMoreUrl.path || '',\n queryParams: {\n tab: 'Learn',\n q: strip.viewMoreUrl && strip.viewMoreUrl.queryParams,\n f:\n request &&\n request.searchV6 &&\n request.searchV6.request &&\n request.searchV6.request.filters\n ? JSON.stringify(\n this.transformSearchV6FiltersV2(\n originalFilters,\n )\n )\n : {},\n },\n }\n : null;\n resolve({ results, viewMoreUrl });\n }, (error: any) => {\n this.processStrip(strip, [], 'error', calculateParentStatus, null);\n reject(error);\n },\n );\n }\n });\n }\n postMethodFilters(filters: any){\n if (filters.organisation &&\n filters.organisation.indexOf('<orgID>') >= 0\n ) {\n filters.organisation = this.providerId\n }\n return filters\n }\n redirectViewAll(stripData: any, path: string, queryParamsData: any) {\n if(this.emitViewAll) {\n this.viewAllResponse.emit(stripData)\n } else {\n this.router.navigate([path], { queryParams: queryParamsData })\n }\n }\n\n async fetchAllChannela(strip: NsContentStripWithTabs.IContentStripUnit, calculateParentStatus = true) {\n if (strip.request && strip.request.channels && Object.keys(strip.request.channels).length) {\n let originalFilters: any = [];\n if (strip.request &&\n strip.request.channels &&\n strip.request.channels.request &&\n strip.request.channels.request.filters) {\n originalFilters = strip.request.channels.request.filters;\n strip.request.channels.request.filters = this.postMethodFilters(strip.request.channels.request.filters);\n }\n try {\n let data = [\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Ministry of Consumer Affairs, Food and Public Distribution',\n programCount: '10',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Ministry of Railways',\n programCount: '10',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Department of Post',\n programCount: '10',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'NLC India Limited',\n programCount: '30',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Mission Karmayogi',\n programCount: '24',\n },\n {\n // tslint:disable-next-line: max-line-length\n posterImage: 'https://portal.karmayogi.nic.in/content-store/content/do_114051411119235072127/artifact/do_114051411119235072127_1715260168985_default-provider.svg',\n appIcon: '',\n name: 'Mission Karmayogi',\n programCount: '50',\n },\n \n ]\n const response = await data\n // console.log('calling after - response, ', response)\n if (response) {\n this.processStrip(\n strip,\n this.transformAllContentsToWidgets(response, strip),\n 'done',\n calculateParentStatus,\n response,\n );\n\n } else {\n this.processStrip(strip, [], 'error', calculateParentStatus, null); \n this.emptyResponse.emit(true)\n }\n } catch (error) {\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n }\n\n private transformAllContentsToWidgets(\n contents: any,\n strip: NsContentStripWithTabs.IContentStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n raiseTelemetryInteratEvent(event) {\n this.telemtryResponse.emit(event)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { ContentStripWithTabsLibComponent } from './content-strip-with-tabs-lib.component';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\n\n// tslint:disable-next-line:function-name\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n declarations: [ContentStripWithTabsLibComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n entryComponents: [ContentStripWithTabsLibComponent],\n exports: [ContentStripWithTabsLibComponent],\n})\nexport class ContentStripWithTabsLibModule { }\n","import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core'\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\nimport { ICarousel, ICarouselStyle } from './sliders.model'\nimport { Subscription, interval } from 'rxjs'\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-sliders',\n templateUrl: './sliders.component.html',\n styleUrls: ['./sliders.component.scss'],\n})\nexport class SlidersLibComponent extends WidgetBaseComponent\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\n @Input() widgetData!: ICarousel[]\n @Input() styleData!: ICarouselStyle\n @Input() title: any = ''\n @HostBinding('id')\n public id = `banner_${Math.random()}`\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n currentIndex = 0\n slideInterval: Subscription | null = null\n isMobile = false\n\n constructor(\n private events: EventService,\n private valueSvc: ValueService\n ) {\n super()\n }\n\n ngOnInit() {\n this.reInitiateSlideInterval()\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n reInitiateSlideInterval() {\n if (this.widgetData && this.widgetData.length > 1) {\n try {\n if (this.slideInterval) {\n this.slideInterval.unsubscribe()\n }\n } catch (e) {\n } finally {\n this.slideInterval = interval(8000).subscribe(() => {\n if (this.currentIndex === this.widgetData.length - 1) {\n this.currentIndex = 0\n } else {\n this.currentIndex += 1\n }\n })\n }\n }\n }\n slideTo(index: number) {\n if (index >= 0 && index < this.widgetData.length) {\n this.currentIndex = index\n } else if (index === this.widgetData.length) {\n this.currentIndex = 0\n } else {\n this.currentIndex = this.widgetData.length + index\n }\n this.reInitiateSlideInterval()\n }\n\n get isOpenInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n return true\n } return false\n }\n\n openInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n window.open(currentData.redirectUrl)\n }\n }\n raiseTelemetry(bannerUrl: string | undefined) {\n this.openInNewTab()\n const path = window.location.pathname.replace('/', '')\n const url = path + window.location.search\n\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'banner',\n },\n {\n pageUrl: url,\n bannerRedirectUrl: bannerUrl,\n },\n {\n pageIdExt: 'banner',\n module: WsEvents.EnumTelemetrymodules.CONTENT,\n })\n }\n\n ngOnDestroy() {\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout'\r\nimport { Directive, HostBinding, Input, OnChanges, OnDestroy } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { distinctUntilChanged } from 'rxjs/operators'\r\n\r\nexport interface IImageResponsiveUnit {\r\n [key: string]: string\r\n}\r\n\r\nconst customBreakPoints = {\r\n xs: '(max-width: 450px)',\r\n s: '(min-width: 450.001px) and (max-width: 768px)',\r\n m: '(min-width: 768.001px) and (max-width: 1024px)',\r\n l: '(min-width: 1024.001px) and (max-width: 1400px)',\r\n xl: '(min-width: 1400.001px) and (max-width: 1920px)',\r\n xxl: '(min-width: 1920.001px)',\r\n}\r\n\r\n@Directive({\r\n selector: '[wsUtilsImageResponsive]',\r\n})\r\nexport class ImageResponsiveDirective implements OnChanges, OnDestroy {\r\n\r\n @Input() src: IImageResponsiveUnit | null = null\r\n @HostBinding('src') srcBindUrl = ''\r\n\r\n currentSize = ''\r\n breakpointSubscription: Subscription | null = null\r\n constructor(\r\n private breakpointObserver: BreakpointObserver,\r\n ) {\r\n this.breakpointSubscription = this.breakpointObserver\r\n .observe([\r\n customBreakPoints.xs,\r\n customBreakPoints.s,\r\n customBreakPoints.m,\r\n customBreakPoints.l,\r\n customBreakPoints.xl,\r\n customBreakPoints.xxl,\r\n ])\r\n .pipe(distinctUntilChanged())\r\n .subscribe(data => {\r\n // //console.log('data >', data)\r\n if (data.breakpoints[customBreakPoints.xxl]) {\r\n this.currentSize = 'xxl'\r\n } else if (data.breakpoints[customBreakPoints.xl]) {\r\n this.currentSize = 'xl'\r\n } else if (data.breakpoints[customBreakPoints.l]) {\r\n this.currentSize = 'l'\r\n } else if (data.breakpoints[customBreakPoints.m]) {\r\n this.currentSize = 'm'\r\n } else if (data.breakpoints[customBreakPoints.s]) {\r\n this.currentSize = 's'\r\n } else if (data.breakpoints[customBreakPoints.xs]) {\r\n this.currentSize = 'xs'\r\n } else {\r\n this.currentSize = 'xl'\r\n }\r\n this.setSrc()\r\n })\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.setSrc()\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.breakpointSubscription) {\r\n this.breakpointSubscription.unsubscribe()\r\n }\r\n }\r\n\r\n private setSrc() {\r\n if (\r\n this.currentSize &&\r\n this.src &&\r\n this.src[this.currentSize]\r\n ) {\r\n this.srcBindUrl = this.src[this.currentSize]\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { ImageResponsiveDirective } from './image-responsive.directive'\r\n\r\n@NgModule({\r\n declarations: [ImageResponsiveDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ImageResponsiveDirective],\r\n})\r\nexport class ImageResponsiveModule { }\r\n","import { Directive, OnChanges, Input, HostBinding, HostListener } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsNavigation]',\r\n})\r\nexport class NavigationDirective implements OnChanges {\r\n @Input() wsUtilsNavigation = ''\r\n @Input() openInNewTab = false\r\n @Input()\r\n @HostBinding('attr.routerLink') routeUrl = ''\r\n @HostListener('mousedown', ['$event']) onMouseEnter($event: Event) {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n $event.preventDefault()\r\n $event.stopPropagation()\r\n this.routeUrl = './'\r\n window.open(this.wsUtilsNavigation)\r\n }\r\n }\r\n constructor() { }\r\n\r\n ngOnChanges() {\r\n if (this.openInNewTab || this.wsUtilsNavigation.includes('mailto')) {\r\n this.routeUrl = './'\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NavigationDirective } from './navigation.directive'\r\n\r\n@NgModule({\r\n declarations: [NavigationDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [NavigationDirective],\r\n})\r\nexport class NavigationModule { }\r\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SlidersLibComponent } from './sliders.component'\nimport { RouterModule } from '@angular/router'\nimport { ImageResponsiveModule } from './../../_directives/image-responsive/image-responsive.module'\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\n/* tslint:disable */\nimport Hammer from 'hammerjs'\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\n/* tslint:enable */\nexport class MyHammerConfig extends HammerGestureConfig {\n buildHammer(element: HTMLElement) {\n const mc = new Hammer(element, {\n touchAction: 'pan-y',\n })\n return mc\n }\n}\n\n// tslint:disable-next-line: max-classes-per-file\n@NgModule({\n declarations: [SlidersLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n NavigationModule,\n ImageResponsiveModule,\n ],\n exports: [SlidersLibComponent],\n entryComponents: [SlidersLibComponent],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: MyHammerConfig,\n },\n ],\n})\nexport class SlidersLibModule { }\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nconst API_END_POINTS = {\n PROVIDER_INSIGHTS: `/apis/proxies/v8/microsite/read/insights`,\n TRAINING_DETAILS: `apis/proxies/v8/sunbirdigot/search`\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InsiteDataService {\n\n constructor(\n private http: HttpClient\n ) {}\n fetchSearchData(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.PROVIDER_INSIGHTS, request)\n }\n\n fetchTrainingDetails(request: any): Observable<any> {\n return this.http.post<any>(API_END_POINTS.TRAINING_DETAILS, request)\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-data-points',\n templateUrl: './data-points.component.html',\n styleUrls: ['./data-points.component.css']\n})\nexport class DataPointsComponent implements OnInit {\n @Input() objectData: any\n @Input() layoutType: string = ''\n @Input() fetchDataFromApi: boolean = false\n @Input() providerId : any = ''\n @Input() pageLayout: any = ''\n customArray: any[][] = []\n isDataLoading: boolean = false\n\n constructor(public insightSvc: InsiteDataService) { \n }\n\n ngOnInit() {\n if (this.objectData && this.layoutType === 'gridLayout') {\n this.customArray = this.createCustomArray(this.objectData.metrics)\n }\n if(this.fetchDataFromApi) {\n this.isDataLoading = true\n this.getInsiteData()\n }\n } \n\n createCustomArray(arr: any[]): any[][] {\n const nByn: any[][] = []\n for (let i = 0; i < arr.length; i += this.objectData.dataColSpan) {\n nByn.push(arr.slice(i, i + this.objectData.dataColSpan))\n }\n return nByn \n }\n\n getInsiteData(){\n let request: any = {}\n request = {\n \"request\": {\n \"filters\": {\n \"organisations\": [\n this.providerId\n ]\n }\n }\n }\n if (this.pageLayout && this.pageLayout === 'mdo') {\n request = {\n \"request\": {\n \"filters\": {\n \"requestType\": \"MDO_INSIGHT\",\n \"organisations\": [\n this.providerId\n ]\n }\n }\n }\n }\n this.insightSvc.fetchSearchData(request).subscribe((res: any)=> {\n if(res && res.result && res.result.response && res.result.response.nudges && res.result.response.nudges.length) {\n res.result.response.nudges.forEach((nudgeData: any) => {\n if(this.providerId && this.providerId === nudgeData.orgId) {\n this.objectData = nudgeData.data\n }\n })\n }\n this.isDataLoading = false\n })\n\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-skeleton-loader',\n templateUrl: './skeleton-loader-lib.component.html',\n styleUrls: ['./skeleton-loader-lib.component.scss'],\n})\nexport class SkeletonLoaderLibComponent implements OnInit {\n\n @Input() bindingClass = ''\n @Input() height = ''\n @Input() width = ''\n constructor() { }\n\n ngOnInit() {\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SkeletonLoaderLibComponent } from './skeleton-loader-lib.component'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { MatDialogModule, MatIconModule } from '@angular/material'\n\n@NgModule({\n declarations: [SkeletonLoaderLibComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatIconModule,\n ],\n exports: [\n SkeletonLoaderLibComponent,\n ],\n entryComponents: [SkeletonLoaderLibComponent],\n})\nexport class SkeletonLoaderLibModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataPointsComponent } from './data-points.component';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [DataPointsComponent],\n imports: [\n CommonModule,\n SkeletonLoaderLibModule\n ],\n exports: [DataPointsComponent],\n providers:[InsiteDataService]\n})\nexport class DataPointsModule { }\n","import { DatePipe } from '@angular/common';\nimport {\n Component,\n Input,\n OnInit,\n \n} from '@angular/core';\nimport { InsiteDataService } from '../../_services/insite-data.service';\n\n@Component({\n selector: 'sb-uic-calender',\n templateUrl: './calender.component.html',\n styleUrls: ['./calender.component.scss']\n})\nexport class CalenderComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() fetchDataFromApi: boolean = false\n @Input() showHeader: boolean = false\n @Input() defaultDays: number = 3\n @Input() providerId: any\n @Input() fullCalendor: boolean = false\n days = []\n trainings: any = {}\n currentMonthAndYear: any\n isDataLoading: boolean = false\n currentDate: any = new Date()\n endDate: any\n startDate: any\n allMonths = [\"January\", \"February\", \"March\",\n \"April\", \"May\", \"June\", \"July\",\n \"August\", \"September\", \"October\",\n \"November\", \"December\"\n ]\n monthsDropdown: any = []\n selectedMonth: any\n constructor(private datePipe: DatePipe, public insightSvc: InsiteDataService) { }\n\n ngOnInit() {\n this.currentMonthAndYear = this.datePipe.transform(this.currentDate, 'MMMM y')\n this.selectedMonth = this.datePipe.transform(this.currentDate, 'LLLL yyyy')\n if (this.fullCalendor) {\n console.log(\"this.currentDate \", this.currentDate)\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\n this.getMonthsDropdownData()\n }\n if (!this.fullCalendor) {\n this.days = this.getDays(this.currentDate, +this.defaultDays)\n }\n this.startDate = this.days[0]\n this.endDate = this.days[this.days.length - 1]\n if(this.fetchDataFromApi) {\n this.isDataLoading = true\n this.getInsiteData()\n }\n }\n getInsiteData() {\n let request = {\n \"locale\": [\n \"en\"\n ],\n \"query\": \"\",\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"category\": [\n \"Calendar\"\n ],\n \"status\": [\n \"Live\",\n \"Retired\"\n ],\n \"contentType\": \"Event\",\n \"startDate\": {\n \">=\": this.startDate,\n \"<=\": this.endDate\n // \">=\": \"2024-01-15\",\n // \"<\": \"2024-05-31\"\n },\n \"channel\": [this.providerId]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n }\n }\n }\n this.insightSvc.fetchTrainingDetails(request).subscribe((res: any)=> {\n if (res && res.result && res.result.Event) {\n res.result.Event.forEach((resp: any) => {\n if (this.trainings[resp.startDate]) {\n let prevData = this.trainings[resp.startDate]\n let location = resp.eventType\n if (resp.venue && location !== \"Online\") {\n const jsonResp = JSON.parse(resp.venue)\n location = jsonResp['address']\n }\n const formatObject = {\n location: location,\n startTime: this.convertTo12HourFormat(resp.startTime),\n endTime: this.convertTo12HourFormat(resp.endTime),\n title: resp.name,\n startDate: this.formatDate(resp.startDate),\n endDate: this.formatDate(resp.endDate),\n registrationLink: resp.registrationLink,\n }\n prevData.push(formatObject)\n this.trainings[resp.startDate] = prevData\n }\n })\n }\n this.isDataLoading = false\n })\n }\n\n getKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n\n formatDate(date: any) {\n let formatDate = new Date(date)\n return this.datePipe.transform(formatDate, 'E, dd LLL')\n }\n\n convertTo12HourFormat(timeString: string): string {\n const time = timeString.split(\":\")\n let hours = +time[0]\n const minutes = +time[1]\n const ampm = hours >= 12 ? 'PM' : 'AM'\n hours = hours % 12\n hours = hours ? hours : 12\n const strHours = hours < 10 ? '0' + hours : hours.toString()\n const strMinutes = minutes < 10 ? '0' + minutes : minutes.toString()\n return `${strHours}:${strMinutes}: ${ampm}`\n }\n\n getDays(cDate: any, counter: number) {\n const days: any = []\n let initDate: any = new Date(cDate)\n initDate = this.datePipe.transform(initDate, 'y-MM-dd')\n days.push(initDate)\n this.trainings[initDate] = []\n while (counter > 0) {\n let myDate: any = new Date(cDate)\n myDate = myDate.setDate(myDate.getDate() + 1)\n cDate = myDate\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\n days.push(myDate)\n this.trainings[myDate] = []\n counter = counter - 1\n }\n return days\n }\n\n getDaysInMonth(year: number, month: number): Date[] {\n const date = new Date(year, month, 1)\n const days: any = []\n this.trainings = {}\n while (date.getMonth() === month) {\n let myDate: any = new Date(date)\n myDate = this.datePipe.transform(myDate, 'y-MM-dd')\n days.push(myDate)\n this.trainings[myDate] = []\n date.setDate(date.getDate() + 1)\n }\n return days\n }\n\n getMonthsDropdownData() {\n this.allMonths.forEach((month: any) => {\n this.monthsDropdown.push(`${month} ${this.currentDate.getFullYear()}`)\n })\n }\n\n selectMonth(event: any) {\n const selectedMonth: any = new Date(event)\n this.currentDate = selectedMonth\n this.days = []\n this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth())\n this.startDate = this.days[0]\n this.endDate = this.days[this.days.length - 1]\n this.isDataLoading = true\n this.getInsiteData()\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-calender-day',\n templateUrl: './calender-day.component.html',\n styleUrls: ['./calender-day.component.scss']\n})\nexport class CalenderDayComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() day: any\n @Input() dataLoading: boolean\n @Input() rowId: any\n @Input() eventDate: any\n webDisplayDate: string = \"\"\n mobileDisplayDate: string = \"\"\n currentDate: any = new Date()\n\n constructor(private datePipe: DatePipe) { }\n\n ngOnInit() {\n this.currentDate = this.datePipe.transform(this.currentDate, 'y-MM-dd')\n }\n\n openLink(link: string) {\n window.open(link, \"_blank\")\n }\n\n formatDate(date: any, type: string) {\n let fDate = new Date(date)\n if (type === 'web') {\n return this.datePipe.transform(fDate, 'E, dd LLL')\n }\n if (type === 'mob') {\n return this.datePipe.transform(fDate, 'E dd LLL')\n }\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { CalenderComponent } from './calender.component';\nimport { MatIconModule, MatSelectModule } from '@angular/material';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { CalenderDayComponent } from './calender-day/calender-day.component';\nimport { InsiteDataService } from '../../_services/insite-data.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n SkeletonLoaderLibModule\n ],\n declarations: [CalenderComponent, CalenderDayComponent],\n exports: [CalenderComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n providers:[DatePipe, InsiteDataService],\n})\nexport class CalenderModule {}","import { Injectable } from '@angular/core';\nimport { NsContent } from '../_models/widget-content.model';\nimport { NsContentStripWithTabs } from '../_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model';\nimport { NsCommonStrip } from '../_common/common-strip/common-strip.model'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommonMethodsService {\n\n constructor() { }\n\n transformContentsToWidgets(\n contents: NsContent.IContent[],\n strip: NsContentStripWithTabs.IContentStripUnit | NsCommonStrip.ICommonStripUnit,\n ) {\n return (contents || []).map((content, idx) => (\n content ? {\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n content,\n ...(content.batch && { batch: content.batch }),\n cardSubType: strip.stripConfig && strip.stripConfig.cardSubType,\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n context: { pageSection: strip.key, position: idx },\n intranetMode: strip.stripConfig && strip.stripConfig.intranetMode,\n deletedMode: strip.stripConfig && strip.stripConfig.deletedMode,\n contentTags: strip.stripConfig && strip.stripConfig.contentTags,\n },\n } : {\n widgetType: 'card',\n widgetSubType: 'cardContent',\n widgetHostClass: 'mb-2',\n widgetData: {},\n }\n ));\n }\n transformSkeletonToWidgets(\n strip: any\n ) {\n return [1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10].map(_content => ({\n widgetType: 'cardLib',\n widgetSubType: 'cardContentLib',\n widgetHostClass: 'mb-2',\n widgetData: {\n cardSubType: strip.loaderConfig && strip.loaderConfig.cardSubType || 'card-standard-skeleton',\n cardCustomeClass: strip.customeClass ? strip.customeClass : '',\n },\n }));\n }\n}\n","import { Component, OnInit, Input, OnDestroy, HostBinding, Inject } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsCommonStrip } from './common-strip.model';\n// import { HttpClient } from '@angular/common/http'\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { NsContent } from '../../_models/widget-content.model';\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service';\nimport {\n TFetchStatus,\n LoggerService,\n EventService,\n ConfigurationsService,\n UtilityService,\n} from '@sunbird-cb/utils-v2';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { WidgetUserService } from '../../_services/widget-user.service';\n// import { environment } from 'src/environments/environment'\n// tslint:disable-next-line\nimport * as _ from 'lodash'\nimport { MatTabChangeEvent } from '@angular/material';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CommonMethodsService } from '../../_services/common-methods.service';\n\n\ninterface IStripUnitCommonData {\n key: string;\n canHideStrip: boolean;\n mode?: string;\n showStrip: boolean;\n disableTranslate: boolean;\n widgets?: NsWidgetResolver.IRenderConfigWithAnyData[];\n stripTitle: string;\n stripTitleLink?: {\n link: {\n queryParams: string\n },\n icon: string,\n queryParams: string\n };\n sliderConfig?: {\n showNavs: boolean,\n showDots: boolean,\n maxWidgets?: number\n cerificateCardMargin?: boolean\n };\n stripConfig: any;\n tabs?: NsCommonStrip.ICommonStripTab[] | undefined;\n stripName?: string;\n stripLogo?: string;\n description?: string;\n stripInfo?: NsCommonStrip.IStripInfo;\n noDataWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n errorWidget?: NsWidgetResolver.IRenderConfigWithAnyData;\n showOnNoData: boolean;\n showOnLoader: boolean;\n showOnError: boolean;\n loaderWidgets?: any;\n stripBackground?: string;\n secondaryHeading?: any;\n viewMoreUrl: any;\n}\n\n@Component({\n selector: 'sb-uic-common-strip',\n templateUrl: './common-strip.component.html',\n styleUrls: ['./common-strip.component.scss']\n})\nexport class CommonStripComponent extends WidgetBaseComponent\nimplements\nOnInit,\nOnDestroy,\nNsWidgetResolver.IWidgetData<NsCommonStrip.ICommonStrip> {\n @Input() widgetData!: NsCommonStrip.ICommonStrip;\n @HostBinding('id')\n public id = `ws-strip-miltiple_${Math.random()}`;\n stripsResultDataMap: { [key: string]: IStripUnitCommonData } = {};\n stripsKeyOrder: string[] = [];\n showAccordionData = true;\n showParentLoader = false;\n showParentError = false;\n showParentNoData = false;\n errorDataCount = 0;\n noDataCount = 0;\n successDataCount = 0;\n contentAvailable = true;\n baseUrl = this.configSvc.sitePath || '';\n veifiedKarmayogi = false;\n environment!: any;\n changeEventSubscription: Subscription | null = null;\n defaultMaxWidgets = 12;\n enrollInterval: any;\n todaysEvents: any = [];\n\n constructor(\n @Inject('environment') environment: any,\n private contentSvc: WidgetContentService,\n private loggerSvc: LoggerService,\n private eventSvc: EventService,\n private configSvc: ConfigurationsService,\n public utilitySvc: UtilityService,\n // private http: HttpClient,\n // private searchServSvc: SearchServService,\n private userSvc: WidgetUserService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private commonMethodsSvc: CommonMethodsService\n ) {\n super();\n this.environment = environment\n }\n\n ngOnInit() {\n // const url = window.location.href\n this.initData();\n }\n\n ngOnDestroy() {\n if (this.changeEventSubscription) {\n this.changeEventSubscription.unsubscribe();\n }\n }\n\n showAccordion(key: string) {\n if (this.utilitySvc.isMobile && this.stripsResultDataMap[key].mode === 'accordion') {\n return this.showAccordionData;\n }\n return true;\n }\n\n setHiddenForStrip(key: string) {\n this.stripsResultDataMap[key].showStrip = false;\n sessionStorage.setItem(`cstrip_${key}`, '1');\n }\n private getIfStripHidden(key: string): boolean {\n const storageItem = sessionStorage.getItem(`cstrip_${key}`);\n return Boolean(storageItem !== '1');\n }\n\n private initData() {\n this.stripsKeyOrder = this.widgetData && this.widgetData.strips && this.widgetData.strips.map(strip => strip.key) || [];\n if (this.widgetData.loader && this.widgetData.strips.length) {\n this.showParentLoader = true;\n }\n // null check if in case no strips key in config\n if(this.widgetData && this.widgetData.strips) {\n // Fetch the data\n for (const strip of this.widgetData.strips) {\n this.processStrip(strip, [], 'fetching', false, null);\n if(strip.dataType === 'in-hand' && this.widgetData[strip.dataKey]){\n this.processStrip(\n strip,\n this.commonMethodsSvc.transformContentsToWidgets(this.widgetData[strip.dataKey], strip),\n 'done',\n true,\n strip.viewMoreUrl || '',\n );\n } else {\n if (this.checkForEmptyWidget(strip)) {\n // this.fetchStripFromRequestData(strip, false);\n } else {\n this.processStrip(strip, [], 'done', true, null);\n }\n }\n }\n }\n // Subscription for changes\n const keyAndEvent: { key: string; type: string; from: string }[] = this.widgetData.strips\n .map(strip => ({\n key: strip.key,\n type: (strip.refreshEvent && strip.refreshEvent.eventType) || '',\n from: (strip.refreshEvent && strip.refreshEvent.from.toString()) || '',\n }))\n .filter(({ key, type, from }) => key && type && from);\n const eventTypeSet = new Set(keyAndEvent.map(e => e.type));\n this.changeEventSubscription = this.eventSvc.events$\n .pipe(filter(event => eventTypeSet.has(event.eventType)))\n .subscribe(event => {\n keyAndEvent\n .filter(e => e.type === event.eventType && e.from === event.from)\n .map(e => e.key)\n .forEach(k => this.fetchStripFromKey(k, false));\n });\n }\n\n private fetchStripFromKey(key: string, calculateParentStatus = true) {\n const stripData = this.widgetData.strips.find(strip => strip.key === key);\n if (stripData) {\n // this.fetchStripFromRequestData(stripData, calculateParentStatus);\n }\n }\n\n isStripShowing(data: any) {\n let count = 0;\n if (data && data.key === this.environment.programStripKey && (!data.tabs || !data.tabs.length) &&\n data.stripTitle === this.environment.programStripName && data.widgets.length > 0) {\n data.widgets.forEach((key: any) => {\n if (key && key.widgetData.content.primaryCategory === this.environment.programStripPrimaryCategory) {\n count = count + 1;\n }\n });\n if (count > 0) {\n data.showStrip = true;\n } else {\n data.showStrip = false;\n }\n }\n return data.showStrip;\n }\n\n get isMobile() {\n return this.utilitySvc.isMobile || false;\n }\n\n getdata(data: IStripUnitCommonData) {\n if (data.stripInfo) {\n return data.stripInfo.widget;\n }\n return {};\n\n }\n checkCondition(wData: NsCommonStrip.ICommonStrip, data: IStripUnitCommonData) {\n if (wData.strips[0].stripConfig && wData.strips[0].stripConfig.hideShowAll) {\n return !wData.strips[0].stripConfig.hideShowAll;\n }\n return wData.strips[0].viewMoreUrl && data.widgets && data.widgets.length >= 4;\n }\n checkVisible(data: IStripUnitCommonData) {\n return data.stripInfo && data.stripInfo.visibilityMode === 'visible';\n }\n\n getContineuLearningLenth(data: IStripUnitCommonData) {\n return data.widgets ? data.widgets.length : 0;\n }\n getLength(data: IStripUnitCommonData) {\n if (!data.tabs || !data.tabs.length) {\n return data.widgets ? data.widgets.length : 0;\n } {\n // if tabs are there check if each tab has widgets and get the tab with max widgets\n const tabWithMaxWidgets = data.tabs.reduce(\n (prev, current) => {\n if (!prev.widgets && !current.widgets) {\n return current;\n }\n if (prev.widgets && current.widgets) {\n return (prev.widgets.length > current.widgets.length) ? prev : current;\n }\n if (current.widgets && !prev.widgets) {\n return current;\n }\n if (!current.widgets && prev.widgets) {\n return prev;\n }\n return current;\n // return (prev.widgets && current.widgets && (prev.widgets.length > current.widgets.length) ) ? prev : current\n // tslint:disable-next-line: align\n }, data.tabs[0]);\n // if tabs has atleast 1 widgets then strip will show or else not\n return tabWithMaxWidgets.widgets ? tabWithMaxWidgets.widgets.length : 0;\n }\n }\n \n private async processStrip(\n strip: NsCommonStrip.ICommonStripUnit,\n results: NsWidgetResolver.IRenderConfigWithAnyData[] = [],\n fetchStatus: TFetchStatus,\n calculateParentStatus = true,\n _viewMoreUrl: any,\n tabsResults?: NsCommonStrip.ICommonStripTab[] | undefined,\n // calculateParentStatus is used so that parents' status is not re-calculated if the API is called again coz of filters, etc.\n ) {\n const stripData = {\n viewMoreUrl: strip.viewMoreUrl,\n key: strip.key,\n canHideStrip: Boolean(strip.canHideStrip),\n showStrip: this.getIfStripHidden(strip.key),\n noDataWidget: strip.noDataWidget,\n errorWidget: strip.errorWidget,\n stripInfo: strip.info,\n stripTitle: strip.title,\n stripTitleLink: strip.stripTitleLink,\n dataType: strip.dataType,\n dataKey: strip.dataKey,\n disableTranslate: strip.disableTranslate,\n sliderConfig: strip.sliderConfig,\n tabs: tabsResults ? tabsResults : strip.tabs,\n stripName: strip.name,\n mode: strip.mode,\n stripConfig: strip.stripConfig,\n stripBackground: strip.stripBackground,\n secondaryHeading: strip.secondaryHeading,\n loaderWidgets: strip.loaderWidgets || [],\n widgets:\n fetchStatus === 'done'\n ? [\n ...(strip.preWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ...results,\n ...(strip.postWidgets || []).map(w => ({\n ...w,\n widgetHostClass: `mb-2 ${w.widgetHostClass}`,\n })),\n ]\n : [],\n showOnNoData: Boolean(\n strip.noDataWidget &&\n !((strip.preWidgets || []).length + results.length + (strip.postWidgets || []).length) &&\n fetchStatus === 'done',\n ),\n showOnLoader: Boolean(strip.loader && fetchStatus === 'fetching'),\n showOnError: Boolean(strip.errorWidget && fetchStatus === 'error'),\n };\n // const stripData = this.stripsResultDataMap[strip.key]\n this.stripsResultDataMap = {\n ...this.stripsResultDataMap,\n [strip.key]: stripData,\n };\n if (!tabsResults) {\n if (\n calculateParentStatus &&\n (fetchStatus === 'done' || fetchStatus === 'error') &&\n stripData.widgets\n ) {\n this.checkParentStatus(fetchStatus, stripData.widgets.length);\n }\n if (calculateParentStatus && !(results && results.length > 0)) {\n this.contentAvailable = false;\n } else if (results && results.length > 0) {\n this.contentAvailable = true;\n }\n } else {\n this.contentAvailable = true;\n }\n }\n\n getSelectedIndex(stripsResultDataMap: any, key: any): number {\n let returnValue = 0;\n if (key === 'cbpPlan') {\n if (stripsResultDataMap.tabs.length) {\n const data = stripsResultDataMap.tabs.filter((ele: any) => ele.value === 'upcoming');\n returnValue = data[0].widgets && data[0].widgets.length > 0 ? 1 : 0;\n }\n }\n return returnValue;\n }\n \n private checkParentStatus(fetchStatus: TFetchStatus, stripWidgetsCount: number): void {\n if (fetchStatus === 'done' && !stripWidgetsCount) {\n this.noDataCount += 1;\n } else if (fetchStatus === 'done' && stripWidgetsCount) {\n this.successDataCount += 1;\n } else if (fetchStatus === 'error') {\n this.errorDataCount += 1;\n }\n const settledCount = this.noDataCount + this.successDataCount + this.errorDataCount;\n const totalCount = this.widgetData.strips.length;\n if (this.successDataCount > 0 && settledCount < totalCount) {\n return;\n }\n this.showParentLoader = settledCount !== totalCount;\n this.showParentNoData =\n this.noDataCount > 0 && this.noDataCount + this.errorDataCount === totalCount;\n this.showParentError = this.errorDataCount === totalCount;\n }\n checkForEmptyWidget(strip: NsCommonStrip.ICommonStripUnit): boolean {\n if (\n strip.request &&\n ((strip.request.api && Object.keys(strip.request.api).length) ||\n (strip.request.search && Object.keys(strip.request.search).length) ||\n (strip.request.searchRegionRecommendation &&\n Object.keys(strip.request.searchRegionRecommendation).length) ||\n (strip.request.searchV6 && Object.keys(strip.request.searchV6).length) ||\n (strip.request.enrollmentList && Object.keys(strip.request.enrollmentList).length) ||\n (strip.request.cbpList && Object.keys(strip.request.cbpList).length) ||\n (strip.request.trendingSearch && Object.keys(strip.request.trendingSearch).length)\n )\n ) {\n return true;\n }\n return false;\n }\n\n public tabClicked(tabEvent: MatTabChangeEvent, stripMap: IStripUnitCommonData, stripKey: string) {\n\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '');\n }\n\n identify(index: number, item: any) {\n if (index >= 0) { }\n return item;\n }\n tracker(index: number, item: any) {\n if (index >= 0) { }\n return _.get(item, 'widgetData.content.identifier')\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CommonStripComponent } from './common-strip.component';\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2';\nimport {\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule} from '@angular/material';\nimport { RouterModule } from '@angular/router';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { HttpClient } from '@angular/common/http';\nimport { HttpLoaderFactory } from '../content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { HorizontalScrollerV2Module } from '../horizontal-scroller-v2/horizontal-scroller-v2.module';\n\n@NgModule({\n declarations: [CommonStripComponent],\n imports: [\n SbUiResolverModule,\n CommonModule,\n RouterModule,\n HorizontalScrollerV2Module,\n MatProgressSpinnerModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatTooltipModule,\n MatListModule,\n MatSidenavModule,\n MatCardModule,\n MatExpansionModule,\n MatRadioModule,\n MatChipsModule,\n MatInputModule,\n MatFormFieldModule,\n MatDialogModule,\n MatSnackBarModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatTableModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatAutocompleteModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ],\n exports: [CommonStripComponent]\n})\nexport class CommonStripModule { }\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-announcements',\n templateUrl: './announcements.component.html',\n styleUrls: ['./announcements.component.scss']\n})\nexport class AnnouncementsComponent implements OnInit {\n\n @Input() objectData: any\n @Input() layoutType: any\n @Input() mobileHeight: boolean = false\n @Output() openDialog = new EventEmitter<any>()\n isLoading: boolean = false\n\n constructor() { \n this.isLoading = true\n }\n\n ngOnInit() {\n\n setTimeout(() => {\n this.isLoading = false\n }, 10000);\n }\n\n viewMoreOrLess(item: any) {\n if (item.value.length > 152) {\n item.expanded = !item.expanded\n }\n }\n\n openAnnouncements() {\n this.openDialog.emit(true)\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { AnnouncementsComponent } from './announcements.component';\nimport { MatIconModule } from '@angular/material';\n\n\n\n@NgModule({\n declarations: [AnnouncementsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n SkeletonLoaderLibModule\n ],\n exports: [AnnouncementsComponent],\n})\nexport class AnnouncementsModule { }","import { NgModule } from '@angular/core';\nimport { ConsumptionComponent } from './consumption.component';\nimport { ContentStripWithTabsLibModule } from './_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module';\nimport { SlidersLibModule } from '../lib/_common/sliders/sliders.module';\nimport { DataPointsModule } from './_common/data-points/data-points.module';\nimport { CalenderModule } from './_common/calender/calender.module';\nimport { CommonStripModule } from './_common/common-strip/common-strip.module';\nimport { AnnouncementsModule } from './_common/announcements/announcements.module';\n\n\n\n@NgModule({\n declarations: [ConsumptionComponent],\n imports: [\n ContentStripWithTabsLibModule,\n SlidersLibModule\n ],\n exports: [ConsumptionComponent,\n ContentStripWithTabsLibModule,\n SlidersLibModule,\n DataPointsModule,\n CalenderModule,\n CommonStripModule,\n AnnouncementsModule\n ],\n})\nexport class ConsumptionModule { }\n","export const ROOT_WIDGET_CONFIG = {\n \n card: {\n _type: 'cardLib',\n cardResource: 'cardContentLib'\n },\n}\n","import { NsContent } from './widget-content.model';\n\nexport namespace NsCardContent {\n export interface ICard {\n content: NsContent.IContent;\n cardSubType: TCardSubType;\n context: { pageSection: string; position?: number };\n intranetMode?: 'greyOut' | 'hide';\n deletedMode?: 'greyOut' | 'hide';\n likes?: number;\n contentTags?: IContentTags;\n stateData: any;\n cardCustomeClass?: any;\n }\n\n export interface IContentTags {\n daysSpan?: number;\n excludeContentType?: NsContent.EContentTypes[];\n excludeMimeType?: string[];\n tag: string;\n criteriaField?: string;\n }\n\n export type TCardSubType =\n | 'standard'\n | 'minimal'\n | 'space-saving'\n | 'card-user-details'\n | 'basic-info'\n | 'basic-details'\n | 'card-description-back'\n | 'network-card'\n | 'user-card';\n\n export enum EContentStatus {\n LIVE = 'Live',\n EXPIRED = 'Expired',\n DELETED = 'Deleted',\n MARK_FOR_DELETION = 'MarkedForDeletion',\n }\n export enum ACBPConst {\n UPCOMING = 'upcoming',\n ALL = 'All',\n OVERDUE = 'overdue',\n SUCCESS = 'success',\n }\n\n export enum IGOTConst {\n COMPETENCIES = 'competencies_v5',\n RETIRED = 'Retired',\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { WidgetBaseComponent, NsWidgetResolver } from '@sunbird-cb/resolver-v2';\nimport { NsCardContent } from '../../_models/card-content.model';\nimport { UtilityService } from '@sunbird-cb/utils-v2';\nimport { ConfigurationsService } from '../../_services/configurations.service';\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-cards',\n templateUrl: './cards.component.html',\n styleUrls: ['./cards.component.scss']\n})\nexport class CardsComponent extends WidgetBaseComponent\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\n\n @Input() widgetData!: NsCardContent.ICard;\n isIntranetAllowedSettings = false\n cbPlanMapData: any\n cbPlanInterval: any\n constructor(private utilitySvc: UtilityService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,\n public router: Router\n ) {\n super();\n }\n\n ngOnInit() {\n this.cbPlanInterval = setInterval(() => {\n this.getCbPlanData()\n }, 1000)\n }\n\n get isLiveOrMarkForDeletion() {\n if (\n !this.widgetData.content.status ||\n this.widgetData.content.status === 'Live' ||\n this.widgetData.content.status === 'MarkedForDeletion'\n ) {\n return true\n }\n return false\n }\n\n get showIntranetContent() {\n if (this.widgetData.content.isInIntranet && this.utilitySvc.isMobile) {\n return !this.isIntranetAllowedSettings\n }\n return false\n }\n async getRedirectUrlData(content: any){\n let urlData = await this.contSvc.getResourseLink(content)\n this.router.navigate(\n [urlData.url],\n {\n queryParams: urlData.queryParams\n })\n }\n getCbPlanData() {\n let cbpList: any={}\n if (localStorage.getItem('cbpData')) {\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\n if (cbpListArr && cbpListArr.length) {\n cbpListArr.forEach((data: any) => {\n cbpList[data.identifier] = data\n })\n }\n this.cbPlanMapData = cbpList\n // this.karmaPointLoading = false\n clearInterval(this.cbPlanInterval)\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2';\nimport { NsCardContent } from '../../../_models/card-content.model';\n\n@Component({\n selector: 'ws-cb-widget-card-resource',\n templateUrl: './card-resource.component.html',\n styleUrls: ['./card-resource.component.scss'],\n})\nexport class CardResourceComponent extends WidgetBaseComponent\nimplements OnInit, NsWidgetResolver.IWidgetData<NsCardContent.ICard> {\n\n @Input() widgetData!: NsCardContent.ICard;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\nimport { WidgetContentService } from '../../../_services/widget-content.service';\n\n@Component({\n selector: 'sb-uic-card-portrait',\n templateUrl: './card-portrait.component.html',\n styleUrls: ['./card-portrait.component.scss']\n})\nexport class CardPortraitComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,\n private contSvc: WidgetContentService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contSvc.changeTelemetryData(contentData)\n this.contentData.emit(contentData)\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'pipePublicURL',\n})\nexport class PipePublicURL implements PipeTransform {\n environment: any\n constructor(\n @Inject('environment') environment: any,){\n this.environment = environment\n }\n\n transform(value: string): any {\n const mainUrl = value && value.split('/content').pop() || ''\n const finalURL = `${this.environment.contentHost}/${this.environment.contentBucket}/content${mainUrl}`\n return value ? finalURL : ''\n }\n\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { PipePublicURL } from './pipe-public-URL.pipe'\n\n@NgModule({\n declarations: [PipePublicURL],\n imports: [\n CommonModule,\n ],\n exports: [PipePublicURL],\n})\nexport class PipePublicURLModule { }\n","import { Component, OnInit, Input } from '@angular/core'\nimport { NsContent } from '../../_models/widget-content.model'\nimport { MultilingualTranslationsService } from '../../_services/multilingual-translations.service'\n\n@Component({\n selector: 'sb-uic-display-content-type',\n templateUrl: './display-content-type-lib.component.html',\n styleUrls: ['./display-content-type-lib.component.scss'],\n})\nexport class DisplayContentTypeLibComponent implements OnInit {\n\n @Input() displayContentType: NsContent.EDisplayContentTypes = NsContent.EDisplayContentTypes.DEFAULT\n displayContentTypeEnum = NsContent.EDisplayContentTypes\n constructor(private langtranslations: MultilingualTranslationsService) { }\n\n ngOnInit() {\n }\n\n translateLabels(label: string, type: any) {\n return this.langtranslations.translateLabel(label, type, '')\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { DisplayContentTypeLibComponent } from './display-content-type-lib.component'\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms'\n\n@NgModule({\n declarations: [DisplayContentTypeLibComponent],\n imports: [CommonModule, ReactiveFormsModule, FormsModule],\n exports: [DisplayContentTypeLibComponent],\n})\nexport class DisplayContentTypeLibModule {}\n","import { Directive, Input, HostListener, HostBinding, OnChanges } from '@angular/core'\r\n\r\n@Directive({\r\n selector: '[wsUtilsDefaultThumbnail]',\r\n})\r\nexport class DefaultThumbnailDirective implements OnChanges {\r\n\r\n @Input() wsUtilsDefaultThumbnail = ''\r\n @Input() src = ''\r\n isSrcUpdateAttemptedForDefault = false\r\n\r\n @HostBinding('src') srcUrl = ''\r\n @HostListener('error') updateSrc() {\r\n if (!this.isSrcUpdateAttemptedForDefault) {\r\n this.srcUrl = this.wsUtilsDefaultThumbnail\r\n this.isSrcUpdateAttemptedForDefault = true\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n if (this.src) {\r\n this.srcUrl = this.src\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { DefaultThumbnailDirective } from './default-thumbnail.directive'\r\n\r\n@NgModule({\r\n declarations: [DefaultThumbnailDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [DefaultThumbnailDirective],\r\n})\r\nexport class DefaultThumbnailModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\nimport * as moment from 'moment'\r\n\r\n@Pipe({\r\n name: 'pipeDurationTransform',\r\n})\r\nexport class PipeDurationTransformPipe implements PipeTransform {\r\n\r\n transform(data: number, type: 'time24' | 'hms' | 'hour' | 'hms2H' | 'hms2M'| 'day'): any {\r\n if (data <= 0) {\r\n return ''\r\n }\r\n const h = Math.floor(data / 3600)\r\n const m = Math.floor((data % 3600) / 60)\r\n const s = Math.floor((data % 3600) % 60)\r\n let duration = ''\r\n switch (type) {\r\n case 'time24':\r\n return this.defaultDuration(h, m, s)\r\n case 'hms':\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n case 'hms2H':\r\n /**to Print HH:mm:ss */\r\n const duration2 = moment.duration(data, 'seconds')\r\n const resultstring = moment.utc(duration2.asMilliseconds()).format('HH:mm:ss')\r\n return resultstring\r\n case 'hms2M': /**to Print mm:ss */\r\n const duration2H = moment.duration(data, 'seconds')\r\n const resultstring2H = moment.utc(duration2H.asMilliseconds()).format('mm:ss')\r\n\r\n return resultstring2H\r\n case 'hour':\r\n if (h === 0) {\r\n duration += 'less than an hour'\r\n }\r\n if (h === 1) {\r\n duration += `${h} hour`\r\n }\r\n if (h > 1) {\r\n duration += `${h} hours`\r\n }\r\n return duration\r\n case 'day':\r\n if (h > 24) {\r\n const duration3 = moment.duration(data, 'seconds')\r\n return `${duration3.days()} day(s)`\r\n }\r\n return this.hmsCalculation(h, m, s, duration, type)\r\n\r\n default:\r\n return this.defaultDuration(h, m, s)\r\n }\r\n }\r\n\r\n defaultDuration(h: number, m: number, s: number) {\r\n let duration = ''\r\n duration += h > 0 ? `${h.toString().padStart(2)}:` : ''\r\n duration += m > 0 ? `${m.toString().padStart(2)}:` : '00:'\r\n duration += s > 0 ? s.toString().padStart(2) : '00'\r\n return duration\r\n }\r\n hmsCalculation(h: number, m: number, s: number, dur: string, type: string) {\r\n let space = ''\r\n let duration = dur\r\n if (h > 0) {\r\n duration += type === 'hms' ? `${h}h` : `${h} hr`\r\n }\r\n if (m > 0) {\r\n if (h > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${m}m` : `${space}${m} min`\r\n }\r\n if (s > 0 && h === 0) {\r\n if (m > 0) {\r\n space = ' '\r\n }\r\n duration += type === 'hms' ? `${space}${s}s` : `${space}${s} sec`\r\n }\r\n return duration\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core'\r\nimport { CommonModule } from '@angular/common'\r\nimport { PipeDurationTransformPipe } from './pipe-duration-transform.pipe'\r\n\r\n@NgModule({\r\n declarations: [PipeDurationTransformPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [PipeDurationTransformPipe],\r\n})\r\nexport class PipeDurationTransformModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardUser } from '../../../_models/card-users.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-user',\n templateUrl: './card-user.component.html',\n styleUrls: ['./card-user.component.scss']\n})\nexport class CardUserComponent implements OnInit {\n @Input() widgetData!: NsCardUser.ICard;\n @Output() userData = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n }\n }\n\n getRedirectUrlData(userData: any){\n this.userData.emit(userData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\n },\n {\n id: this.widgetData.content.userId,\n // type: this.widgetData.user.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n // ver: `${this.widgetData.user.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase('user')}-card`,\n module: _.camelCase('user'),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n \n@Component({\n selector: 'sb-uic-card-landscape',\n templateUrl: './card-landscape.component.html',\n styleUrls: ['./card-landscape.component.scss']\n})\nexport class CardLandscapeComponent implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n defaultThumbnail: any\n acbpConstants = NsCardContent.ACBPConst\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n cbPlanMapData: any\n cbPlanInterval: any\n \n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.cbPlanInterval = setInterval(() => {\n this.getCbPlanData()\n }, 1000)\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n getCbPlanData() {\n let cbpList: any={}\n if (localStorage.getItem('cbpData')) {\n let cbpListArr = JSON.parse(localStorage.getItem('cbpData') || '')\n if (cbpListArr && cbpListArr.length) {\n cbpListArr.forEach((data: any) => {\n cbpList[data.identifier] = data\n })\n }\n this.cbPlanMapData = cbpList\n // this.karmaPointLoading = false\n clearInterval(this.cbPlanInterval)\n }\n }\n\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-wide',\n templateUrl: './card-wide.component.html',\n styleUrls: ['./card-wide.component.scss']\n})\nexport class CardWideComponent implements OnInit {\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n \n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\n\n@Component({\n selector: 'sb-uic-card-mdo-channel',\n templateUrl: './card-mdo-channel.component.html',\n styleUrls: ['./card-mdo-channel.component.scss']\n})\nexport class CardMDOChannelComponent implements OnInit {\n @Input() widgetData!: NsContent.IContent;\n @Output() userData = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\n },\n {\n id: this.widgetData.content.userId,\n // type: this.widgetData.user.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n // ver: `${this.widgetData.user.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase('user')}-card`,\n module: _.camelCase('user'),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NsCardContent } from '../../../_models/card-content.model';\nimport { MatSnackBar } from '@angular/material';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultilingualTranslationsService } from '../../../_services/multilingual-translations.service';\n\n@Component({\n selector: 'sb-uic-card-wide-v2',\n templateUrl: './card-wide-v2.component.html',\n styleUrls: ['./card-wide-v2.component.scss']\n})\nexport class CardWideV2Component implements OnInit {\n\n @Input() widgetData!: NsCardContent.ICard;\n @Input() isLiveOrMarkForDeletion: any\n @Input() showIntranetContent: any\n @Input() isIntranetAllowedSettings: any\n @Input() cbPlanMapData: any\n @Input() isCardLoading: boolean = false\n @Output() contentData = new EventEmitter<any>()\n isCardFlipped:boolean = false\n acbpConstants = NsCardContent.ACBPConst\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n showFlip = false\n widgetType: any = 'df'\n widgetSubType: any ='sdf'\n constructor(\n private snackBar: MatSnackBar,\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n }\n\n showSnackbar() {\n if (this.showIntranetContent) {\n this.snackBar.open('Content is only available in intranet', 'X', { duration: 2000 })\n } else if (!this.isLiveOrMarkForDeletion) {\n this.snackBar.open('Content may be expired or deleted', 'X', { duration: 2000 })\n }\n }\n getRedirectUrlData(contentData: any){\n this.contentData.emit(contentData)\n }\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n },\n {\n id: this.widgetData.content.identifier,\n type: this.widgetData.content.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n ver: `${this.widgetData.content.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase(this.widgetData.content.primaryCategory)}-card`,\n module: _.camelCase(this.widgetData.content.primaryCategory),\n })\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport * as _ from \"lodash\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfigurationsService, EventService, MultilingualTranslationsService, NsContent } from '@sunbird-cb/utils-v2';\n\n@Component({\n selector: 'sb-uic-card-karma-programs',\n templateUrl: './card-karma-programs.component.html',\n styleUrls: ['./card-karma-programs.component.scss']\n})\nexport class CardKarmaProgramsComponent implements OnInit {\n\n @Input() widgetData!: NsContent.IContent;\n @Input() randomColorApply: boolean = false\n @Output() userData = new EventEmitter<any>()\n defaultThumbnail: any\n sourceLogos: any\n defaultSLogo: any\n widgetType: any = ''\n widgetSubType: any =''\n randomColors: any = [\n '#EF941D',\n '#F97440',\n '#35B5B0',\n '#9988FF',\n '#254092',\n '#926525',\n '#4F72DF'\n ]\n\n constructor(\n private events: EventService,\n private translate: TranslateService,\n private langtranslations: MultilingualTranslationsService,\n private configSvc: ConfigurationsService,) { \n this.langtranslations.languageSelectedObservable.subscribe(() => {\n if (localStorage.getItem('websiteLanguage')) {\n this.translate.setDefaultLang('en')\n const lang = localStorage.getItem('websiteLanguage')!\n this.translate.use(lang)\n }\n })\n }\n\n ngOnInit() {\n const instanceConfig = this.configSvc.instanceConfig\n if (instanceConfig) {\n this.defaultThumbnail = instanceConfig.logos.defaultContent || ''\n this.sourceLogos = instanceConfig.sources\n this.defaultSLogo = instanceConfig.logos.defaultSourceLogo || ''\n } else {\n this.defaultThumbnail = '/assets/instances/eagle/app_logos/default.png'\n this.defaultSLogo = '/assets/instances/eagle/app_logos/KarmayogiBharat_Logo.svg'\n }\n this.setRandomColor()\n }\n\n setRandomColor(){\n if(this.widgetData && this.widgetData.content) {\n if(this.randomColorApply){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n this.widgetData.content['bgColor'] = this.randomColors[randomIndex1]\n }else {\n this.widgetData.content['bgColor'] = '#1a4ca1'\n }\n }\n console.log( this.widgetData.content, this.randomColorApply)\n }\n\n raiseTelemetry() {\n // if(this.forPreview){\n // return\n // }\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: `${this.widgetType}-${this.widgetSubType}`,\n id: `${_.camelCase(this.widgetData.content.userId)}-card`,\n },\n {\n id: this.widgetData.content.userId,\n // type: this.widgetData.user.primaryCategory,\n //context: this.widgetData.context,\n rollup: {},\n // ver: `${this.widgetData.user.version}${''}`,\n },\n {\n pageIdExt: `${_.camelCase('user')}-card`,\n module: _.camelCase('user'),\n })\n }\n\n get getRandomColors(){\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomColors.length))\n return this.randomColors[randomIndex1]\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-card-karma-program-v2',\n templateUrl: './card-karma-program-v2.component.html',\n styleUrls: ['./card-karma-program-v2.component.scss']\n})\nexport class CardKarmaProgramV2Component implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule, MatCardModule, MatIconModule, 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 { 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';\nimport { CardKarmaProgramV2Component } from './card-karma-program-v2/card-karma-program-v2.component';\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 CardKarmaProgramV2Component\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatCardModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n RouterModule,\r\n PipePublicURLModule,\r\n DisplayContentTypeLibModule,\r\n DefaultThumbnailModule,\r\n PipeDurationTransformModule,\r\n SkeletonLoaderLibModule\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 ],\r\n})\r\nexport class CardsModule { }\r\n","import { NsWidgetResolver } from '@sunbird-cb/resolver-v2'\nimport { ROOT_WIDGET_CONFIG } from './consumption.config'\n// Components\nimport { CardsComponent } from './_common/cards/cards.component'\nimport { CardsModule } from './_common/cards/cards.module'\n\n\nexport const WIDGET_REGISTERED_LIB_MODULES = [\n CardsModule\n]\n\nexport const WIDGET_REGISTRATION_LIB_CONFIG: NsWidgetResolver.IRegistrationConfig[] = [\n {\n widgetType: ROOT_WIDGET_CONFIG.card._type,\n widgetSubType: ROOT_WIDGET_CONFIG.card.cardResource,\n component: CardsComponent,\n }\n]\n","import { Injectable } from '@angular/core'\nimport { HttpClient } from '@angular/common/http'\nimport { Observable } from 'rxjs'\n\nconst API_POINTS = {\n COMPETENCY_LIST: `apis/proxies/v8/competency/v4/search`,\n CERTIFICATE_URL: `apis/protected/v8/cohorts/course/batch/cert/download/`,\n}\n\n@Injectable({ providedIn: 'root' })\n\nexport class CompetencyPassbookService {\n // tslint: disable-next-line: whitespace\n constructor(private http: HttpClient) { }\n getCompetencyList(payload: any): Observable<any> {\n return this.http.post(API_POINTS.COMPETENCY_LIST, payload)\n }\n\n fetchCertificate(certId: string): Observable<any> {\n return this.http.get(API_POINTS.CERTIFICATE_URL + certId)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ConfigurationsService, EventService } from '@sunbird-cb/utils-v2';\nimport { WidgetContentService } from '../../_services/widget-content.service';\nimport { CompetencyPassbookService } from './competency-passbook.service';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'sb-uic-competency-passbook',\n templateUrl: './competency-passbook.component.html',\n styleUrls: ['./competency-passbook.component.scss']\n})\nexport class CompetencyPassbookComponent implements OnInit {\n\n @Input() objectData: any\n @Input() providerId: any\n @Input() cardDisplayCount: any = 3\n @Input() dynamicClass: any\n @Input() dynamicColor: any\n @Input() dynamicAlignPills: any = 'center'\n @Output() emptyResponse = new EventEmitter<any>()\n loadCometency: boolean = false\n loadCompetencyArea: boolean = false\n originalCompetencyArray: any\n competencyArea: any []\n selectedValue: any;\n competencyVersion:string = ''\n competencyTheme: any = []\n allcompetencyTheme: any ={}\n competencyStrength: any = 0\n competencyThemeLength: any = 6\n showAllTheme : any = [{name:'Show all', showAll: false}]\n\n // subTheme = ['Behavioural']\n // currentFilter = 'Behavioural'\n // currentCompetencies: any = []\n // competencyData: any\n constructor(public configSvc: ConfigurationsService,\n public contentSvc:WidgetContentService,\n public competencySvc: CompetencyPassbookService,\n public router : Router\n ) { \n \n }\n\n \n ngOnInit() {\n this.getAllCompetencies()\n // this.competencyData = this.objectData\n // this.filter(this.currentFilter)\n }\n // filter(filterValue: string) {\n // this.currentFilter = filterValue\n // this.currentCompetencies = this.competencyData.data.filter((item: any) => item.type === filterValue)\n // }\n showMore() {\n this.objectData.viewMore = !this.objectData.viewMore\n }\n\n // to get competency area from facets\n async getCompetencyArea(){let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"channel\": [\n this.providerId\n ],\n }\n }\n this.loadCompetencyArea = true\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addfilter,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n \"competencies_v5.competencyArea\"\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n this.competencyArea = response.results.result.facets[0].values\n this.competencyStrength = this.competencyArea.reduce((partialSum: any, data: any) => partialSum + data.count, 0) \n this.selectedValue = this.competencyArea[0].name.toLowerCase()\n let addFilter = {\n \"channel\": [\n this.providerId\n ]\n }\n this.getcompetencyTheme(this.competencyArea[0].name, addFilter)\n this.loadCompetencyArea = false\n }\n }\n } catch (error) {\n this.loadCompetencyArea = false\n this.emptyResponse.emit(true)\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n async callCompetencySearch(request){\n return new Promise<any>((resolve, reject) => {\n if (request && request) {\n this.contentSvc.searchV6(request).subscribe(results => {\n resolve({ results });\n },(error: any) => {\n reject(error);\n },\n );\n }\n });\n }\n\n // competency theam change\n competencyChange(e){\n let addfilter: any = {}\n if(this.providerId) {\n addfilter = {\n \"channel\": [\n this.providerId\n ],\n }\n }\n \n this.getcompetencyTheme(e.name, addfilter)\n this.selectedValue = e.name\n }\n getAllCompetencies(){\n this.loadCometency = true\n let request = {\"search\":{\"type\":\"Competency Area\"},\"filter\":{\"isDetail\":true}}\n this.competencySvc.getCompetencyList(request).subscribe((response: any) => {\n this.allcompetencyTheme = {}\n if(response && response.result && response.result.competency) {\n this.originalCompetencyArray = response.result.competency\n\n this.getCompetencyArea()\n response.result.competency.forEach(element => {\n element.children.forEach((childEle) => {\n let name = childEle.name.toLowerCase()\n this.allcompetencyTheme[name] = childEle\n this.allcompetencyTheme[name]['viewMore'] = false\n });\n });\n }\n this.loadCometency = false\n })\n }\n\n async getcompetencyTheme(value: any,addFilter?: any) {\n let request = {\n \"request\": {\n \"query\": \"\",\n \"filters\": {\n \"contentType\":\"Course\",\n ...addFilter,\n \"competencies_v5.competencyArea\" : value,\n \"status\": [\n \"Live\"\n ]\n },\n \"sort_by\": {\n \"lastUpdatedOn\": \"desc\"\n },\n \"facets\": [\n \"competencies_v5.competencyTheme\"\n ],\n \"limit\": 0,\n \"offset\": 0,\n \"fields\": [\n ]\n }\n }\n \n try {\n this.loadCometency = true\n const response = await this.callCompetencySearch(request);\n if (response && response.results) {\n if(response.results.result.facets){\n let competencyThemeData : any = response.results.result.facets[0].values \n this.originalCompetencyArray.forEach((element: any) => {\n if(element.name.toLowerCase() === value) {\n this.competencyTheme = competencyThemeData.filter((ele1: any) => {\n return element.children.find((ele2: any) => ele2.name.toLowerCase() === ele1.name.toLowerCase())\n })\n this.showAllTheme = [{name:'Show all', showAll: false}]\n this.competencyThemeLength = 6\n }\n });\n this.resetViewMore()\n }\n this.loadCometency = false\n }\n } catch (error) {\n // Handle errors\n // console.error('Error:', error);\n }\n }\n\n resetViewMore(){\n Object.keys(this.allcompetencyTheme).forEach((comp: any) => {\n this.allcompetencyTheme[comp]['viewMore'] = false\n })\n }\n viewMoreChildren(data: any) {\n data.viewMore = !data.viewMore\n this.allcompetencyTheme[data.name.toLowerCase()].viewMore = data.viewMore\n }\n displayAllTheme(event: any) {\n this.showAllTheme[0]['showAll'] = !event.showAll \n this.competencyThemeLength = event.showAll ? this.competencyTheme.length : 6\n this.showAllTheme[0]['name'] = event.showAll ? 'Show less' : 'Show all'\n }\n\n navigateToCompetency(compData: any){\n this.router.navigateByUrl(`app/learn/browse-by/competency/${compData.name}`)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'sb-uic-pills',\n templateUrl: './pills.component.html',\n styleUrls: ['./pills.component.scss']\n})\nexport class PillsComponent implements OnInit {\n\n @Input() pillsData: any\n @Input() selectedValue: any\n @Input() isLoading: boolean = false\n @Output() pillClick = new EventEmitter<any>()\n @Input() dynamicClass: any = ''\n @Input() dynamicColor: any = ''\n @Input() requiredTitlecase: boolean = true\n\n constructor() { }\n\n ngOnInit() {\n }\n selectedPill(pillData: any) {\n this.pillClick.emit(pillData)\n }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule } from '@angular/material';\nimport { PillsComponent } from './pills.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [PillsComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule\n ],\n exports: [PillsComponent]\n})\nexport class PillsModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CompetencyPassbookComponent } from './competency-passbook.component';\nimport { MatIconModule } from '@angular/material';\nimport { PillsModule } from './../pills/pills.module';\nimport { CompetencyPassbookService } from './competency-passbook.service';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\n\n\n\n@NgModule({\n declarations: [CompetencyPassbookComponent],\n imports: [\n CommonModule,\n MatIconModule,\n PillsModule,\n SkeletonLoaderLibModule\n ],\n exports: [CompetencyPassbookComponent],\n providers:[CompetencyPassbookService]\n})\nexport class CompetencyPassbookModule { }\n","import { Injectable } from '@angular/core'\nimport { Observable, of } from 'rxjs'\nimport { HttpClient } from '@angular/common/http'\nimport { NsAppRating } from '../_models/rating.model'\n\nconst PROXY_SLAG_V8 = '/apis/proxies/v8'\nconst API_END_POINTS = {\n GET_RATING: (contentId: string, contentType: string, userId: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/${contentType}/${userId}`,\n ADD_OR_UPDATE: `${PROXY_SLAG_V8}/ratings/v1/upsert`,\n GET_RATING_SUMMARY: (contentId: string, contentType: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/summary/${contentId}/${contentType}`,\n GET_RATING_LOOKUP: `${PROXY_SLAG_V8}/ratings/v1/ratingLookUp`,\n GET_AUTHOR_REPLY: (contentId: string, userID: string) =>\n `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/Course/${userID}`,\n POST_AUTHOR_REPLY: `${PROXY_SLAG_V8}/ratings/v2/read`,\n}\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class RatingService {\n\n constructor(public http: HttpClient) { }\n\n getRating(contentId: string, contentType: string, userId: string): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.get<any>(\n API_END_POINTS.GET_RATING(contentId, contentType, userId)\n )\n }\n return of({})\n }\n\n addOrUpdateRating(req: NsAppRating.IRating): Observable<any> {\n return this.http.post<any>(\n API_END_POINTS.ADD_OR_UPDATE, req\n )\n }\n\n getRatingSummary(contentId: string, contentType: string): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.get<any>(\n API_END_POINTS.GET_RATING_SUMMARY(contentId, contentType)\n )\n }\n return of({})\n }\n\n getRatingLookup(req: NsAppRating.ILookupRequest): Observable<any> {\n return this.http.post<any>(\n API_END_POINTS.GET_RATING_LOOKUP, req\n )\n }\n\n getRatingReply(req: any): Observable<any> {\n const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true')\n if (!forPreview) {\n return this.http.post<any>(\n API_END_POINTS.POST_AUTHOR_REPLY, req\n )\n }\n return of({})\n }\n\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\n if (avg) {\n const avgRating = avg\n const ratingFloor = Math.floor(avgRating)\n // const difference = avgRating - ratingIndex\n if (ratingIndex <= ratingFloor) {\n return 'star'\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\n return 'star_half'\n }\n }\n return 'star'\n }\n\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\n if (avg) {\n const avgRating = avg\n const ratingFloor = Math.floor(avgRating)\n if (ratingIndex <= ratingFloor) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 >= 0.29 && avgRating % 1 < 0.71) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 > 0.71) {\n return true\n }\n if (ratingFloor === ratingIndex - 1 && avgRating % 1 < 0.29) {\n return false\n }\n }\n return false\n }\n\n getAuthorReply(contentId: string, userID: string): Observable<any> {\n return this.http.get<any>(\n API_END_POINTS.GET_AUTHOR_REPLY(contentId, userID)\n )\n }\n}\n","import { Directive, Input, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[sbUicScrollableItem]'\n})\nexport class ScrollableItemDirective {\n\n @Input('sbUicScrollableItem') public key: string\n constructor(private el: ElementRef<HTMLElement>) {}\n\n public scrollIntoView(blockValue: any) {\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: blockValue });\n }\n\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nconst API_END_POINTS = {\n TOP_REVIEWS: `/apis/proxies/v8/ratings/v1/topReviews`\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class UserContentRatingLibService {\n\n constructor(private http: HttpClient) { }\n fetchTopReviews(doId: any): Observable<any> {\n return this.http.get<any>(`${API_END_POINTS.TOP_REVIEWS}/${doId}`)\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { RatingService } from '../../_services/rating.service';\nimport { ScrollableItemDirective } from './../../_directives/scrollable-item/scrollable-item.directive';\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\n\n@Component({\n selector: 'sb-uic-user-content-rating',\n templateUrl: './user-content-rating-lib.component.html',\n styleUrls: ['./user-content-rating-lib.component.scss']\n})\nexport class UserContentRatingLibComponent implements OnInit {\n currentIndex: any =0\n @Input() providerId : any = ''\n @Input() formData : any = ''\n @Output() emptyResponse = new EventEmitter<any>()\n styleData: any = {} \n contentdata: any = []\n\n\n @ViewChildren(ScrollableItemDirective) scrollableItems: QueryList<ScrollableItemDirective>\n constructor(public ratingService: RatingService,\n public userRatingSvc: UserContentRatingLibService\n ) { }\n\n ngOnInit() {\n this.styleData = this.formData && this.formData.sliderData && this.formData.sliderData.styleData\n this.getTopReviews();\n }\n\n getTopReviews() {\n this.contentdata = []\n this.userRatingSvc.fetchTopReviews(this.providerId).subscribe((response: any) => {\n if(response && response.result && response.result.content.length) {\n response.result.content.forEach((contentEle: any) => {\n let localData = {}\n localData['content'] = contentEle.contentInfo\n localData['rating'] = contentEle.rating\n localData['review'] = contentEle.review\n localData['userDetails'] = contentEle.userDetails\n localData['cardSubType'] = \"card-wide-lib\"\n localData['cardCustomeClass'] = \"\"\n this.contentdata.push(localData)\n });\n } else {\n this.emptyResponse.emit(true)\n }\n },(_error: any)=> {\n this.emptyResponse.emit(true)\n })\n }\n\n getRatingIcon(ratingIndex: number, avg: number): 'star' | 'star_border' | 'star_half' {\n return this.ratingService.getRatingIcon(ratingIndex, avg)\n }\n getRatingIconClass(ratingIndex: number, avg: number): boolean {\n return this.ratingService.getRatingIconClass(ratingIndex, avg)\n }\n\n getCurrentIndex(indexValue: any) {\n this.currentIndex = indexValue\n this.handleScrollClick(indexValue)\n }\n\n handleScrollClick(dataValue: string) {\n const item = this.scrollableItems.find(x => x.key === dataValue)\n item.scrollIntoView(\"nearest\");\n }\n\n}\n","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'\n\n@Component({\n selector: 'sb-uic-avatar-photo',\n templateUrl: './avatar-photo-lib.component.html',\n styleUrls: ['./avatar-photo-lib.component.scss'],\n})\nexport class AvatarPhotoLibComponent implements OnInit, OnChanges {\n @Input() datalen: any\n\n @Input()\n public photoUrl!: string\n\n @Input()\n public name!: string\n @Input() public size = ''\n @Input() public defaulfColor = ''\n @Input() randomColor = false\n @Input() initials?: string\n @Input() showBadge = false\n public showInitials = false\n public circleColor!: string\n random = Math.random().toString(36).slice(2)\n\n // public initials!: string\n\n private colors = [\n '#EB7181', // red\n '#306933', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n ]\n\n private randomcolors = [\n '#EB7181', // red\n '#006400', // green\n '#000000', // black\n '#3670B2', // blue\n '#4E9E87',\n '#7E4C8D',\n ]\n\n ngOnInit() {\n if (!this.photoUrl) {\n this.showInitials = true\n if (!this.initials) {\n this.createInititals()\n }\n if (this.datalen === 1) {\n if(this.defaulfColor) {\n this.randomcolors = [\n this.defaulfColor\n ]\n } else {\n this.randomcolors = [\n '#006400', // green\n ]\n }\n }\n const randomIndex = Math.floor(Math.random() * Math.floor(this.colors.length))\n this.circleColor = this.colors[randomIndex]\n if (this.randomColor) {\n const randomIndex1 = Math.floor(Math.random() * Math.floor(this.randomcolors.length))\n this.circleColor = this.randomcolors[randomIndex1]\n }\n }\n\n }\n ngOnChanges(change: SimpleChanges) {\n if (change.name.currentValue !== change.name.previousValue && !change.name.firstChange) {\n this.createInititals()\n }\n }\n get userInitials() {\n return this.initials\n }\n private createInititals(): void {\n let initials = ''\n const array = `${this.name} `.toString().split(' ')\n if (array[0] !== 'undefined' && typeof array[1] !== 'undefined') {\n initials += array[0].charAt(0)\n initials += array[1].charAt(0)\n } else {\n for (let i = 0; i < this.name.length; i += 1) {\n if (this.name.charAt(i) === ' ') {\n continue\n }\n\n if (this.name.charAt(i) === this.name.charAt(i)) {\n initials += this.name.charAt(i)\n\n if (initials.length === 2) {\n break\n }\n }\n }\n }\n this.initials = initials.toUpperCase()\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { RouterModule } from '@angular/router'\nimport { MatButtonModule, MatIconModule, MatMenuModule, MatRippleModule } from '@angular/material'\nimport { SbUiResolverModule } from '@sunbird-cb/resolver-v2'\nimport { AvatarPhotoLibComponent } from './avatar-photo-lib.component'\n\n@NgModule({\n declarations: [AvatarPhotoLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n MatRippleModule,\n SbUiResolverModule,\n ],\n exports: [AvatarPhotoLibComponent],\n entryComponents: [AvatarPhotoLibComponent],\n})\nexport class AvatarPhotoLibModule { }\n","import { Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core'\nimport { NsWidgetResolver, WidgetBaseComponent } from '@sunbird-cb/resolver-v2'\nimport { ICarousel, ICarouselStyle } from './sliders-ng-content.model'\nimport { Subscription, interval } from 'rxjs'\nimport { EventService, WsEvents, ValueService } from '@sunbird-cb/utils-v2'\n\n@Component({\n selector: 'sb-uic-sliders-ng-content',\n templateUrl: './sliders-ng-content.component.html',\n styleUrls: ['./sliders-ng-content.component.scss'],\n})\nexport class SlidersNgContentLibComponent extends WidgetBaseComponent\n implements OnInit, OnDestroy, NsWidgetResolver.IWidgetData<ICarousel[]> {\n @Input() widgetData!: ICarousel[]\n @Input() styleData!: ICarouselStyle\n @Input() title: any = ''\n @Input() loadNgContentData: boolean = false\n @Input() autoScroll: boolean = false\n @Output() currentIndexValue = new EventEmitter<any>()\n \n @HostBinding('id')\n public id = `banner_${Math.random()}`\n private defaultMenuSubscribe: Subscription | null = null\n isLtMedium$ = this.valueSvc.isLtMedium$\n @Input() currentIndex = 0\n slideInterval: Subscription | null = null\n isMobile = false\n\n constructor(\n private events: EventService,\n private valueSvc: ValueService\n ) {\n super()\n }\n\n ngOnInit() {\n if(this.autoScroll) {\n this.reInitiateSlideInterval()\n }\n this.defaultMenuSubscribe = this.isLtMedium$.subscribe((isLtMedium: boolean) => {\n this.isMobile = isLtMedium\n })\n }\n reInitiateSlideInterval() {\n if (this.widgetData && this.widgetData.length > 1) {\n try {\n if (this.slideInterval) {\n this.slideInterval.unsubscribe()\n }\n } catch (e) {\n } finally {\n this.slideInterval = interval(8000).subscribe(() => {\n if (this.currentIndex === this.widgetData.length - 1) {\n this.currentIndex = 0\n this.currentIndexValue.emit(this.currentIndex)\n } else {\n this.currentIndex += 1\n this.currentIndexValue.emit(this.currentIndex)\n }\n })\n }\n }\n }\n slideTo(index: number) {\n if (index >= 0 && index < this.widgetData.length) {\n this.currentIndex = index\n this.currentIndexValue.emit(this.currentIndex)\n } else if (index === this.widgetData.length) {\n this.currentIndex = 0\n this.currentIndexValue.emit(this.currentIndex)\n } else {\n this.currentIndex = this.widgetData.length + index\n this.currentIndexValue.emit(this.currentIndex)\n }\n if(this.autoScroll) {\n this.reInitiateSlideInterval()\n }\n }\n\n get isOpenInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n return true\n } return false\n }\n\n openInNewTab() {\n const currentData = this.widgetData[this.currentIndex]\n if (currentData.redirectUrl && currentData.redirectUrl.includes('mailto') || this.widgetData[this.currentIndex].openInNewTab) {\n window.open(currentData.redirectUrl)\n }\n }\n raiseTelemetry(bannerUrl: string | undefined) {\n this.openInNewTab()\n const path = window.location.pathname.replace('/', '')\n const url = path + window.location.search\n\n this.events.raiseInteractTelemetry(\n {\n type: 'click',\n subType: 'banner',\n },\n {\n pageUrl: url,\n bannerRedirectUrl: bannerUrl,\n },\n {\n pageIdExt: 'banner',\n module: WsEvents.EnumTelemetrymodules.CONTENT,\n })\n }\n\n ngOnDestroy() {\n if (this.defaultMenuSubscribe) {\n this.defaultMenuSubscribe.unsubscribe()\n }\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { SlidersNgContentLibComponent } from './sliders-ng-content.component'\nimport { RouterModule } from '@angular/router'\nimport { ImageResponsiveModule } from '../../_directives/image-responsive/image-responsive.module'\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from '@angular/platform-browser'\n/* tslint:disable */\nimport Hammer from 'hammerjs'\nimport { NavigationModule } from '../../_directives/navigation/navigation.module'\n/* tslint:enable */\nexport class MyHammerConfig extends HammerGestureConfig {\n buildHammer(element: HTMLElement) {\n const mc = new Hammer(element, {\n touchAction: 'pan-y',\n })\n return mc\n }\n}\n\n// tslint:disable-next-line: max-classes-per-file\n@NgModule({\n declarations: [SlidersNgContentLibComponent],\n imports: [\n CommonModule,\n RouterModule,\n NavigationModule,\n ImageResponsiveModule,\n ],\n exports: [SlidersNgContentLibComponent],\n entryComponents: [SlidersNgContentLibComponent],\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: MyHammerConfig,\n },\n ],\n})\nexport class SlidersNgContentLibModule { }\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { ScrollableItemDirective } from './scrollable-item.directive'\n\n@NgModule({\n declarations: [ScrollableItemDirective],\n imports: [\n CommonModule,\n ],\n exports: [ScrollableItemDirective],\n})\nexport class ScrollableItemModule { }\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule, MatIconModule } from '@angular/material';\nimport { UserContentRatingLibComponent } from './user-content-rating-lib.component';\nimport { SkeletonLoaderLibModule } from '../skeleton-loader-lib/skeleton-loader-lib.module';\nimport { SlidersLibModule } from '../sliders/sliders.module';\nimport { RatingService } from '../../_services/rating.service';\nimport { CardsModule } from '../cards/cards.module';\nimport { AvatarPhotoLibModule } from '../avatar-photo-lib/avatar-photo-lib.module';\nimport { SlidersNgContentLibModule } from '../sliders-ng-content/sliders-ng-content.module';\nimport { ScrollableItemModule } from '../../_directives/scrollable-item/scrollable-item.module';\nimport { UserContentRatingLibService } from './user-content-rating-lib.service';\n\n\n\n@NgModule({\n declarations: [UserContentRatingLibComponent],\n imports: [\n CommonModule,\n MatIconModule,\n MatChipsModule,\n SkeletonLoaderLibModule,\n SlidersLibModule,\n CardsModule,\n AvatarPhotoLibModule,\n SlidersNgContentLibModule,\n ScrollableItemModule\n ],\n exports: [UserContentRatingLibComponent],\n providers: [RatingService, UserContentRatingLibService],\n schemas:[CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class UserContentRatingLibModule { }\n"]}
|