@sunbird-cb/toc 0.35.5 → 0.35.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +2 -2
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1 -3
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +1 -2
- package/esm2022/lib/app-toc-lib.module.mjs +10 -5
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +20 -3
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +4 -5
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +13 -2
- package/esm2022/lib/models/user-profile.model.mjs +1 -1
- package/esm2022/lib/services/discuss-utils.service.mjs +30 -43
- package/esm2022/lib/services/netcore.service.mjs +116 -46
- package/esm2022/lib/services/nps-grid.service.mjs +34 -22
- package/esm2022/lib/services/otp.service.mjs +63 -25
- package/esm2022/lib/services/profile-v2.service.mjs +46 -21
- package/esm2022/lib/services/user-profile.service.mjs +159 -39
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/sunbird-cb-toc.mjs +605 -333
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -1
- package/lib/app-toc-lib.module.d.ts.map +1 -1
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +1 -0
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -1
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -1
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +2 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -1
- package/lib/models/user-profile.model.d.ts +87 -0
- package/lib/models/user-profile.model.d.ts.map +1 -1
- package/lib/services/discuss-utils.service.d.ts +5 -27
- package/lib/services/discuss-utils.service.d.ts.map +1 -1
- package/lib/services/netcore.service.d.ts +16 -28
- package/lib/services/netcore.service.d.ts.map +1 -1
- package/lib/services/nps-grid.service.d.ts +11 -10
- package/lib/services/nps-grid.service.d.ts.map +1 -1
- package/lib/services/otp.service.d.ts +5 -10
- package/lib/services/otp.service.d.ts.map +1 -1
- package/lib/services/profile-v2.service.d.ts +7 -6
- package/lib/services/profile-v2.service.d.ts.map +1 -1
- package/lib/services/user-profile.service.d.ts +35 -11
- package/lib/services/user-profile.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
|
@@ -157,10 +157,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
157
157
|
}] });
|
|
158
158
|
|
|
159
159
|
// TODO: move this in some common place
|
|
160
|
-
const PROTECTED_SLAG_V8$
|
|
161
|
-
const API_END_POINTS$
|
|
162
|
-
AUTOCOMPLETE: (query) => `${PROTECTED_SLAG_V8$
|
|
163
|
-
AUTOCOMPLETE_BY_DEPARTMENT: (query) => `${PROTECTED_SLAG_V8$
|
|
160
|
+
const PROTECTED_SLAG_V8$3 = '/apis/protected/v8';
|
|
161
|
+
const API_END_POINTS$a = {
|
|
162
|
+
AUTOCOMPLETE: (query) => `${PROTECTED_SLAG_V8$3}/user/autocomplete/${query}`,
|
|
163
|
+
AUTOCOMPLETE_BY_DEPARTMENT: (query) => `${PROTECTED_SLAG_V8$3}/user/autocomplete/department/${query}`,
|
|
164
164
|
SEARCH_USERS: '/apis/proxies/v8/user/v1/search',
|
|
165
165
|
};
|
|
166
166
|
class UserAutocompleteService {
|
|
@@ -169,7 +169,7 @@ class UserAutocompleteService {
|
|
|
169
169
|
this.configSvc = configSvc;
|
|
170
170
|
}
|
|
171
171
|
fetchAutoComplete(query) {
|
|
172
|
-
let url = API_END_POINTS$
|
|
172
|
+
let url = API_END_POINTS$a.AUTOCOMPLETE(query);
|
|
173
173
|
const stringifiedQueryParams = getStringifiedQueryParams({
|
|
174
174
|
dealerCode: this.configSvc.userProfile && this.configSvc.userProfile.dealerCode ? this.configSvc.userProfile.dealerCode : undefined,
|
|
175
175
|
sourceFields: this.configSvc.instanceConfig && this.configSvc.instanceConfig.sourceFieldsUserAutocomplete
|
|
@@ -180,7 +180,7 @@ class UserAutocompleteService {
|
|
|
180
180
|
return this.http.get(url);
|
|
181
181
|
}
|
|
182
182
|
fetchAutoCompleteByDept(query, departments) {
|
|
183
|
-
let url = API_END_POINTS$
|
|
183
|
+
let url = API_END_POINTS$a.AUTOCOMPLETE_BY_DEPARTMENT(query);
|
|
184
184
|
const stringifiedQueryParams = getStringifiedQueryParams({
|
|
185
185
|
dealerCode: this.configSvc.userProfile && this.configSvc.userProfile.dealerCode ? this.configSvc.userProfile.dealerCode : undefined,
|
|
186
186
|
sourceFields: this.configSvc.instanceConfig && this.configSvc.instanceConfig.sourceFieldsUserAutocomplete
|
|
@@ -200,7 +200,7 @@ class UserAutocompleteService {
|
|
|
200
200
|
},
|
|
201
201
|
},
|
|
202
202
|
};
|
|
203
|
-
return this.http.post(`${API_END_POINTS$
|
|
203
|
+
return this.http.post(`${API_END_POINTS$a.SEARCH_USERS}`, reqBody);
|
|
204
204
|
}
|
|
205
205
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserAutocompleteService, deps: [{ token: i1.HttpClient }, { token: i2$1.ConfigurationsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
206
206
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserAutocompleteService, providedIn: 'root' }); }
|
|
@@ -626,41 +626,41 @@ function viewerRouteGenerator(id, mimeType, collectionId, collectionType, forPre
|
|
|
626
626
|
|
|
627
627
|
// tslint:enable
|
|
628
628
|
// TODO: move this in some common place
|
|
629
|
-
const PROTECTED_SLAG_V8$
|
|
630
|
-
const API_END_POINTS$
|
|
631
|
-
CONTENT: `${PROTECTED_SLAG_V8$
|
|
629
|
+
const PROTECTED_SLAG_V8$2 = '/apis/protected/v8';
|
|
630
|
+
const API_END_POINTS$9 = {
|
|
631
|
+
CONTENT: `${PROTECTED_SLAG_V8$2}/content`,
|
|
632
632
|
AUTHORING_CONTENT: `/api/course/v1/hierarchy`,
|
|
633
|
-
CONTENT_LIKES: `${PROTECTED_SLAG_V8$
|
|
634
|
-
SET_S3_COOKIE: `${PROTECTED_SLAG_V8$
|
|
635
|
-
SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8$
|
|
636
|
-
FETCH_MANIFEST: `${PROTECTED_SLAG_V8$
|
|
637
|
-
FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8$
|
|
638
|
-
MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8$
|
|
639
|
-
CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8$
|
|
633
|
+
CONTENT_LIKES: `${PROTECTED_SLAG_V8$2}/content/likeCount`,
|
|
634
|
+
SET_S3_COOKIE: `${PROTECTED_SLAG_V8$2}/content/setCookie`,
|
|
635
|
+
SET_S3_IMAGE_COOKIE: `${PROTECTED_SLAG_V8$2}/content/setImageCookie`,
|
|
636
|
+
FETCH_MANIFEST: `${PROTECTED_SLAG_V8$2}/content/getWebModuleManifest`,
|
|
637
|
+
FETCH_WEB_MODULE_FILES: `${PROTECTED_SLAG_V8$2}/content/getWebModuleFiles`,
|
|
638
|
+
MULTIPLE_CONTENT: `${PROTECTED_SLAG_V8$2}/content/multiple`,
|
|
639
|
+
CONTENT_SEARCH_V5: `${PROTECTED_SLAG_V8$2}/content/searchV5`,
|
|
640
640
|
CONTENT_SEARCH_V6: `/apis/proxies/v8/sunbirdigot/search`,
|
|
641
641
|
TRENDING_CONTENT_SEARCH: `apis/proxies/v8/trending/content/search`,
|
|
642
642
|
CONTENT_SEARCH_RELATED_CBP_V6: `/apis/proxies/v8/sunbirdigot/search`,
|
|
643
|
-
CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8$
|
|
644
|
-
CONTENT_HISTORY: `${PROTECTED_SLAG_V8$
|
|
643
|
+
CONTENT_SEARCH_REGION_RECOMMENDATION: `${PROTECTED_SLAG_V8$2}/content/searchRegionRecommendation`,
|
|
644
|
+
CONTENT_HISTORY: `${PROTECTED_SLAG_V8$2}/user/history`,
|
|
645
645
|
CONTENT_HISTORYV2: `/apis/proxies/v8/read/content-progres`,
|
|
646
646
|
COURSE_BATCH_LIST: `/apis/proxies/v8/learner/course/v1/batch/list`,
|
|
647
647
|
COURSE_BATCH: `/apis/proxies/v8/course/v1/batch/read`,
|
|
648
648
|
AUTO_ASSIGN_BATCH: `/apis/protected/v8/cohorts/user/autoenrollment/`,
|
|
649
649
|
AUTO_ASSIGN_CURATED_BATCH: `/apis/proxies/v8/curatedprogram/v1/enrol`,
|
|
650
650
|
AUTO_ASSIGN_OPEN_PROGRAM: `/apis/proxies/v8/openprogram/v1/enrol`,
|
|
651
|
-
USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8$
|
|
652
|
-
CONTENT_RATING: `${PROTECTED_SLAG_V8$
|
|
653
|
-
COLLECTION_HIERARCHY: (type, id) => `${PROTECTED_SLAG_V8$
|
|
654
|
-
REGISTRATION_STATUS: `${PROTECTED_SLAG_V8$
|
|
655
|
-
MARK_AS_COMPLETE_META: (contentId) => `${PROTECTED_SLAG_V8$
|
|
651
|
+
USER_CONTINUE_LEARNING: `${PROTECTED_SLAG_V8$2}/user/history/continue`,
|
|
652
|
+
CONTENT_RATING: `${PROTECTED_SLAG_V8$2}/user/rating`,
|
|
653
|
+
COLLECTION_HIERARCHY: (type, id) => `${PROTECTED_SLAG_V8$2}/content/collection/${type}/${id}`,
|
|
654
|
+
REGISTRATION_STATUS: `${PROTECTED_SLAG_V8$2}/admin/userRegistration/checkUserRegistrationContent`,
|
|
655
|
+
MARK_AS_COMPLETE_META: (contentId) => `${PROTECTED_SLAG_V8$2}/user/progress/${contentId}`,
|
|
656
656
|
ENROLL_BATCH: `/apis/proxies/v8/learner/course/v1/enrol`,
|
|
657
657
|
ENROLL_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/enrol`,
|
|
658
658
|
WITHDRAW_BATCH_WF: `/apis/proxies/v8/workflow/blendedprogram/unenrol`,
|
|
659
659
|
BLENDED_USER_WF: `/apis/proxies/v8/workflow/blendedprogram/user/search`,
|
|
660
660
|
BLENDED_USER_COUNT: `apis/proxies/v8/workflow/blendedprogram/enrol/status/count`,
|
|
661
|
-
CERT_ADD_TEMPLATE: `${PROTECTED_SLAG_V8$
|
|
662
|
-
CERT_ISSUE: `${PROTECTED_SLAG_V8$
|
|
663
|
-
CERT_DOWNLOAD: (certId) => `${PROTECTED_SLAG_V8$
|
|
661
|
+
CERT_ADD_TEMPLATE: `${PROTECTED_SLAG_V8$2}/cohorts/course/batch/cert/template/add`,
|
|
662
|
+
CERT_ISSUE: `${PROTECTED_SLAG_V8$2}/cohorts/course/batch/cert/issue`,
|
|
663
|
+
CERT_DOWNLOAD: (certId) => `${PROTECTED_SLAG_V8$2}/cohorts/course/batch/cert/download/${certId}`,
|
|
664
664
|
READ_KARMAPOINTS: `/apis/proxies/v8/karmapoints/read`,
|
|
665
665
|
CONTENT_READ: (contentId) => `/apis/proxies/v8/extended/content/v1/read/${contentId}`,
|
|
666
666
|
READ_COURSE_KARMAPOINTS: '/apis/proxies/v8/karmapoints/user/course/read',
|
|
@@ -696,7 +696,7 @@ class WidgetContentService {
|
|
|
696
696
|
}
|
|
697
697
|
fetchMarkAsCompleteMeta(identifier) {
|
|
698
698
|
// tslint:disable-next-line
|
|
699
|
-
const url = API_END_POINTS$
|
|
699
|
+
const url = API_END_POINTS$9.MARK_AS_COMPLETE_META(identifier);
|
|
700
700
|
// return this.http.get(url).toPromise()
|
|
701
701
|
if (url) { }
|
|
702
702
|
return of().toPromise();
|
|
@@ -755,66 +755,66 @@ class WidgetContentService {
|
|
|
755
755
|
url = `/api/content/v1/read/${contentId}`;
|
|
756
756
|
}
|
|
757
757
|
else {
|
|
758
|
-
url = `${API_END_POINTS$
|
|
758
|
+
url = `${API_END_POINTS$9.AUTHORING_CONTENT}/${contentId}?hierarchyType=detail`;
|
|
759
759
|
}
|
|
760
760
|
return this.http.get(url).pipe(shareReplay(1), r => r);
|
|
761
761
|
}
|
|
762
762
|
fetchMultipleContent(ids) {
|
|
763
|
-
return this.http.get(`${API_END_POINTS$
|
|
763
|
+
return this.http.get(`${API_END_POINTS$9.MULTIPLE_CONTENT}/${ids.join(',')}`);
|
|
764
764
|
}
|
|
765
765
|
fetchCollectionHierarchy(type, id, pageNumber = 0, pageSize = 1) {
|
|
766
|
-
return this.http.get(`${API_END_POINTS$
|
|
766
|
+
return this.http.get(`${API_END_POINTS$9.COLLECTION_HIERARCHY(type, id)}?pageNumber=${pageNumber}&pageSize=${pageSize}`);
|
|
767
767
|
}
|
|
768
768
|
fetchBlendedCourse() {
|
|
769
769
|
}
|
|
770
770
|
fetchCourseBatches(req) {
|
|
771
771
|
return this.http
|
|
772
|
-
.post(API_END_POINTS$
|
|
772
|
+
.post(API_END_POINTS$9.COURSE_BATCH_LIST, req)
|
|
773
773
|
.pipe(retry(1), map((data) => data.result.response));
|
|
774
774
|
}
|
|
775
775
|
// fetch individual batch
|
|
776
776
|
fetchCourseBatch(batchId) {
|
|
777
|
-
return this.http.get(`${API_END_POINTS$
|
|
777
|
+
return this.http.get(`${API_END_POINTS$9.COURSE_BATCH}/${batchId}`);
|
|
778
778
|
}
|
|
779
779
|
autoAssignBatchApi(identifier, language) {
|
|
780
780
|
let enrollLang = language?.langId || 'english';
|
|
781
|
-
return this.http.get(`${API_END_POINTS$
|
|
781
|
+
return this.http.get(`${API_END_POINTS$9.AUTO_ASSIGN_BATCH}${identifier}?language=${enrollLang}`)
|
|
782
782
|
.pipe(retry(1), map((data) => data.result.response));
|
|
783
783
|
}
|
|
784
784
|
autoEnrollLP(identifier) {
|
|
785
|
-
return this.http.get(`${API_END_POINTS$
|
|
785
|
+
return this.http.get(`${API_END_POINTS$9.LEARNER_PATHWAY_ENROLL(identifier)}`)
|
|
786
786
|
.pipe(retry(1), map((data) => data.result.response));
|
|
787
787
|
}
|
|
788
788
|
autoAssignCuratedBatchApi(request, programType) {
|
|
789
789
|
const url = programType === NsContent.ECourseCategory.MODERATED_PROGRAM ?
|
|
790
|
-
API_END_POINTS$
|
|
790
|
+
API_END_POINTS$9.AUTO_ASSIGN_OPEN_PROGRAM : API_END_POINTS$9.AUTO_ASSIGN_CURATED_BATCH;
|
|
791
791
|
return this.http.post(`${url}`, request)
|
|
792
792
|
.pipe(retry(1), map((data) => data.result.response));
|
|
793
793
|
}
|
|
794
794
|
enrollUserToBatch(req) {
|
|
795
795
|
return this.http
|
|
796
|
-
.post(API_END_POINTS$
|
|
796
|
+
.post(API_END_POINTS$9.ENROLL_BATCH, req)
|
|
797
797
|
.toPromise();
|
|
798
798
|
}
|
|
799
799
|
enrollAndUnenrollUserToBatchWF(req, type) {
|
|
800
|
-
const url = type === 'WITHDRAW' ? API_END_POINTS$
|
|
800
|
+
const url = type === 'WITHDRAW' ? API_END_POINTS$9.WITHDRAW_BATCH_WF : API_END_POINTS$9.ENROLL_BATCH_WF;
|
|
801
801
|
return this.http
|
|
802
802
|
.post(url, req)
|
|
803
803
|
.toPromise();
|
|
804
804
|
}
|
|
805
805
|
fetchBlendedUserWF(req) {
|
|
806
806
|
return this.http
|
|
807
|
-
.post(API_END_POINTS$
|
|
807
|
+
.post(API_END_POINTS$9.BLENDED_USER_WF, req)
|
|
808
808
|
.toPromise();
|
|
809
809
|
}
|
|
810
810
|
fetchBlendedUserCOUNT(req) {
|
|
811
811
|
return this.http
|
|
812
|
-
.post(API_END_POINTS$
|
|
812
|
+
.post(API_END_POINTS$9.BLENDED_USER_COUNT, req)
|
|
813
813
|
.toPromise();
|
|
814
814
|
}
|
|
815
815
|
fetchContentLikes(contentIds) {
|
|
816
816
|
return this.http
|
|
817
|
-
.post(API_END_POINTS$
|
|
817
|
+
.post(API_END_POINTS$9.CONTENT_LIKES, contentIds)
|
|
818
818
|
.toPromise();
|
|
819
819
|
}
|
|
820
820
|
fetchContentRatings(contentIds) {
|
|
@@ -825,13 +825,13 @@ class WidgetContentService {
|
|
|
825
825
|
return of().toPromise();
|
|
826
826
|
}
|
|
827
827
|
fetchContentHistory(contentId) {
|
|
828
|
-
return this.http.get(`${API_END_POINTS$
|
|
828
|
+
return this.http.get(`${API_END_POINTS$9.CONTENT_HISTORY}/${contentId}`);
|
|
829
829
|
}
|
|
830
830
|
fetchContentHistoryV2(req) {
|
|
831
831
|
const isPreAssessment = this.activatedRoute.snapshot.queryParams.preAssessment;
|
|
832
832
|
req.request.fields = ['progressdetails'];
|
|
833
833
|
if (req.request.courseId && !isPreAssessment) {
|
|
834
|
-
const data = this.http.post(`${API_END_POINTS$
|
|
834
|
+
const data = this.http.post(`${API_END_POINTS$9.CONTENT_HISTORYV2}/${req.request.courseId}`, req).pipe(map((rData) => {
|
|
835
835
|
this.languageMapProgress = rData?.result?.languageProgress || {};
|
|
836
836
|
return rData;
|
|
837
837
|
}));
|
|
@@ -892,17 +892,17 @@ class WidgetContentService {
|
|
|
892
892
|
return EMPTY;
|
|
893
893
|
}
|
|
894
894
|
setS3ImageCookie() {
|
|
895
|
-
return this.http.post(API_END_POINTS$
|
|
895
|
+
return this.http.post(API_END_POINTS$9.SET_S3_IMAGE_COOKIE, {}).pipe(catchError(_err => of(true)));
|
|
896
896
|
}
|
|
897
897
|
fetchManifest(url) {
|
|
898
|
-
return this.http.post(API_END_POINTS$
|
|
898
|
+
return this.http.post(API_END_POINTS$9.FETCH_MANIFEST, { url });
|
|
899
899
|
}
|
|
900
900
|
fetchWebModuleContent(url) {
|
|
901
|
-
return this.http.get(`${API_END_POINTS$
|
|
901
|
+
return this.http.get(`${API_END_POINTS$9.FETCH_WEB_MODULE_FILES}?url=${encodeURIComponent(url)}`);
|
|
902
902
|
}
|
|
903
903
|
search(req) {
|
|
904
904
|
req.query = req.query || '';
|
|
905
|
-
return this.http.post(API_END_POINTS$
|
|
905
|
+
return this.http.post(API_END_POINTS$9.CONTENT_SEARCH_V5, {
|
|
906
906
|
request: req,
|
|
907
907
|
});
|
|
908
908
|
}
|
|
@@ -915,7 +915,7 @@ class WidgetContentService {
|
|
|
915
915
|
...req.filters,
|
|
916
916
|
labels: [req.preLabelValue || ''],
|
|
917
917
|
};
|
|
918
|
-
return this.http.post(API_END_POINTS$
|
|
918
|
+
return this.http.post(API_END_POINTS$9.CONTENT_SEARCH_REGION_RECOMMENDATION, { request: req });
|
|
919
919
|
}
|
|
920
920
|
searchV6(req) {
|
|
921
921
|
const apiPath = ___default.get(req, 'api.path');
|
|
@@ -923,19 +923,19 @@ class WidgetContentService {
|
|
|
923
923
|
if (apiPath) {
|
|
924
924
|
return this.http.get(apiPath);
|
|
925
925
|
}
|
|
926
|
-
return this.http.post(API_END_POINTS$
|
|
926
|
+
return this.http.post(API_END_POINTS$9.CONTENT_SEARCH_V6, req);
|
|
927
927
|
}
|
|
928
928
|
searchRelatedCBPV6(req) {
|
|
929
|
-
return this.http.post(API_END_POINTS$
|
|
929
|
+
return this.http.post(API_END_POINTS$9.CONTENT_SEARCH_RELATED_CBP_V6, req);
|
|
930
930
|
}
|
|
931
931
|
fetchContentRating(contentId) {
|
|
932
|
-
return this.http.get(`${API_END_POINTS$
|
|
932
|
+
return this.http.get(`${API_END_POINTS$9.CONTENT_RATING}/${contentId}`);
|
|
933
933
|
}
|
|
934
934
|
deleteContentRating(contentId) {
|
|
935
|
-
return this.http.delete(`${API_END_POINTS$
|
|
935
|
+
return this.http.delete(`${API_END_POINTS$9.CONTENT_RATING}/${contentId}`);
|
|
936
936
|
}
|
|
937
937
|
addContentRating(contentId, data) {
|
|
938
|
-
return this.http.post(`${API_END_POINTS$
|
|
938
|
+
return this.http.post(`${API_END_POINTS$9.CONTENT_RATING}/${contentId}`, data);
|
|
939
939
|
}
|
|
940
940
|
getFirstChildInHierarchy(content) {
|
|
941
941
|
if (!(content.children || []).length) {
|
|
@@ -966,32 +966,32 @@ class WidgetContentService {
|
|
|
966
966
|
return resultContent;
|
|
967
967
|
}
|
|
968
968
|
getRegistrationStatus(source) {
|
|
969
|
-
return this.http.get(`${API_END_POINTS$
|
|
969
|
+
return this.http.get(`${API_END_POINTS$9.REGISTRATION_STATUS}/${source}`).toPromise();
|
|
970
970
|
}
|
|
971
971
|
fetchConfig(url) {
|
|
972
972
|
return this.http.get(url);
|
|
973
973
|
}
|
|
974
974
|
addCertTemplate(body) {
|
|
975
|
-
return this.http.patch(`${API_END_POINTS$
|
|
975
|
+
return this.http.patch(`${API_END_POINTS$9.CERT_ADD_TEMPLATE}`, body);
|
|
976
976
|
}
|
|
977
977
|
issueCert(body) {
|
|
978
|
-
return this.http.post(`${API_END_POINTS$
|
|
978
|
+
return this.http.post(`${API_END_POINTS$9.CERT_ISSUE}`, body);
|
|
979
979
|
}
|
|
980
980
|
downloadCert(certId) {
|
|
981
|
-
return this.http.get(`${API_END_POINTS$
|
|
981
|
+
return this.http.get(`${API_END_POINTS$9.CERT_DOWNLOAD(certId)}`);
|
|
982
982
|
}
|
|
983
983
|
trendingContentSearch(req) {
|
|
984
984
|
req.query = req.query || '';
|
|
985
|
-
return this.http.post(API_END_POINTS$
|
|
985
|
+
return this.http.post(API_END_POINTS$9.TRENDING_CONTENT_SEARCH, req);
|
|
986
986
|
}
|
|
987
987
|
getKarmaPoitns(limit, offset) {
|
|
988
|
-
return this.http.post(API_END_POINTS$
|
|
988
|
+
return this.http.post(API_END_POINTS$9.READ_KARMAPOINTS, { limit, offset }).pipe(catchError(_err => of(true)));
|
|
989
989
|
}
|
|
990
990
|
fetchProgramContent(contentId) {
|
|
991
991
|
let url = '';
|
|
992
992
|
const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');
|
|
993
993
|
if (!forPreview) {
|
|
994
|
-
return this.http.get(API_END_POINTS$
|
|
994
|
+
return this.http.get(API_END_POINTS$9.CONTENT_READ(contentId));
|
|
995
995
|
}
|
|
996
996
|
if (window.location.href.includes('editMode=true')) {
|
|
997
997
|
url = `/apis/proxies/v8/extended/content/v1/read/${contentId}`;
|
|
@@ -1003,25 +1003,25 @@ class WidgetContentService {
|
|
|
1003
1003
|
// return this.http.get<NsContent.IContent[]>(API_END_POINTS.CONTENT_READ(contentId))
|
|
1004
1004
|
}
|
|
1005
1005
|
fetchExternalContent(contentId) {
|
|
1006
|
-
return this.http.get(API_END_POINTS$
|
|
1006
|
+
return this.http.get(API_END_POINTS$9.EXT_CONTENT_READ(contentId));
|
|
1007
1007
|
}
|
|
1008
1008
|
fetchExternalPublicContent(partenerName, contentId) {
|
|
1009
|
-
return this.http.get(API_END_POINTS$
|
|
1009
|
+
return this.http.get(API_END_POINTS$9.EXT_PUBLIC_CONTENT(partenerName, contentId));
|
|
1010
1010
|
}
|
|
1011
1011
|
fetchExtUserContentEnroll(contentId) {
|
|
1012
|
-
return this.http.get(API_END_POINTS$
|
|
1012
|
+
return this.http.get(API_END_POINTS$9.EXT_USER_COURSE_ENROLL(contentId));
|
|
1013
1013
|
}
|
|
1014
1014
|
extContentEnroll(requestBody) {
|
|
1015
|
-
return this.http.post(`${API_END_POINTS$
|
|
1015
|
+
return this.http.post(`${API_END_POINTS$9.EXT_CONTENT_EROLL}`, requestBody);
|
|
1016
1016
|
}
|
|
1017
1017
|
getCourseKarmaPoints(request) {
|
|
1018
|
-
return this.http.post(API_END_POINTS$
|
|
1018
|
+
return this.http.post(API_END_POINTS$9.READ_COURSE_KARMAPOINTS, request);
|
|
1019
1019
|
}
|
|
1020
1020
|
claimKarmapoints(request) {
|
|
1021
|
-
return this.http.post(API_END_POINTS$
|
|
1021
|
+
return this.http.post(API_END_POINTS$9.CLAIM_KARMAPOINTS, request);
|
|
1022
1022
|
}
|
|
1023
1023
|
userKarmaPoints() {
|
|
1024
|
-
return this.http.post(API_END_POINTS$
|
|
1024
|
+
return this.http.post(API_END_POINTS$9.USER_KARMA_POINTS, {});
|
|
1025
1025
|
}
|
|
1026
1026
|
getEnrolledData(doId) {
|
|
1027
1027
|
const enrollmentMapData = JSON.parse(localStorage.getItem('enrollmentMapData') || '{}');
|
|
@@ -1178,7 +1178,7 @@ class WidgetContentService {
|
|
|
1178
1178
|
let url = '';
|
|
1179
1179
|
const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');
|
|
1180
1180
|
if (!forPreview) {
|
|
1181
|
-
return this.http.get(API_END_POINTS$
|
|
1181
|
+
return this.http.get(API_END_POINTS$9.CONTENT_READ(contentId));
|
|
1182
1182
|
}
|
|
1183
1183
|
if (window.location.href.includes('editMode=true') && window.location.href.includes('_rc')) {
|
|
1184
1184
|
url = `/apis/proxies/v8/extended/content/v1/read/${contentId}`;
|
|
@@ -1189,7 +1189,7 @@ class WidgetContentService {
|
|
|
1189
1189
|
return this.http.get(url);
|
|
1190
1190
|
}
|
|
1191
1191
|
getUserEnrollmentData(userId, request) {
|
|
1192
|
-
return this.http.post(API_END_POINTS$
|
|
1192
|
+
return this.http.post(API_END_POINTS$9.ENROLL_CONTENT_DATA(userId), request).pipe(map((rData) => {
|
|
1193
1193
|
const result = rData?.result ?? null;
|
|
1194
1194
|
return { data: result, error: null };
|
|
1195
1195
|
}), catchError((error) => {
|
|
@@ -1207,22 +1207,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1207
1207
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2$1.ConfigurationsService }, { type: i1$1.ActivatedRoute }]; } });
|
|
1208
1208
|
|
|
1209
1209
|
// TODO: move this in some common place
|
|
1210
|
-
const PROTECTED_SLAG_V8 = '/apis/protected/v8';
|
|
1210
|
+
const PROTECTED_SLAG_V8$1 = '/apis/protected/v8';
|
|
1211
1211
|
const PROXY_SLAG_V8$1 = '/apis/proxies/v8';
|
|
1212
|
-
const API_END_POINTS$
|
|
1212
|
+
const API_END_POINTS$8 = {
|
|
1213
1213
|
BATCH_CREATE: `${PROXY_SLAG_V8$1}/learner/course/v1/batch/create`,
|
|
1214
|
-
CONTENT_PARENTS: `${PROTECTED_SLAG_V8}/content/parents`,
|
|
1215
|
-
CONTENT_NEXT: `${PROTECTED_SLAG_V8}/content/next`,
|
|
1214
|
+
CONTENT_PARENTS: `${PROTECTED_SLAG_V8$1}/content/parents`,
|
|
1215
|
+
CONTENT_NEXT: `${PROTECTED_SLAG_V8$1}/content/next`,
|
|
1216
1216
|
CONTENT_HISTORYV2: `/apis/proxies/v8/read/content-progres`,
|
|
1217
|
-
CONTENT_PARENT: (contentId) => `${PROTECTED_SLAG_V8}/content/${contentId}/parent`,
|
|
1217
|
+
CONTENT_PARENT: (contentId) => `${PROTECTED_SLAG_V8$1}/content/${contentId}/parent`,
|
|
1218
1218
|
CONTENT_AUTH_PARENT: (contentId, rootOrg, org) => `/apis/authApi/action/content/parent/hierarchy/${contentId}?rootOrg=${rootOrg}&org=${org}`,
|
|
1219
|
-
COHORTS: (cohortType, contentId) => `${PROTECTED_SLAG_V8}/cohorts/${cohortType}/${contentId}`,
|
|
1220
|
-
EXTERNAL_CONTENT: (contentId) => `${PROTECTED_SLAG_V8}/content/external-access/${contentId}`,
|
|
1221
|
-
COHORTS_GROUP_USER: (groupId) => `${PROTECTED_SLAG_V8}/cohorts/${groupId}`,
|
|
1222
|
-
RELATED_RESOURCE: (contentId, contentType) => `${PROTECTED_SLAG_V8}/khub/fetchRelatedResources/${contentId}/${contentType}`,
|
|
1223
|
-
POST_ASSESSMENT: (contentId) => `${PROTECTED_SLAG_V8}/user/evaluate/post-assessment/${contentId}`,
|
|
1219
|
+
COHORTS: (cohortType, contentId) => `${PROTECTED_SLAG_V8$1}/cohorts/${cohortType}/${contentId}`,
|
|
1220
|
+
EXTERNAL_CONTENT: (contentId) => `${PROTECTED_SLAG_V8$1}/content/external-access/${contentId}`,
|
|
1221
|
+
COHORTS_GROUP_USER: (groupId) => `${PROTECTED_SLAG_V8$1}/cohorts/${groupId}`,
|
|
1222
|
+
RELATED_RESOURCE: (contentId, contentType) => `${PROTECTED_SLAG_V8$1}/khub/fetchRelatedResources/${contentId}/${contentType}`,
|
|
1223
|
+
POST_ASSESSMENT: (contentId) => `${PROTECTED_SLAG_V8$1}/user/evaluate/post-assessment/${contentId}`,
|
|
1224
1224
|
GET_CONTENT: (contentId) => `${PROXY_SLAG_V8$1}/action/content/v3/read/${contentId}`,
|
|
1225
|
-
CERT_DOWNLOAD: (certId) => `${PROTECTED_SLAG_V8}/cohorts/course/batch/cert/download/${certId}`,
|
|
1225
|
+
CERT_DOWNLOAD: (certId) => `${PROTECTED_SLAG_V8$1}/cohorts/course/batch/cert/download/${certId}`,
|
|
1226
1226
|
SERVER_DATE: 'apis/public/v8/systemDate',
|
|
1227
1227
|
SHARE_CONTENT: '/apis/proxies/v8/user/v1/content/recommend',
|
|
1228
1228
|
GET_FORM_BYID: (formId) => `apis/proxies/v8/forms/v2/getFormById?formId=${formId}`,
|
|
@@ -1659,38 +1659,38 @@ class AppTocService {
|
|
|
1659
1659
|
}
|
|
1660
1660
|
fetchContentWhatsNext(contentId, contentType) {
|
|
1661
1661
|
if (contentType) {
|
|
1662
|
-
return this.http.get(`${API_END_POINTS$
|
|
1662
|
+
return this.http.get(`${API_END_POINTS$8.CONTENT_NEXT}/${contentId}?contentType=${contentType}`);
|
|
1663
1663
|
}
|
|
1664
|
-
return this.http.get(`${API_END_POINTS$
|
|
1664
|
+
return this.http.get(`${API_END_POINTS$8.CONTENT_NEXT}/${contentId}?ts=${new Date().getTime()}`);
|
|
1665
1665
|
}
|
|
1666
1666
|
fetchMoreLikeThisPaid(contentId) {
|
|
1667
|
-
return this.http.get(`${API_END_POINTS$
|
|
1667
|
+
return this.http.get(`${API_END_POINTS$8.CONTENT_NEXT}/${contentId}?exclusiveContent=true&ts=${new Date().getTime()}`);
|
|
1668
1668
|
}
|
|
1669
1669
|
fetchMoreLikeThisFree(contentId) {
|
|
1670
|
-
return this.http.get(`${API_END_POINTS$
|
|
1670
|
+
return this.http.get(`${API_END_POINTS$8.CONTENT_NEXT}/${contentId}?exclusiveContent=false&ts=${new Date().getTime()}`);
|
|
1671
1671
|
}
|
|
1672
1672
|
fetchContentCohorts(cohortType, contentId) {
|
|
1673
|
-
return this.http.get(API_END_POINTS$
|
|
1673
|
+
return this.http.get(API_END_POINTS$8.COHORTS(cohortType, contentId), {
|
|
1674
1674
|
headers: { rootOrg: this.configSvc.rootOrg || '', org: this.configSvc.org ? this.configSvc.org[0] : '' },
|
|
1675
1675
|
});
|
|
1676
1676
|
}
|
|
1677
1677
|
fetchExternalContentAccess(contentId) {
|
|
1678
|
-
return this.http.get(API_END_POINTS$
|
|
1678
|
+
return this.http.get(API_END_POINTS$8.EXTERNAL_CONTENT(contentId));
|
|
1679
1679
|
}
|
|
1680
1680
|
fetchCohortGroupUsers(groupId) {
|
|
1681
|
-
return this.http.get(API_END_POINTS$
|
|
1681
|
+
return this.http.get(API_END_POINTS$8.COHORTS_GROUP_USER(groupId));
|
|
1682
1682
|
}
|
|
1683
1683
|
fetchMoreLikeThis(contentId, contentType) {
|
|
1684
|
-
return this.http.get(API_END_POINTS$
|
|
1684
|
+
return this.http.get(API_END_POINTS$8.RELATED_RESOURCE(contentId, contentType));
|
|
1685
1685
|
}
|
|
1686
1686
|
fetchPostAssessmentStatus(contentId) {
|
|
1687
|
-
return this.http.get(API_END_POINTS$
|
|
1687
|
+
return this.http.get(API_END_POINTS$8.POST_ASSESSMENT(contentId));
|
|
1688
1688
|
}
|
|
1689
1689
|
fetchGetContentData(contentId) {
|
|
1690
1690
|
let url = '';
|
|
1691
1691
|
const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');
|
|
1692
1692
|
if (!forPreview) {
|
|
1693
|
-
return this.http.get(API_END_POINTS$
|
|
1693
|
+
return this.http.get(API_END_POINTS$8.GET_CONTENT(contentId));
|
|
1694
1694
|
}
|
|
1695
1695
|
if (window.location.href.includes('editMode=true') && window.location.href.includes('_rc')) {
|
|
1696
1696
|
url = `/apis/proxies/v8/action/content/v3/read/${contentId}`;
|
|
@@ -1702,11 +1702,11 @@ class AppTocService {
|
|
|
1702
1702
|
}
|
|
1703
1703
|
fetchContentParent(contentId, data, forPreview = false) {
|
|
1704
1704
|
return this.http.post(forPreview
|
|
1705
|
-
? API_END_POINTS$
|
|
1706
|
-
: API_END_POINTS$
|
|
1705
|
+
? API_END_POINTS$8.CONTENT_AUTH_PARENT(contentId, this.configSvc.rootOrg || '', this.configSvc.org ? this.configSvc.org[0] : '')
|
|
1706
|
+
: API_END_POINTS$8.CONTENT_PARENT(contentId), data);
|
|
1707
1707
|
}
|
|
1708
1708
|
createBatch(batchData) {
|
|
1709
|
-
return this.http.post(API_END_POINTS$
|
|
1709
|
+
return this.http.post(API_END_POINTS$8.BATCH_CREATE, { request: batchData });
|
|
1710
1710
|
}
|
|
1711
1711
|
async mapCompletionPercentageProgram(content, enrolmentList, collectionId) {
|
|
1712
1712
|
this.contentLoader.next(true);
|
|
@@ -2587,7 +2587,7 @@ class AppTocService {
|
|
|
2587
2587
|
fetchContentHistoryV2(req) {
|
|
2588
2588
|
req.request.fields = ['progressdetails'];
|
|
2589
2589
|
if (req.request.courseId) {
|
|
2590
|
-
const reslut = this.http.post(`${API_END_POINTS$
|
|
2590
|
+
const reslut = this.http.post(`${API_END_POINTS$8.CONTENT_HISTORYV2}/${req.request.courseId}`, req);
|
|
2591
2591
|
// data.subscribe((subscribeData: any) => {
|
|
2592
2592
|
// this.programChildCourseResumeData.next({ resumeData: subscribeData.result.contentList, courseId: req.request.courseId })
|
|
2593
2593
|
// })
|
|
@@ -2596,28 +2596,28 @@ class AppTocService {
|
|
|
2596
2596
|
return of();
|
|
2597
2597
|
}
|
|
2598
2598
|
dowonloadCertificate(certId) {
|
|
2599
|
-
return this.http.get(API_END_POINTS$
|
|
2599
|
+
return this.http.get(API_END_POINTS$8.CERT_DOWNLOAD(certId));
|
|
2600
2600
|
}
|
|
2601
2601
|
getServerDate() {
|
|
2602
|
-
return this.http.get(API_END_POINTS$
|
|
2602
|
+
return this.http.get(API_END_POINTS$8.SERVER_DATE);
|
|
2603
2603
|
}
|
|
2604
2604
|
getFormById(formId) {
|
|
2605
|
-
return this.http.get(API_END_POINTS$
|
|
2605
|
+
return this.http.get(API_END_POINTS$8.GET_FORM_BYID(formId));
|
|
2606
2606
|
}
|
|
2607
2607
|
submitForm(formData) {
|
|
2608
|
-
return this.http.post(API_END_POINTS$
|
|
2608
|
+
return this.http.post(API_END_POINTS$8.SUBMIT_FORM, formData);
|
|
2609
2609
|
}
|
|
2610
2610
|
getFormByIdPublic(formId) {
|
|
2611
|
-
return this.http.get(API_END_POINTS$
|
|
2611
|
+
return this.http.get(API_END_POINTS$8.GET_FORM_BYID_PUBLIC(formId));
|
|
2612
2612
|
}
|
|
2613
2613
|
submitFormPublic(formData) {
|
|
2614
|
-
return this.http.post(API_END_POINTS$
|
|
2614
|
+
return this.http.post(API_END_POINTS$8.SUBMIT_FORM_PUBLIC, formData);
|
|
2615
2615
|
}
|
|
2616
2616
|
getApllicationsById(formId, contextId) {
|
|
2617
|
-
return this.http.get(API_END_POINTS$
|
|
2617
|
+
return this.http.get(API_END_POINTS$8.GET_APPLICATIONS_BY_ID(formId, contextId));
|
|
2618
2618
|
}
|
|
2619
2619
|
shareContent(reqBody) {
|
|
2620
|
-
return this.http.post(`${API_END_POINTS$
|
|
2620
|
+
return this.http.post(`${API_END_POINTS$8.SHARE_CONTENT}`, reqBody);
|
|
2621
2621
|
}
|
|
2622
2622
|
checkModuleWiseData(content) {
|
|
2623
2623
|
if (content && content.children) {
|
|
@@ -2665,15 +2665,15 @@ class AppTocService {
|
|
|
2665
2665
|
this.transriptionActiveLanguageDataObject.next(activeLang);
|
|
2666
2666
|
}
|
|
2667
2667
|
aiGetResourceVttFile(resourceID) {
|
|
2668
|
-
return this.http.get(`${API_END_POINTS$
|
|
2668
|
+
return this.http.get(`${API_END_POINTS$8.AI_RESOURCE_VTT_FILE}?resource_id=${resourceID}`);
|
|
2669
2669
|
}
|
|
2670
2670
|
readPreEnrollmentResourcesState(req) {
|
|
2671
2671
|
return this.http
|
|
2672
|
-
.post(`${API_END_POINTS$
|
|
2672
|
+
.post(`${API_END_POINTS$8.PRE_ENROLLMENT_STATE_READ}`, req);
|
|
2673
2673
|
}
|
|
2674
2674
|
createContentV2(requestBody) {
|
|
2675
2675
|
return this.http
|
|
2676
|
-
.post(`${API_END_POINTS$
|
|
2676
|
+
.post(`${API_END_POINTS$8.CREATE_RESOURCE}`, requestBody)
|
|
2677
2677
|
.pipe(map((data) => {
|
|
2678
2678
|
return data.result.identifier;
|
|
2679
2679
|
}));
|
|
@@ -2681,10 +2681,10 @@ class AppTocService {
|
|
|
2681
2681
|
uploadAssignmentAnswer(contentId, batchId, assignmentId, file) {
|
|
2682
2682
|
const formData = new FormData();
|
|
2683
2683
|
formData.append('file', file, file.name);
|
|
2684
|
-
return this.http.post(`${API_END_POINTS$
|
|
2684
|
+
return this.http.post(`${API_END_POINTS$8.UPLOAD_ASSIGNMENT}/${contentId}/${batchId}/${assignmentId}`, formData);
|
|
2685
2685
|
}
|
|
2686
2686
|
readContentV2(id) {
|
|
2687
|
-
return this.http.get(`${API_END_POINTS$
|
|
2687
|
+
return this.http.get(`${API_END_POINTS$8.READ_RESOURCE}read/${id}?mode=edit`).pipe(map((data) => {
|
|
2688
2688
|
return data.result.content;
|
|
2689
2689
|
}));
|
|
2690
2690
|
}
|
|
@@ -2696,7 +2696,7 @@ class AppTocService {
|
|
|
2696
2696
|
}
|
|
2697
2697
|
const newFormData = new FormData();
|
|
2698
2698
|
newFormData.append('data', file, fileName);
|
|
2699
|
-
return this.http.post(`${API_END_POINTS$
|
|
2699
|
+
return this.http.post(`${API_END_POINTS$8.UPLOAD_FILE}upload/${contentData.contentId}`, newFormData, options);
|
|
2700
2700
|
}
|
|
2701
2701
|
appendToFilename(filename) {
|
|
2702
2702
|
const timeStamp = new Date().getTime();
|
|
@@ -2707,22 +2707,22 @@ class AppTocService {
|
|
|
2707
2707
|
return filename.substring(0, dotIndex) + timeStamp + filename.substring(dotIndex);
|
|
2708
2708
|
}
|
|
2709
2709
|
updateContentWithFewFields(requestBody, identifier) {
|
|
2710
|
-
return this.http.patch(`${API_END_POINTS$
|
|
2710
|
+
return this.http.patch(`${API_END_POINTS$8.UPDATE_RESOURCE}/${identifier}`, requestBody);
|
|
2711
2711
|
}
|
|
2712
2712
|
searchAssignments(request) {
|
|
2713
|
-
return this.http.post(API_END_POINTS$
|
|
2713
|
+
return this.http.post(API_END_POINTS$8.SEARCH, request);
|
|
2714
2714
|
}
|
|
2715
2715
|
submitDraftAssignment(request) {
|
|
2716
|
-
return this.http.put(API_END_POINTS$
|
|
2716
|
+
return this.http.put(API_END_POINTS$8.SUBMIT_DRAFT_ASSIGNMENT, request);
|
|
2717
2717
|
}
|
|
2718
2718
|
submitAssignment(request) {
|
|
2719
|
-
return this.http.post(API_END_POINTS$
|
|
2719
|
+
return this.http.post(API_END_POINTS$8.SUBMIT_ASSIGNMENT, request);
|
|
2720
2720
|
}
|
|
2721
2721
|
notifyAssignmentSubmission(payload) {
|
|
2722
|
-
return this.http.post(API_END_POINTS$
|
|
2722
|
+
return this.http.post(API_END_POINTS$8.NOTIFY_ASSIGNMENT_SUBMISSION, payload);
|
|
2723
2723
|
}
|
|
2724
2724
|
getAssignmentStatus(request) {
|
|
2725
|
-
return this.http.post(`${API_END_POINTS$
|
|
2725
|
+
return this.http.post(`${API_END_POINTS$8.ASSIGNMENT_STATUS}`, request);
|
|
2726
2726
|
}
|
|
2727
2727
|
readAssignmentFile(contentId, batchId, assignmentId, fileName) {
|
|
2728
2728
|
// Properly encode the parameters to avoid malformed request errors
|
|
@@ -2732,7 +2732,7 @@ class AppTocService {
|
|
|
2732
2732
|
formId: assignmentId || '',
|
|
2733
2733
|
fileName: fileName || ''
|
|
2734
2734
|
});
|
|
2735
|
-
return this.http.get(`${API_END_POINTS$
|
|
2735
|
+
return this.http.get(`${API_END_POINTS$8.READ_ASSIGNMENT}?${encodedParams.toString()}`, {
|
|
2736
2736
|
responseType: 'blob',
|
|
2737
2737
|
headers: {
|
|
2738
2738
|
'Accept': 'application/octet-stream, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
|
@@ -4508,7 +4508,7 @@ function HttpLoaderFactory(http) {
|
|
|
4508
4508
|
}
|
|
4509
4509
|
|
|
4510
4510
|
const PROXY_SLAG_V8 = '/apis/proxies/v8';
|
|
4511
|
-
const API_END_POINTS$
|
|
4511
|
+
const API_END_POINTS$7 = {
|
|
4512
4512
|
GET_RATING: (contentId, contentType, userId) => `${PROXY_SLAG_V8}/ratings/v1/read/${contentId}/${contentType}/${userId}`,
|
|
4513
4513
|
ADD_OR_UPDATE: `${PROXY_SLAG_V8}/ratings/v1/upsert`,
|
|
4514
4514
|
GET_RATING_SUMMARY: (contentId, contentType) => `${PROXY_SLAG_V8}/ratings/v1/summary/${contentId}/${contentType}`,
|
|
@@ -4523,27 +4523,27 @@ class RatingService {
|
|
|
4523
4523
|
getRating(contentId, contentType, userId) {
|
|
4524
4524
|
const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');
|
|
4525
4525
|
if (!forPreview) {
|
|
4526
|
-
return this.http.get(API_END_POINTS$
|
|
4526
|
+
return this.http.get(API_END_POINTS$7.GET_RATING(contentId, contentType, userId));
|
|
4527
4527
|
}
|
|
4528
4528
|
return of({});
|
|
4529
4529
|
}
|
|
4530
4530
|
addOrUpdateRating(req) {
|
|
4531
|
-
return this.http.post(API_END_POINTS$
|
|
4531
|
+
return this.http.post(API_END_POINTS$7.ADD_OR_UPDATE, req);
|
|
4532
4532
|
}
|
|
4533
4533
|
getRatingSummary(contentId, contentType) {
|
|
4534
4534
|
const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');
|
|
4535
4535
|
if (!forPreview) {
|
|
4536
|
-
return this.http.get(API_END_POINTS$
|
|
4536
|
+
return this.http.get(API_END_POINTS$7.GET_RATING_SUMMARY(contentId, contentType));
|
|
4537
4537
|
}
|
|
4538
4538
|
return of({});
|
|
4539
4539
|
}
|
|
4540
4540
|
getRatingLookup(req) {
|
|
4541
|
-
return this.http.post(API_END_POINTS$
|
|
4541
|
+
return this.http.post(API_END_POINTS$7.GET_RATING_LOOKUP, req);
|
|
4542
4542
|
}
|
|
4543
4543
|
getRatingReply(req) {
|
|
4544
4544
|
const forPreview = window.location.href.includes('/public/') || window.location.href.includes('&preview=true');
|
|
4545
4545
|
if (!forPreview) {
|
|
4546
|
-
return this.http.post(API_END_POINTS$
|
|
4546
|
+
return this.http.post(API_END_POINTS$7.POST_AUTHOR_REPLY, req);
|
|
4547
4547
|
}
|
|
4548
4548
|
return of({});
|
|
4549
4549
|
}
|
|
@@ -4580,7 +4580,7 @@ class RatingService {
|
|
|
4580
4580
|
return false;
|
|
4581
4581
|
}
|
|
4582
4582
|
getAuthorReply(contentId, userID) {
|
|
4583
|
-
return this.http.get(API_END_POINTS$
|
|
4583
|
+
return this.http.get(API_END_POINTS$7.GET_AUTHOR_REPLY(contentId, userID));
|
|
4584
4584
|
}
|
|
4585
4585
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RatingService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4586
4586
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RatingService, providedIn: 'root' }); }
|
|
@@ -6227,7 +6227,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6227
6227
|
|
|
6228
6228
|
// tslint:enable
|
|
6229
6229
|
// const PROTECTED_SLAG_V8 = '/apis/protected/v8'
|
|
6230
|
-
const API_END_POINTS$
|
|
6230
|
+
const API_END_POINTS$6 = {
|
|
6231
6231
|
// getUserdetailsV2FromRegistry: '/apis/protected/v8/user/profileRegistry/getUserRegistryByUser',
|
|
6232
6232
|
getUserdetailsV2FromRegistry: '/apis/proxies/v8/api/user/v2/read',
|
|
6233
6233
|
};
|
|
@@ -6236,7 +6236,7 @@ class ConnectionHoverService {
|
|
|
6236
6236
|
this.http = http;
|
|
6237
6237
|
}
|
|
6238
6238
|
fetchProfile(userId) {
|
|
6239
|
-
return this.http.get(`${API_END_POINTS$
|
|
6239
|
+
return this.http.get(`${API_END_POINTS$6.getUserdetailsV2FromRegistry}/${userId}`)
|
|
6240
6240
|
.pipe(map((data) => {
|
|
6241
6241
|
// tslint:disable-next-line: prefer-const
|
|
6242
6242
|
let profile;
|
|
@@ -6374,51 +6374,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6374
6374
|
}]
|
|
6375
6375
|
}], ctorParameters: function () { return [{ type: i1$1.Router }]; } });
|
|
6376
6376
|
|
|
6377
|
-
/**
|
|
6378
|
-
* Discuss Utils Service
|
|
6379
|
-
* Handles discussion forum related utilities
|
|
6380
|
-
*/
|
|
6381
6377
|
class DiscussUtilsService {
|
|
6382
|
-
constructor(
|
|
6383
|
-
|
|
6378
|
+
constructor() { }
|
|
6379
|
+
/*Get color Hex code by passing a string*/
|
|
6380
|
+
stringToColor(str) {
|
|
6381
|
+
let hash = 0;
|
|
6382
|
+
// tslint:disable-next-line: no-increment-decrement
|
|
6383
|
+
for (let i = 0; i < str.length; i++) {
|
|
6384
|
+
// tslint:disable-next-line: no-bitwise
|
|
6385
|
+
hash = str.charCodeAt(i) + ((hash << 5) - hash);
|
|
6386
|
+
}
|
|
6387
|
+
const hue = Math.abs(hash % 360);
|
|
6388
|
+
// tslint:disable-next-line: prefer-template
|
|
6389
|
+
const colour = 'hsl(' + hue + ',100%,30%)';
|
|
6390
|
+
// tslint:disable-next-line: prefer-template
|
|
6391
|
+
// const colour = 'hsl(' + hue + ',100%,80%)'
|
|
6392
|
+
return colour;
|
|
6384
6393
|
}
|
|
6385
|
-
|
|
6386
|
-
|
|
6387
|
-
|
|
6388
|
-
|
|
6389
|
-
|
|
6390
|
-
|
|
6391
|
-
|
|
6392
|
-
|
|
6394
|
+
/*Get text contrast by passing background hex color*/
|
|
6395
|
+
getContrast(_hexcolor) {
|
|
6396
|
+
// right now going with harcoded approach
|
|
6397
|
+
// const r = parseInt(hexcolor.substr(1, 2), 16)
|
|
6398
|
+
// const g = parseInt(hexcolor.substr(3, 2), 16)
|
|
6399
|
+
// const b = parseInt(hexcolor.substr(5, 2), 16)
|
|
6400
|
+
// const color = ((r * 299) + (g * 587) + (b * 114)) / 1000
|
|
6401
|
+
// return (color >= 160) ? '#000000' : '#ffffff'
|
|
6402
|
+
return 'rgba(255, 255, 255, 80%)';
|
|
6393
6403
|
}
|
|
6394
|
-
/**
|
|
6395
|
-
* Set discussion forum configuration
|
|
6396
|
-
*/
|
|
6397
6404
|
setDiscussionConfig(config) {
|
|
6398
|
-
|
|
6399
|
-
console.log('DiscussUtilsService.setDiscussionConfig:', config);
|
|
6400
|
-
}
|
|
6401
|
-
/**
|
|
6402
|
-
* Navigate to discussion forum
|
|
6403
|
-
*/
|
|
6404
|
-
navigateToDiscussion(contentId) {
|
|
6405
|
-
// Stub implementation
|
|
6406
|
-
console.log('DiscussUtilsService.navigateToDiscussion:', contentId);
|
|
6407
|
-
}
|
|
6408
|
-
/**
|
|
6409
|
-
* Get discussion count for content
|
|
6410
|
-
*/
|
|
6411
|
-
getDiscussionCount(contentId) {
|
|
6412
|
-
return of(0);
|
|
6405
|
+
this.discussionCnfig = config;
|
|
6413
6406
|
}
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
*/
|
|
6417
|
-
setDiscussConfig(config) {
|
|
6418
|
-
// Stub implementation
|
|
6419
|
-
console.log('DiscussUtilsService.setDiscussConfig:', config);
|
|
6407
|
+
getDiscussionConfig() {
|
|
6408
|
+
return this.discussionCnfig;
|
|
6420
6409
|
}
|
|
6421
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DiscussUtilsService, deps: [
|
|
6410
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DiscussUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6422
6411
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DiscussUtilsService, providedIn: 'root' }); }
|
|
6423
6412
|
}
|
|
6424
6413
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DiscussUtilsService, decorators: [{
|
|
@@ -6426,7 +6415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6426
6415
|
args: [{
|
|
6427
6416
|
providedIn: 'root',
|
|
6428
6417
|
}]
|
|
6429
|
-
}], ctorParameters: function () { return [
|
|
6418
|
+
}], ctorParameters: function () { return []; } });
|
|
6430
6419
|
|
|
6431
6420
|
class BtnPageBackComponent extends WidgetBaseComponent {
|
|
6432
6421
|
constructor(btnBackSvc, router, configSvc, discussUtilitySvc, translate, langtranslations, environment) {
|
|
@@ -6849,7 +6838,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
6849
6838
|
}]
|
|
6850
6839
|
}], ctorParameters: function () { return []; } });
|
|
6851
6840
|
|
|
6852
|
-
const API_END_POINTS$
|
|
6841
|
+
const API_END_POINTS$5 = {
|
|
6853
6842
|
SEARCH_V6: `/apis/proxies/v8/sunbirdigot/search`,
|
|
6854
6843
|
};
|
|
6855
6844
|
class SamuhikCharchaService {
|
|
@@ -6861,7 +6850,7 @@ class SamuhikCharchaService {
|
|
|
6861
6850
|
return this.http.get(`${this.configSvc.sitePath}/feature/samuhik-charcha.json`).pipe();
|
|
6862
6851
|
}
|
|
6863
6852
|
getSearchV6Results(body) {
|
|
6864
|
-
return this.http.post(API_END_POINTS$
|
|
6853
|
+
return this.http.post(API_END_POINTS$5.SEARCH_V6, body)
|
|
6865
6854
|
.pipe();
|
|
6866
6855
|
}
|
|
6867
6856
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SamuhikCharchaService, deps: [{ token: i1.HttpClient }, { token: i2$1.ConfigurationsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -7780,7 +7769,7 @@ class AppTocAboutComponent {
|
|
|
7780
7769
|
// );
|
|
7781
7770
|
// }
|
|
7782
7771
|
// );
|
|
7783
|
-
// } else {
|
|
7772
|
+
// } else {
|
|
7784
7773
|
// this.contentSvc.downloadCert(certId).subscribe(
|
|
7785
7774
|
// (response) => {
|
|
7786
7775
|
// if (this.content) {
|
|
@@ -8939,7 +8928,6 @@ class AppTocContentCardV2Component {
|
|
|
8939
8928
|
}
|
|
8940
8929
|
}
|
|
8941
8930
|
downloadCertificate(certificateData) {
|
|
8942
|
-
debugger;
|
|
8943
8931
|
this.events.raiseInteractTelemetry({
|
|
8944
8932
|
type: WsEvents.EnumInteractTypes.CLICK,
|
|
8945
8933
|
id: 'view-certificate',
|
|
@@ -9231,7 +9219,6 @@ class AppTocContentCardV2Component {
|
|
|
9231
9219
|
* View milestone achievement - calls the achievement API and shows the result
|
|
9232
9220
|
*/
|
|
9233
9221
|
viewMilestoneAchievement(event, mileStoneData) {
|
|
9234
|
-
debugger;
|
|
9235
9222
|
if (event) {
|
|
9236
9223
|
event.preventDefault();
|
|
9237
9224
|
event.stopPropagation();
|
|
@@ -10840,7 +10827,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
10840
10827
|
}], ctorParameters: function () { return [{ type: i1$3.MatLegacyDialogRef }]; } });
|
|
10841
10828
|
|
|
10842
10829
|
const PROXY_CREATE_V8$1 = '/apis/proxies/v8';
|
|
10843
|
-
const API_END_POINTS$
|
|
10830
|
+
const API_END_POINTS$4 = {
|
|
10844
10831
|
CREATE_USER_API: `${PROXY_CREATE_V8$1}/discussion/user/v1/create`,
|
|
10845
10832
|
LANGUAGES: '/api/faq/v1/assistant/available/language',
|
|
10846
10833
|
CONFIG: '/api/faq/v1/assistant/configs/language',
|
|
@@ -10857,7 +10844,7 @@ class RootService {
|
|
|
10857
10844
|
this.showNavbarDisplay$ = new BehaviorSubject(true);
|
|
10858
10845
|
}
|
|
10859
10846
|
createUser(request) {
|
|
10860
|
-
return this.http.post(API_END_POINTS$
|
|
10847
|
+
return this.http.post(API_END_POINTS$4.CREATE_USER_API, request);
|
|
10861
10848
|
}
|
|
10862
10849
|
setDiscussionConfig(config) {
|
|
10863
10850
|
this.discussionCnfig = config;
|
|
@@ -10886,13 +10873,13 @@ class RootService {
|
|
|
10886
10873
|
document.cookie = `${name}=${value}; ${expires}${cpath}`;
|
|
10887
10874
|
}
|
|
10888
10875
|
getChatData(tabType) {
|
|
10889
|
-
return this.http.post(`${API_END_POINTS$
|
|
10876
|
+
return this.http.post(`${API_END_POINTS$4.CONFIG}`, tabType);
|
|
10890
10877
|
}
|
|
10891
10878
|
getLangugages() {
|
|
10892
|
-
return this.http.get(`${API_END_POINTS$
|
|
10879
|
+
return this.http.get(`${API_END_POINTS$4.LANGUAGES}`);
|
|
10893
10880
|
}
|
|
10894
10881
|
aiGlobalSearch(requestBody, chatId, userID) {
|
|
10895
|
-
return this.http.post(`${API_END_POINTS$
|
|
10882
|
+
return this.http.post(`${API_END_POINTS$4.AI_GLOBAL_SEARCH}?chatID=${chatId}&userID=${userID}`, requestBody).pipe(catchError(error => {
|
|
10896
10883
|
if (error.status === 502) {
|
|
10897
10884
|
console.error('502 Bad Gateway from aiGlobalSearch');
|
|
10898
10885
|
}
|
|
@@ -10907,25 +10894,25 @@ class RootService {
|
|
|
10907
10894
|
}
|
|
10908
10895
|
saveAIChatPositiveContentRating(requestBody, chatId, userID) {
|
|
10909
10896
|
console.log('chatId=', chatId, 'userID=', userID);
|
|
10910
|
-
return this.http.post(`${API_END_POINTS$
|
|
10897
|
+
return this.http.post(`${API_END_POINTS$4.AI_CHAT_FEEDBACK}?chatID=${chatId}&userID=${userID}`, requestBody);
|
|
10911
10898
|
}
|
|
10912
10899
|
shareAIFeedback(requestBody, chatId, userID) {
|
|
10913
|
-
return this.http.post(`${API_END_POINTS$
|
|
10900
|
+
return this.http.post(`${API_END_POINTS$4.AI_CHAT_FEEDBACK}?chatID=${chatId}&userID=${userID}`, requestBody);
|
|
10914
10901
|
}
|
|
10915
10902
|
aiGlobalSearchFromInternet(requestBody, chatId, userID) {
|
|
10916
|
-
return this.http.post(`${API_END_POINTS$
|
|
10903
|
+
return this.http.post(`${API_END_POINTS$4.AI_GLOBAL_INTERNET_SEARCH}?chatID=${chatId}&user_id=${userID}`, requestBody);
|
|
10917
10904
|
}
|
|
10918
10905
|
aiStartChathForSupport(requestBody, userID) {
|
|
10919
10906
|
const headers = new HttpHeaders()
|
|
10920
10907
|
.set('user-id', userID);
|
|
10921
|
-
return this.http.post(`${API_END_POINTS$
|
|
10908
|
+
return this.http.post(`${API_END_POINTS$4.SUPPORT_AI_START_CHAT}`, requestBody, {
|
|
10922
10909
|
headers
|
|
10923
10910
|
});
|
|
10924
10911
|
}
|
|
10925
10912
|
aiSendChathForSupport(requestBody, userID) {
|
|
10926
10913
|
const headers = new HttpHeaders()
|
|
10927
10914
|
.set('user-id', userID);
|
|
10928
|
-
return this.http.post(`${API_END_POINTS$
|
|
10915
|
+
return this.http.post(`${API_END_POINTS$4.SUPPORT_AI_SEND_CHAT}`, requestBody, {
|
|
10929
10916
|
headers
|
|
10930
10917
|
});
|
|
10931
10918
|
}
|
|
@@ -10940,7 +10927,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
10940
10927
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
10941
10928
|
|
|
10942
10929
|
const PROXY_CREATE_V8 = '/apis/proxies/v8';
|
|
10943
|
-
const API_END_POINTS = {
|
|
10930
|
+
const API_END_POINTS$3 = {
|
|
10944
10931
|
GET_JWT_TOCKEN: `${PROXY_CREATE_V8}/fetchUserToken`
|
|
10945
10932
|
};
|
|
10946
10933
|
class WebSocketService {
|
|
@@ -11043,7 +11030,7 @@ class WebSocketService {
|
|
|
11043
11030
|
}
|
|
11044
11031
|
getJWTToken() {
|
|
11045
11032
|
// console.log('get token')
|
|
11046
|
-
return this.http.get(`${API_END_POINTS.GET_JWT_TOCKEN}`);
|
|
11033
|
+
return this.http.get(`${API_END_POINTS$3.GET_JWT_TOCKEN}`);
|
|
11047
11034
|
}
|
|
11048
11035
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebSocketService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11049
11036
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebSocketService, providedIn: 'root' }); }
|
|
@@ -12573,7 +12560,6 @@ class ContentTocComponent {
|
|
|
12573
12560
|
}
|
|
12574
12561
|
}
|
|
12575
12562
|
showAiTutorConfirmPopup() {
|
|
12576
|
-
debugger;
|
|
12577
12563
|
this.raiseAIPopupStartTelemetry();
|
|
12578
12564
|
if (this.isEnrolled) {
|
|
12579
12565
|
this.fromAITutor = true;
|
|
@@ -14197,51 +14183,115 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
14197
14183
|
args: ['environment']
|
|
14198
14184
|
}] }]; } });
|
|
14199
14185
|
|
|
14200
|
-
|
|
14201
|
-
|
|
14202
|
-
|
|
14203
|
-
|
|
14204
|
-
* Note: This is a minimal stub. The consuming application should provide
|
|
14205
|
-
* a proper implementation if full functionality is needed.
|
|
14206
|
-
*/
|
|
14186
|
+
const API_END_POINTS$2 = {
|
|
14187
|
+
FORM_READ: `/apis/v1/form/read`,
|
|
14188
|
+
ORG_READ: '/api/org/v1/read',
|
|
14189
|
+
};
|
|
14207
14190
|
class NetCoreService {
|
|
14208
|
-
constructor() {
|
|
14209
|
-
|
|
14210
|
-
|
|
14211
|
-
*/
|
|
14212
|
-
trackEvent(eventName, eventData) {
|
|
14213
|
-
// Stub implementation
|
|
14214
|
-
console.log('NetCoreService.trackEvent:', eventName, eventData);
|
|
14191
|
+
constructor(http, configSvc) {
|
|
14192
|
+
this.http = http;
|
|
14193
|
+
this.configSvc = configSvc;
|
|
14215
14194
|
}
|
|
14216
|
-
|
|
14217
|
-
|
|
14218
|
-
|
|
14219
|
-
|
|
14220
|
-
|
|
14221
|
-
|
|
14195
|
+
getOrgReadData(organisationId) {
|
|
14196
|
+
const request = {
|
|
14197
|
+
request: {
|
|
14198
|
+
organisationId,
|
|
14199
|
+
},
|
|
14200
|
+
};
|
|
14201
|
+
return this.http.post(API_END_POINTS$2.ORG_READ, request).pipe(map((res) => {
|
|
14202
|
+
return _.get(res, 'result.response');
|
|
14203
|
+
}));
|
|
14222
14204
|
}
|
|
14223
|
-
|
|
14224
|
-
|
|
14225
|
-
|
|
14226
|
-
|
|
14227
|
-
|
|
14228
|
-
|
|
14205
|
+
netCoreConfigReadData(payload) {
|
|
14206
|
+
return this.formReadData(payload).pipe(map((rData) => {
|
|
14207
|
+
const finalData = rData && rData.result.form.data;
|
|
14208
|
+
return (finalData);
|
|
14209
|
+
}), catchError((_error) => {
|
|
14210
|
+
const baseUrl = this.configSvc.sitePath;
|
|
14211
|
+
return this.http.get(`${baseUrl}/netcore.json`).pipe(map(data => (data)), catchError(err => of({ data: null, error: err })));
|
|
14212
|
+
}));
|
|
14229
14213
|
}
|
|
14230
|
-
|
|
14231
|
-
|
|
14232
|
-
*/
|
|
14233
|
-
logout() {
|
|
14234
|
-
// Stub implementation
|
|
14235
|
-
console.log('NetCoreService.logout');
|
|
14214
|
+
formReadData(request) {
|
|
14215
|
+
return this.http.post(API_END_POINTS$2.FORM_READ, request);
|
|
14236
14216
|
}
|
|
14237
|
-
|
|
14238
|
-
|
|
14239
|
-
|
|
14240
|
-
|
|
14241
|
-
|
|
14242
|
-
|
|
14217
|
+
netCoreUserLoginSetup(payload) {
|
|
14218
|
+
/* tslint:disable */
|
|
14219
|
+
// console.log('this.configSvc.unMappedUser', payload)
|
|
14220
|
+
/* tslint:enable */
|
|
14221
|
+
smartech('contact', '', payload);
|
|
14222
|
+
}
|
|
14223
|
+
netCoreUserNameUpdate(payload) {
|
|
14224
|
+
/* tslint:disable */
|
|
14225
|
+
// console.log('this.configSvc.unMappedUser', payload)
|
|
14226
|
+
/* tslint:enable */
|
|
14227
|
+
smartech('contact', '', payload);
|
|
14243
14228
|
}
|
|
14244
|
-
|
|
14229
|
+
netCoreUserProfilePhotoUpdate(payload) {
|
|
14230
|
+
/* tslint:disable */
|
|
14231
|
+
// console.log('this.configSvc.unMappedUser', payload)
|
|
14232
|
+
/* tslint:enable */
|
|
14233
|
+
smartech('contact', '', payload);
|
|
14234
|
+
}
|
|
14235
|
+
netCoreUserProfilepdate(payload) {
|
|
14236
|
+
/* tslint:disable */
|
|
14237
|
+
// console.log('this.configSvc.unMappedUser', payload)
|
|
14238
|
+
/* tslint:enable */
|
|
14239
|
+
smartech('contact', '', payload);
|
|
14240
|
+
}
|
|
14241
|
+
netCoreUserProfileUpdateEvent(payload, eventName, userIdentifier) {
|
|
14242
|
+
/* tslint:disable */
|
|
14243
|
+
// console.log('this.configSvc.unMappedUser', payload)
|
|
14244
|
+
// console.log('eventName', eventName)
|
|
14245
|
+
// console.log('userIdentifier', userIdentifier)
|
|
14246
|
+
/* tslint:enable */
|
|
14247
|
+
smartech('identify', userIdentifier);
|
|
14248
|
+
smartech('dispatch', eventName, payload);
|
|
14249
|
+
}
|
|
14250
|
+
trackEvent(eventName, userIdentifier, userpayload) {
|
|
14251
|
+
// Get the current time (server time)
|
|
14252
|
+
let serverTime = moment();
|
|
14253
|
+
serverTime = serverTime.add(5, 'hours').add(30, 'minutes');
|
|
14254
|
+
// Display the server time
|
|
14255
|
+
/* tslint:disable */
|
|
14256
|
+
// console.log("Server Time: ", serverTime.format('YYYY-MM-DD HH:mm:ss'));
|
|
14257
|
+
// console.log('eventName', eventName)
|
|
14258
|
+
// console.log('userIdentifier', userIdentifier)
|
|
14259
|
+
let payload = {
|
|
14260
|
+
'action_time': serverTime.format('YYYY-MM-DD HH:mm:ss'),
|
|
14261
|
+
'action_device': 'Desktop'
|
|
14262
|
+
};
|
|
14263
|
+
// console.log('payload', payload)
|
|
14264
|
+
console.log('userpayload', userpayload);
|
|
14265
|
+
if (userpayload && (typeof userpayload === 'object' || userpayload.length)) {
|
|
14266
|
+
payload['profile_attribute_updated'] = userpayload.toString();
|
|
14267
|
+
}
|
|
14268
|
+
// console.log('payload', payload)
|
|
14269
|
+
smartech('identify', userIdentifier);
|
|
14270
|
+
smartech('dispatch', eventName, payload);
|
|
14271
|
+
}
|
|
14272
|
+
trackEventForContentAndEvent(eventName, userIdentifier, contentpayload) {
|
|
14273
|
+
// Get the current time (server time)
|
|
14274
|
+
let serverTime = moment();
|
|
14275
|
+
serverTime = serverTime.add(5, 'hours').add(30, 'minutes');
|
|
14276
|
+
// Display the server time
|
|
14277
|
+
/* tslint:disable */
|
|
14278
|
+
// console.log("Server Time: ", serverTime.format('YYYY-MM-DD HH:mm:ss'));
|
|
14279
|
+
// console.log('eventName', eventName)
|
|
14280
|
+
// console.log('userIdentifier', userIdentifier)
|
|
14281
|
+
let payload = {
|
|
14282
|
+
'action_time': serverTime.format('YYYY-MM-DD HH:mm:ss'),
|
|
14283
|
+
'action_device': 'Desktop'
|
|
14284
|
+
};
|
|
14285
|
+
// console.log('payload', payload)
|
|
14286
|
+
if (!Object.keys(contentpayload).length) {
|
|
14287
|
+
contentpayload = {};
|
|
14288
|
+
}
|
|
14289
|
+
let mergedPayload = { ...payload, ...contentpayload };
|
|
14290
|
+
// console.log('mergedPayload--', mergedPayload)
|
|
14291
|
+
smartech('identify', userIdentifier);
|
|
14292
|
+
smartech('dispatch', eventName, mergedPayload);
|
|
14293
|
+
}
|
|
14294
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NetCoreService, deps: [{ token: i1.HttpClient }, { token: i2$1.ConfigurationsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14245
14295
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NetCoreService, providedIn: 'root' }); }
|
|
14246
14296
|
}
|
|
14247
14297
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NetCoreService, decorators: [{
|
|
@@ -14249,7 +14299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
14249
14299
|
args: [{
|
|
14250
14300
|
providedIn: 'root',
|
|
14251
14301
|
}]
|
|
14252
|
-
}], ctorParameters: function () { return []; } });
|
|
14302
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2$1.ConfigurationsService }]; } });
|
|
14253
14303
|
|
|
14254
14304
|
dayjs.extend(isSameOrBefore);
|
|
14255
14305
|
var ErrorType$1;
|
|
@@ -17705,93 +17755,236 @@ var NsUserProfileDetails;
|
|
|
17705
17755
|
})(ECategory = NsUserProfileDetails.ECategory || (NsUserProfileDetails.ECategory = {}));
|
|
17706
17756
|
})(NsUserProfileDetails || (NsUserProfileDetails = {}));
|
|
17707
17757
|
|
|
17708
|
-
|
|
17709
|
-
|
|
17710
|
-
|
|
17711
|
-
|
|
17712
|
-
|
|
17713
|
-
|
|
17714
|
-
|
|
17715
|
-
|
|
17758
|
+
// tslint:enable
|
|
17759
|
+
const API_ENDPOINTS$1 = {
|
|
17760
|
+
updateProfileDetails: '/apis/protected/v8/user/profileDetails/updateUser',
|
|
17761
|
+
getUserdetailsFromRegistry: '/apis/proxies/v8/api/user/v2/read',
|
|
17762
|
+
getUserdetails: '/apis/protected/v8/user/details/detailV1',
|
|
17763
|
+
getMasterNationality: '/apis/protected/v8/user/profileRegistry/getMasterNationalities',
|
|
17764
|
+
getMasterCountries: '/apis/protected/v8/user/profileRegistry/getMasterCountries',
|
|
17765
|
+
getMasterLanguages: '/apis/protected/v8/user/profileRegistry/getMasterLanguages',
|
|
17766
|
+
getProfilePageMeta: '/apis/protected/v8/user/profileRegistry/getProfilePageMeta',
|
|
17767
|
+
getAllDepartments: '/apis/protected/v8/portal/listDeptNames',
|
|
17768
|
+
approveRequest: '/apis/protected/v8/workflowhandler/transition',
|
|
17769
|
+
getPendingFields: '/apis/proxies/v8/workflow/v2/userWFApplicationFieldsSearch',
|
|
17770
|
+
getApprovalPendingFields: '/apis/proxies/v8/workflow/v2/userWFApplicationFieldsSearch',
|
|
17771
|
+
getDesignation: '/apis/proxies/v8/user/v1/positions',
|
|
17772
|
+
GET_SEARCH_DESIGNATIONS: '/apis/proxies/v8/designation/search',
|
|
17773
|
+
GET_SEARCH_PUBLIC_DESIGNATIONS: '/apis/public/v8/designation/search',
|
|
17774
|
+
GET_SUNBIRD_IGOT_SEARCH: '/apis/proxies/v8/sunbirdigot/v4/search',
|
|
17775
|
+
editProfileDetails: '/apis/proxies/v8/user/v1/extPatch',
|
|
17776
|
+
updatePrimaryEmail: '/apis/proxies/v8/user/otp/v2/extPatch',
|
|
17777
|
+
updateProfilePic: '/apis/proxies/v8/storage/profilePhotoUpload/profileImage',
|
|
17778
|
+
GET_GROUPS: '/api/user/v1/groups',
|
|
17779
|
+
getApprovalReqs: '/apis/protected/v8/workflowhandler/applicationsSearch',
|
|
17780
|
+
ehrmsDataRequest: '/apis/proxies/v8/ehrms/details',
|
|
17781
|
+
withDrawRequest: '/apis/protected/v8/workflowhandler/transition',
|
|
17782
|
+
approvedDomains: 'apis/proxies/v8/user/v1/email/approvedDomains',
|
|
17783
|
+
GET_DESIGNATION_V2: '/apis/proxies/v8/designation/search',
|
|
17784
|
+
GET_ORGANIZATION_V1: '/apis/proxies/v8/org/v1/search',
|
|
17785
|
+
ORG_CUSTOM_FIELDS: `apis/proxies/v8/customFields/v1/search`,
|
|
17786
|
+
UPDATE_CUSTOM_FIELDS: `apis/proxies/v8/user/profile/v1/update/additionalFields`,
|
|
17787
|
+
READ_CUSTOM_FIELDS_VALUES: `apis/proxies/v8/user/profile/v1/getAdditionalFields`,
|
|
17788
|
+
READ_ORG_DETAILS: 'api/org/v1/read',
|
|
17716
17789
|
};
|
|
17717
17790
|
class UserProfileService {
|
|
17718
|
-
constructor(http) {
|
|
17791
|
+
constructor(http, translateService) {
|
|
17719
17792
|
this.http = http;
|
|
17793
|
+
this.translateService = translateService;
|
|
17794
|
+
if (localStorage.getItem('websiteLanguage')) {
|
|
17795
|
+
this.translateService.setDefaultLang('en');
|
|
17796
|
+
const lang = localStorage.getItem('websiteLanguage');
|
|
17797
|
+
this.translateService.use(lang);
|
|
17798
|
+
}
|
|
17720
17799
|
}
|
|
17721
|
-
|
|
17722
|
-
|
|
17800
|
+
handleTranslateTo(menuName) {
|
|
17801
|
+
// tslint:disable-next-line: prefer-template
|
|
17802
|
+
const translationKey = 'profileInfo.' + menuName.replace(/\s/g, '');
|
|
17803
|
+
return this.translateService.instant(translationKey);
|
|
17804
|
+
}
|
|
17805
|
+
editProfileDetails(data) {
|
|
17806
|
+
return this.http.post(API_ENDPOINTS$1.editProfileDetails, data);
|
|
17723
17807
|
}
|
|
17724
|
-
|
|
17725
|
-
return this.http.
|
|
17808
|
+
updatePrimaryEmailDetails(data) {
|
|
17809
|
+
return this.http.post(API_ENDPOINTS$1.updatePrimaryEmail, data);
|
|
17726
17810
|
}
|
|
17727
|
-
|
|
17728
|
-
return this.http.
|
|
17811
|
+
updateProfileDetails(data) {
|
|
17812
|
+
return this.http.patch(API_ENDPOINTS$1.updateProfileDetails, data);
|
|
17729
17813
|
}
|
|
17730
|
-
|
|
17731
|
-
return
|
|
17814
|
+
getUserdetails(email) {
|
|
17815
|
+
return this.http.post(API_ENDPOINTS$1.getUserdetails, { email });
|
|
17816
|
+
}
|
|
17817
|
+
getMasterLanguages() {
|
|
17818
|
+
return this.http.get(API_ENDPOINTS$1.getMasterLanguages);
|
|
17819
|
+
}
|
|
17820
|
+
getMasterNationality() {
|
|
17821
|
+
return this.http.get(API_ENDPOINTS$1.getMasterNationality);
|
|
17822
|
+
}
|
|
17823
|
+
getMasterCountries() {
|
|
17824
|
+
return this.http.get(API_ENDPOINTS$1.getMasterCountries);
|
|
17825
|
+
}
|
|
17826
|
+
getProfilePageMeta() {
|
|
17827
|
+
return this.http.get(API_ENDPOINTS$1.getProfilePageMeta);
|
|
17828
|
+
}
|
|
17829
|
+
getUserdetailsFromRegistry(wid) {
|
|
17830
|
+
return this.http.get(`${API_ENDPOINTS$1.getUserdetailsFromRegistry}/${wid}`)
|
|
17831
|
+
.pipe(map((res) => {
|
|
17832
|
+
return res.result.response;
|
|
17833
|
+
}));
|
|
17834
|
+
}
|
|
17835
|
+
getOrganizationData(request) {
|
|
17836
|
+
return this.http.post(API_ENDPOINTS$1.GET_ORGANIZATION_V1, request);
|
|
17837
|
+
}
|
|
17838
|
+
readOrgData(request) {
|
|
17839
|
+
return this.http.post(API_ENDPOINTS$1.READ_ORG_DETAILS, request);
|
|
17840
|
+
}
|
|
17841
|
+
getAllDepartments() {
|
|
17842
|
+
return this.http.get(API_ENDPOINTS$1.getAllDepartments);
|
|
17843
|
+
}
|
|
17844
|
+
approveRequest(data) {
|
|
17845
|
+
return this.http.post(API_ENDPOINTS$1.approveRequest, data);
|
|
17846
|
+
}
|
|
17847
|
+
listApprovalPendingFields() {
|
|
17848
|
+
return this.http.post(API_ENDPOINTS$1.getPendingFields, {
|
|
17849
|
+
serviceName: 'profile',
|
|
17850
|
+
applicationStatus: 'SEND_FOR_APPROVAL',
|
|
17851
|
+
});
|
|
17852
|
+
}
|
|
17853
|
+
fetchApprovalPendingFields() {
|
|
17854
|
+
return this.http.post(API_ENDPOINTS$1.getApprovalPendingFields, {
|
|
17855
|
+
serviceName: 'profile',
|
|
17856
|
+
applicationStatus: 'SEND_FOR_APPROVAL',
|
|
17857
|
+
});
|
|
17858
|
+
}
|
|
17859
|
+
fetchApprovedFields() {
|
|
17860
|
+
return this.http.post(API_ENDPOINTS$1.getApprovalPendingFields, {
|
|
17861
|
+
serviceName: 'profile',
|
|
17862
|
+
applicationStatus: 'APPROVED',
|
|
17863
|
+
});
|
|
17864
|
+
}
|
|
17865
|
+
listRejectedFields() {
|
|
17866
|
+
return this.http.post(API_ENDPOINTS$1.getPendingFields, {
|
|
17867
|
+
serviceName: 'profile',
|
|
17868
|
+
applicationStatus: 'REJECTED',
|
|
17869
|
+
});
|
|
17870
|
+
}
|
|
17871
|
+
getDesignations(_req) {
|
|
17872
|
+
return this.http.get(API_ENDPOINTS$1.getDesignation);
|
|
17873
|
+
}
|
|
17874
|
+
searchDesignation(_req) {
|
|
17875
|
+
return this.http.post(API_ENDPOINTS$1.GET_SEARCH_DESIGNATIONS, _req);
|
|
17876
|
+
}
|
|
17877
|
+
searchPublicDesignation(_req) {
|
|
17878
|
+
return this.http.post(API_ENDPOINTS$1.GET_SEARCH_PUBLIC_DESIGNATIONS, _req);
|
|
17879
|
+
}
|
|
17880
|
+
searchIgotDesignation(_req) {
|
|
17881
|
+
return this.http.post(API_ENDPOINTS$1.GET_SUNBIRD_IGOT_SEARCH, _req);
|
|
17882
|
+
}
|
|
17883
|
+
getDesignationV2(_req) {
|
|
17884
|
+
return this.http.post(API_ENDPOINTS$1.GET_DESIGNATION_V2, _req);
|
|
17885
|
+
}
|
|
17886
|
+
uploadProfilePhoto(req) {
|
|
17887
|
+
return this.http.post(`${API_ENDPOINTS$1.updateProfilePic}`, req);
|
|
17732
17888
|
}
|
|
17733
17889
|
getGroups() {
|
|
17734
|
-
return this.http.get(
|
|
17890
|
+
return this.http.get(API_ENDPOINTS$1.GET_GROUPS);
|
|
17735
17891
|
}
|
|
17736
|
-
|
|
17737
|
-
return
|
|
17892
|
+
getApprovalReqs(data) {
|
|
17893
|
+
return this.http.post(API_ENDPOINTS$1.getApprovalReqs, data);
|
|
17738
17894
|
}
|
|
17739
|
-
|
|
17740
|
-
|
|
17895
|
+
withDrawRequest(userId, wfId) {
|
|
17896
|
+
const payload = {
|
|
17897
|
+
'action': 'WITHDRAW',
|
|
17898
|
+
'state': 'SEND_FOR_APPROVAL',
|
|
17899
|
+
'userId': userId,
|
|
17900
|
+
'applicationId': userId,
|
|
17901
|
+
'actorUserId': userId,
|
|
17902
|
+
'wfId': wfId,
|
|
17903
|
+
'serviceName': 'profile',
|
|
17904
|
+
'updateFieldValues': [],
|
|
17905
|
+
'comment': '',
|
|
17906
|
+
};
|
|
17907
|
+
return this.http.post(API_ENDPOINTS$1.withDrawRequest, payload);
|
|
17741
17908
|
}
|
|
17742
|
-
|
|
17743
|
-
return
|
|
17909
|
+
fetchEhrmsDetails() {
|
|
17910
|
+
return this.http
|
|
17911
|
+
.get(API_ENDPOINTS$1.ehrmsDataRequest)
|
|
17912
|
+
.pipe(map((result) => result));
|
|
17744
17913
|
}
|
|
17745
|
-
|
|
17746
|
-
return
|
|
17914
|
+
getWhiteListDomain() {
|
|
17915
|
+
return this.http.get(API_ENDPOINTS$1.approvedDomains);
|
|
17747
17916
|
}
|
|
17748
|
-
|
|
17749
|
-
return
|
|
17917
|
+
fetchCustomFields(requestBody) {
|
|
17918
|
+
return this.http.post(API_ENDPOINTS$1.ORG_CUSTOM_FIELDS, requestBody);
|
|
17750
17919
|
}
|
|
17751
|
-
|
|
17752
|
-
return
|
|
17920
|
+
updateCustomFields(requestBody) {
|
|
17921
|
+
return this.http.post(API_ENDPOINTS$1.UPDATE_CUSTOM_FIELDS, requestBody);
|
|
17922
|
+
}
|
|
17923
|
+
readCustomattributeDetails(userId, orgId) {
|
|
17924
|
+
return this.http.get(`${API_ENDPOINTS$1.READ_CUSTOM_FIELDS_VALUES}/${userId}/${orgId}`);
|
|
17753
17925
|
}
|
|
17754
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserProfileService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17755
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserProfileService
|
|
17926
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserProfileService, deps: [{ token: i1.HttpClient }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17927
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserProfileService }); }
|
|
17756
17928
|
}
|
|
17757
17929
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserProfileService, decorators: [{
|
|
17758
|
-
type: Injectable
|
|
17759
|
-
|
|
17760
|
-
providedIn: 'root',
|
|
17761
|
-
}]
|
|
17762
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
17930
|
+
type: Injectable
|
|
17931
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$2.TranslateService }]; } });
|
|
17763
17932
|
|
|
17764
|
-
|
|
17765
|
-
|
|
17766
|
-
|
|
17767
|
-
|
|
17768
|
-
|
|
17769
|
-
|
|
17933
|
+
const PROTECTED_SLAG_V8 = '/apis/protected/v8';
|
|
17934
|
+
const API_END_POINTS$1 = {
|
|
17935
|
+
DISCUSS_PROFILE: '/apis/protected/v8/discussionHub/users',
|
|
17936
|
+
PROFILE_DETAIL: `${PROTECTED_SLAG_V8}/social/post/timeline`,
|
|
17937
|
+
SOCIAL_VIEW_CONVERSATION: `${PROTECTED_SLAG_V8}/social/post/viewConversation`,
|
|
17938
|
+
// getUserdetailsV2FromRegistry: '/apis/protected/v8/user/profileRegistry/getUserRegistryByUser',
|
|
17939
|
+
getUserdetailsV2FromRegistry: '/apis/proxies/v8/api/user/v2/read',
|
|
17940
|
+
getCadreDetails: '/apis/proxies/v8/data/v2/system/settings/get/cadreConfig',
|
|
17941
|
+
approvalDetails: '/apis/proxies/v8/workflow/v2/userWFApplicationFieldsSearch',
|
|
17942
|
+
withDrawRequest: '/apis/protected/v8/workflowhandler/transition',
|
|
17943
|
+
getFormV2ByID: (id) => `/apis/proxies/v8/forms/v2/getFormById?formId=${id}`,
|
|
17770
17944
|
};
|
|
17771
17945
|
class ProfileV2Service {
|
|
17772
17946
|
constructor(http) {
|
|
17773
17947
|
this.http = http;
|
|
17774
17948
|
}
|
|
17775
|
-
|
|
17776
|
-
return
|
|
17949
|
+
fetchDiscussProfile(wid) {
|
|
17950
|
+
return this.http.get(`${API_END_POINTS$1.DISCUSS_PROFILE}/${wid}`);
|
|
17777
17951
|
}
|
|
17778
|
-
|
|
17779
|
-
return
|
|
17780
|
-
|
|
17781
|
-
|
|
17782
|
-
|
|
17952
|
+
fetchProfile(userId) {
|
|
17953
|
+
return this.http.get(`${API_END_POINTS$1.getUserdetailsV2FromRegistry}/${userId}`)
|
|
17954
|
+
.pipe(map(res => {
|
|
17955
|
+
// const roles = _.map(_.get(res, 'result.response.roles'), 'role')
|
|
17956
|
+
// _.set(res, 'result.response.roles', roles)
|
|
17957
|
+
return res;
|
|
17958
|
+
}));
|
|
17783
17959
|
}
|
|
17784
|
-
|
|
17785
|
-
return
|
|
17960
|
+
fetchPost(request) {
|
|
17961
|
+
return this.http.post(API_END_POINTS$1.SOCIAL_VIEW_CONVERSATION, request);
|
|
17786
17962
|
}
|
|
17787
17963
|
fetchCadre() {
|
|
17788
|
-
return this.http.get(
|
|
17964
|
+
return this.http.get(`${API_END_POINTS$1.getCadreDetails}`);
|
|
17789
17965
|
}
|
|
17790
|
-
fetchApprovalDetails(
|
|
17791
|
-
return
|
|
17966
|
+
fetchApprovalDetails() {
|
|
17967
|
+
return this.http.post(API_END_POINTS$1.approvalDetails, {
|
|
17968
|
+
serviceName: 'profile',
|
|
17969
|
+
applicationStatus: 'SEND_FOR_APPROVAL',
|
|
17970
|
+
});
|
|
17792
17971
|
}
|
|
17793
17972
|
withDrawApprovalRequest(userId, wfId) {
|
|
17794
|
-
|
|
17973
|
+
const payload = {
|
|
17974
|
+
'action': 'WITHDRAW',
|
|
17975
|
+
'state': 'SEND_FOR_APPROVAL',
|
|
17976
|
+
'userId': userId,
|
|
17977
|
+
'applicationId': userId,
|
|
17978
|
+
'actorUserId': userId,
|
|
17979
|
+
'wfId': wfId,
|
|
17980
|
+
'serviceName': 'profile',
|
|
17981
|
+
'updateFieldValues': [],
|
|
17982
|
+
'comment': '',
|
|
17983
|
+
};
|
|
17984
|
+
return this.http.post(API_END_POINTS$1.withDrawRequest, payload);
|
|
17985
|
+
}
|
|
17986
|
+
getFormV2ByID(formid) {
|
|
17987
|
+
return this.http.get(API_END_POINTS$1.getFormV2ByID(formid));
|
|
17795
17988
|
}
|
|
17796
17989
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProfileV2Service, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17797
17990
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProfileV2Service, providedIn: 'root' }); }
|
|
@@ -17803,72 +17996,122 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
17803
17996
|
}]
|
|
17804
17997
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
17805
17998
|
|
|
17806
|
-
|
|
17807
|
-
|
|
17808
|
-
|
|
17809
|
-
|
|
17999
|
+
const API_ENDPOINTS = {
|
|
18000
|
+
sendOtp: '/apis/proxies/v8/otp/v1/generate',
|
|
18001
|
+
ReSendOtp: '/apis/proxies/v8/otp/v1/generate',
|
|
18002
|
+
VerifyOtp: '/apis/proxies/v8/otp/v1/verify',
|
|
18003
|
+
sendEmailOtp: '/apis/proxies/v8/otp/v3/generate',
|
|
18004
|
+
VerifyEmailOtp: '/apis/proxies/v8/otp/v3/verify',
|
|
18005
|
+
};
|
|
17810
18006
|
class OtpService {
|
|
17811
18007
|
constructor(http) {
|
|
17812
18008
|
this.http = http;
|
|
17813
18009
|
}
|
|
17814
|
-
|
|
17815
|
-
|
|
17816
|
-
|
|
17817
|
-
|
|
17818
|
-
|
|
18010
|
+
sendOtp(mob) {
|
|
18011
|
+
const reqObj = {
|
|
18012
|
+
request: {
|
|
18013
|
+
type: 'phone',
|
|
18014
|
+
key: `${mob}`,
|
|
18015
|
+
},
|
|
18016
|
+
};
|
|
18017
|
+
return this.http.post(API_ENDPOINTS.sendOtp, reqObj);
|
|
17819
18018
|
}
|
|
17820
|
-
resendOtp(
|
|
17821
|
-
|
|
18019
|
+
resendOtp(mob) {
|
|
18020
|
+
const reqObj = {
|
|
18021
|
+
request: {
|
|
18022
|
+
type: 'phone',
|
|
18023
|
+
key: `${mob}`,
|
|
18024
|
+
},
|
|
18025
|
+
};
|
|
18026
|
+
return this.http.post(API_ENDPOINTS.ReSendOtp, reqObj);
|
|
17822
18027
|
}
|
|
17823
|
-
|
|
17824
|
-
|
|
18028
|
+
verifyOTP(otp, mob) {
|
|
18029
|
+
const reqObj = {
|
|
18030
|
+
request: {
|
|
18031
|
+
otp,
|
|
18032
|
+
type: 'phone',
|
|
18033
|
+
key: `${mob}`,
|
|
18034
|
+
},
|
|
18035
|
+
};
|
|
18036
|
+
return this.http.post(API_ENDPOINTS.VerifyOtp, reqObj);
|
|
17825
18037
|
}
|
|
17826
18038
|
sendEmailOtp(email) {
|
|
17827
|
-
|
|
18039
|
+
const reqObj = {
|
|
18040
|
+
request: {
|
|
18041
|
+
type: 'email',
|
|
18042
|
+
key: `${email}`,
|
|
18043
|
+
contextType: 'extPatch',
|
|
18044
|
+
context: ['profileDetails.personalDetails.primaryEmail'],
|
|
18045
|
+
},
|
|
18046
|
+
};
|
|
18047
|
+
return this.http.post(API_ENDPOINTS.sendEmailOtp, reqObj);
|
|
17828
18048
|
}
|
|
17829
|
-
|
|
17830
|
-
|
|
18049
|
+
reSendEmailOtp(email) {
|
|
18050
|
+
const reqObj = {
|
|
18051
|
+
request: {
|
|
18052
|
+
type: 'email',
|
|
18053
|
+
key: `${email}`,
|
|
18054
|
+
contextType: 'extPatch',
|
|
18055
|
+
context: ['profileDetails.personalDetails.primaryEmail'],
|
|
18056
|
+
},
|
|
18057
|
+
};
|
|
18058
|
+
return this.http.post(API_ENDPOINTS.sendEmailOtp, reqObj);
|
|
17831
18059
|
}
|
|
17832
|
-
|
|
17833
|
-
|
|
18060
|
+
verifyEmailOTP(otp, email) {
|
|
18061
|
+
const reqObj = {
|
|
18062
|
+
request: {
|
|
18063
|
+
otp: otp.toString(),
|
|
18064
|
+
type: 'email',
|
|
18065
|
+
key: `${email}`,
|
|
18066
|
+
},
|
|
18067
|
+
};
|
|
18068
|
+
return this.http.post(API_ENDPOINTS.VerifyEmailOtp, reqObj);
|
|
17834
18069
|
}
|
|
17835
18070
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OtpService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17836
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OtpService
|
|
18071
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OtpService }); }
|
|
17837
18072
|
}
|
|
17838
18073
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OtpService, decorators: [{
|
|
17839
|
-
type: Injectable
|
|
17840
|
-
args: [{
|
|
17841
|
-
providedIn: 'root',
|
|
17842
|
-
}]
|
|
18074
|
+
type: Injectable
|
|
17843
18075
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
17844
18076
|
|
|
17845
|
-
|
|
17846
|
-
|
|
17847
|
-
|
|
17848
|
-
|
|
18077
|
+
// tslint:enable
|
|
18078
|
+
const API_END_POINTS = {
|
|
18079
|
+
readFeed: (id) => `/apis/proxies/v8/user/v1/feed/${id}`,
|
|
18080
|
+
getFormID: (id) => `/apis/proxies/v8/forms/getFormById?id=${id}`,
|
|
18081
|
+
submitForm: `/apis/proxies/v8/forms/v1/saveFormSubmit`,
|
|
18082
|
+
SUBMIT_ENROLMENT_FORM: `apis/proxies/v8/forms/v2/saveFormSubmit`,
|
|
18083
|
+
deleteFeed: `/apis/proxies/v8/user/feed/v1/delete`,
|
|
18084
|
+
};
|
|
17849
18085
|
class NPSGridService {
|
|
17850
|
-
constructor() {
|
|
17851
|
-
|
|
17852
|
-
|
|
18086
|
+
constructor(http) {
|
|
18087
|
+
this.http = http;
|
|
18088
|
+
this.telemetryEvents = new BehaviorSubject(false);
|
|
18089
|
+
this.updateTelemetryDataObservable = this.telemetryEvents.asObservable();
|
|
17853
18090
|
}
|
|
17854
|
-
|
|
17855
|
-
|
|
18091
|
+
updateTelemetryData(state) {
|
|
18092
|
+
this.telemetryEvents.next(state);
|
|
17856
18093
|
}
|
|
17857
|
-
|
|
17858
|
-
return
|
|
18094
|
+
getFeedStatus(id) {
|
|
18095
|
+
return this.http.get(API_END_POINTS.readFeed(id));
|
|
17859
18096
|
}
|
|
17860
|
-
|
|
17861
|
-
return
|
|
18097
|
+
getFormData(formid) {
|
|
18098
|
+
return this.http.get(API_END_POINTS.getFormID(formid));
|
|
18099
|
+
}
|
|
18100
|
+
submitPlatformRating(req) {
|
|
18101
|
+
return this.http.post(API_END_POINTS.submitForm, req);
|
|
18102
|
+
}
|
|
18103
|
+
deleteFeed(req) {
|
|
18104
|
+
return this.http.post(API_END_POINTS.deleteFeed, req);
|
|
18105
|
+
}
|
|
18106
|
+
submitBpFormWithProfileDetails(req) {
|
|
18107
|
+
return this.http.post(API_END_POINTS.SUBMIT_ENROLMENT_FORM, req);
|
|
17862
18108
|
}
|
|
17863
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NPSGridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17864
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NPSGridService
|
|
18109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NPSGridService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
18110
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NPSGridService }); }
|
|
17865
18111
|
}
|
|
17866
18112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NPSGridService, decorators: [{
|
|
17867
|
-
type: Injectable
|
|
17868
|
-
|
|
17869
|
-
providedIn: 'root',
|
|
17870
|
-
}]
|
|
17871
|
-
}], ctorParameters: function () { return []; } });
|
|
18113
|
+
type: Injectable
|
|
18114
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
17872
18115
|
|
|
17873
18116
|
const MOBILE_PATTERN = /^[0]?[6789]\d{9}$/;
|
|
17874
18117
|
const PIN_CODE_PATTERN = /^[1-9][0-9]{5}$/;
|
|
@@ -17943,6 +18186,8 @@ class EnrollProfileFormComponent {
|
|
|
17943
18186
|
this.showDoptChanges = false;
|
|
17944
18187
|
this.verifyEmail = false;
|
|
17945
18188
|
this.approvedDomainList = [];
|
|
18189
|
+
this.verifiedEmailOtp = '';
|
|
18190
|
+
this.verifiedPhoneOtp = '';
|
|
17946
18191
|
this.currentDate = new Date();
|
|
17947
18192
|
this.openDesignationDropdown = false;
|
|
17948
18193
|
this.openLanguageDropdown = false;
|
|
@@ -18259,6 +18504,7 @@ class EnrollProfileFormComponent {
|
|
|
18259
18504
|
this.eVerified = true;
|
|
18260
18505
|
this.emailOtpSent = false;
|
|
18261
18506
|
this.contextToken = _res.result.contextToken;
|
|
18507
|
+
this.verifiedEmailOtp = this.emailOtpForm.controls['eOtp'].value;
|
|
18262
18508
|
this.emailOtpForm.reset();
|
|
18263
18509
|
}, (error) => {
|
|
18264
18510
|
if (!error.ok) {
|
|
@@ -18274,6 +18520,7 @@ class EnrollProfileFormComponent {
|
|
|
18274
18520
|
this.verifyMobile = true;
|
|
18275
18521
|
this.mVerified = true;
|
|
18276
18522
|
this.otpSent = false;
|
|
18523
|
+
this.verifiedPhoneOtp = this.otpForm.controls['otp'].value;
|
|
18277
18524
|
this.otpForm.reset();
|
|
18278
18525
|
}, (error) => {
|
|
18279
18526
|
if (!error.ok) {
|
|
@@ -19165,6 +19412,12 @@ class EnrollProfileFormComponent {
|
|
|
19165
19412
|
}
|
|
19166
19413
|
}
|
|
19167
19414
|
submitProfile(payload) {
|
|
19415
|
+
if (this.eVerified && this.verifiedEmailOtp) {
|
|
19416
|
+
payload['request']['emailOtp'] = this.verifiedEmailOtp;
|
|
19417
|
+
}
|
|
19418
|
+
if (this.mVerified && this.verifiedPhoneOtp) {
|
|
19419
|
+
payload['request']['phoneOtp'] = this.verifiedPhoneOtp;
|
|
19420
|
+
}
|
|
19168
19421
|
if (payload && payload['request'] && payload['request']['profileDetails'] && payload['request']['profileDetails']['personalDetails'] && payload['request']['profileDetails']['personalDetails']['dob']) {
|
|
19169
19422
|
let dobFormat = payload['request']['profileDetails']['personalDetails']['dob'];
|
|
19170
19423
|
let dob = `${new Date(dobFormat).getDate()}-${new Date(dobFormat).getMonth() + 1}-${new Date(dobFormat).getFullYear()}`;
|
|
@@ -19173,6 +19426,7 @@ class EnrollProfileFormComponent {
|
|
|
19173
19426
|
if (this.updateProfile) {
|
|
19174
19427
|
this.addLoader = this.addLoader + 1;
|
|
19175
19428
|
this.userProfileService.editProfileDetails(payload).subscribe((res) => {
|
|
19429
|
+
debugger;
|
|
19176
19430
|
this.addLoader = this.addLoader - 1;
|
|
19177
19431
|
if (res.responseCode === 'OK') {
|
|
19178
19432
|
this.submitSurevy(true);
|
|
@@ -19181,7 +19435,7 @@ class EnrollProfileFormComponent {
|
|
|
19181
19435
|
this.addLoader = this.addLoader - 1;
|
|
19182
19436
|
/* tslint:disable */
|
|
19183
19437
|
console.log(error);
|
|
19184
|
-
this.snackBar.open("
|
|
19438
|
+
this.snackBar.open(error?.error?.params?.errmsg || "Something went wrong!");
|
|
19185
19439
|
});
|
|
19186
19440
|
}
|
|
19187
19441
|
}
|
|
@@ -24066,12 +24320,11 @@ class AppTocHomeV2Component {
|
|
|
24066
24320
|
}
|
|
24067
24321
|
const badge = badgeDetails[0];
|
|
24068
24322
|
// If badgeEarningDateEnabled is false, don't show badge
|
|
24069
|
-
if (!badge
|
|
24070
|
-
return
|
|
24323
|
+
if (!badge?.badgeEarningDateEnabled) {
|
|
24324
|
+
return true;
|
|
24071
24325
|
}
|
|
24072
24326
|
// If badgeEarningDateEnabled is true, show badge only if badgeEarningDateTime has passed
|
|
24073
|
-
if (badge
|
|
24074
|
-
console.log(badge.badgeEarningDateTime, Date.now());
|
|
24327
|
+
if (badge?.badgeEarningDateEnabled && badge?.badgeEarningDateTime) {
|
|
24075
24328
|
return badge.badgeEarningDateTime > Date.now();
|
|
24076
24329
|
}
|
|
24077
24330
|
return false;
|
|
@@ -26443,6 +26696,23 @@ class AppTocCiosHomeComponent {
|
|
|
26443
26696
|
});
|
|
26444
26697
|
}
|
|
26445
26698
|
}
|
|
26699
|
+
showBadgeIcon() {
|
|
26700
|
+
const badgeDetails = this.extContentReadData?.badgeDetails_v1;
|
|
26701
|
+
if (!badgeDetails || !badgeDetails.length) {
|
|
26702
|
+
return false;
|
|
26703
|
+
}
|
|
26704
|
+
const badge = badgeDetails[0];
|
|
26705
|
+
// If badgeEarningDateEnabled is false, don't show badge
|
|
26706
|
+
if (!badge.badgeEarningDateEnabled) {
|
|
26707
|
+
return true;
|
|
26708
|
+
}
|
|
26709
|
+
// If badgeEarningDateEnabled is true, show badge only if badgeEarningDateTime has passed
|
|
26710
|
+
if (badge?.badgeEarningDateEnabled && badge?.badgeEarningDateTime) {
|
|
26711
|
+
console.log(badge.badgeEarningDateTime, Date.now());
|
|
26712
|
+
return badge.badgeEarningDateTime > Date.now();
|
|
26713
|
+
}
|
|
26714
|
+
return false;
|
|
26715
|
+
}
|
|
26446
26716
|
get showEnroll() {
|
|
26447
26717
|
return Object.keys(this.userExtCourseEnroll).length === 0 &&
|
|
26448
26718
|
!this.enrollValidationLoading &&
|
|
@@ -26455,11 +26725,11 @@ class AppTocCiosHomeComponent {
|
|
|
26455
26725
|
_.get(this.extContentReadData, 'contentPartner.isActive', false);
|
|
26456
26726
|
}
|
|
26457
26727
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocCiosHomeComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: i5.CommonMethodsService }, { token: i1$2.TranslateService }, { token: i2$1.ConfigurationsService }, { token: i2$1.EventService }, { token: i2$1.MultilingualTranslationsService }, { token: i2$1.WidgetContentService }, { token: CertificateService }, { token: LoaderService }, { token: i5$4.MatDialog }, { token: i7.MatLegacySnackBar }, { token: NetCoreService }, { token: 'environment', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26458
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocCiosHomeComponent, selector: "ws-app-app-toc-cios-home", host: { listeners: { "window:scroll": "handleScroll($event)" } }, viewQueries: [{ propertyName: "rcElement", first: true, predicate: ["rightContainer"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"extContentAvailable\">\n <div class=\"toc-banner\">\n <div class=\"flex flex-row gap-6 fixed-width\">\n <div class=\"banner-details toc-content\" #bannerDetails>\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'132px'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'140px'\" [height]=\"'24px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- <div class=\"flex flex-row gap-2\">\n <div class=\"flex flex-row tag-div rounded-2xl gap-1 items-center p-2\">\n <mat-icon class=\"ws-mat-orange-text\">video_library</mat-icon>\n <ng-container *ngIf=\"content?.courseCategory\">\n <div class=\"text-xs font-bold text-white leading-3\">{{ translateLabel(content?.courseCategory, 'searchfilters') }}</div>\n </ng-container>\n <ng-container *ngIf=\"extContentReadData?.topic\">\n <div class=\"text-xs font-bold text-white leading-3\">{{ 'External Course' }}</div>\n </ng-container>\n </div>\n </div> -->\n </ng-container>\n\n <div class=\"flex items-center text-white mob-share\">\n <mat-icon (click)=\"onClickOfShare()\">share</mat-icon>\n </div>\n </div>\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- Knowledge level block -->\n <div *ngIf=\"extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel\"\n class=\"knowledge-level-container\">\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'beginner' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'beginner'\"\n class=\"level-badge beginner\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <rect width=\"16\" height=\"16\" fill=\"#DBF4DC\" />\n <path\n d=\"M7.42267 5C7.67927 4.55555 8.32077 4.55556 8.57737 5L12.0415 11C12.2981 11.4444 11.9773 12 11.4641 12H4.53592C4.02272 12 3.70197 11.4444 3.95857 11L7.42267 5Z\"\n fill=\"#49C951\" />\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'intermediate' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'intermediate'\"\n class=\"level-badge intermediate\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <rect width=\"16\" height=\"16\" fill=\"#D1DBEC\" />\n <path\n d=\"M7.42267 2.66666C7.67927 2.22221 8.32077 2.22221 8.57737 2.66666L12.0415 8.66666C12.2981 9.1111 11.9773 9.66666 11.4641 9.66666H4.53592C4.02272 9.66666 3.70197 9.1111 3.95857 8.66666L7.42267 2.66666Z\"\n fill=\"#1B4CA1\" />\n <path\n d=\"M7.42267 5.66666C7.67927 5.22221 8.32077 5.22221 8.57737 5.66666L12.0415 11.6667C12.2981 12.1111 11.9773 12.6667 11.4641 12.6667H4.53592C4.02272 12.6667 3.70197 12.1111 3.95857 11.6667L7.42267 5.66666Z\"\n fill=\"#1B4CA1\" stroke=\"#D1DBEC\" stroke-width=\"0.5\" />\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'advanced' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'advanced'\"\n class=\"level-badge advanced\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <g clip-path=\"url(#clip0)\">\n <rect width=\"16\" height=\"16\" fill=\"#FFE6E1\" />\n <path\n d=\"M7.42264 2.33334C7.67924 1.8889 8.32074 1.8889 8.57734 2.33334L12.0414 8.33334C12.298 8.77779 11.9773 9.33334 11.4641 9.33334H4.53589C4.02269 9.33334 3.70194 8.77779 3.95854 8.33334L7.42264 2.33334Z\"\n fill=\"#FF8268\" />\n <path\n d=\"M7.42264 5C7.67924 4.55555 8.32074 4.55556 8.57734 5L12.0414 11C12.298 11.4444 11.9773 12 11.4641 12H4.53589C4.02269 12 3.70194 11.4444 3.95854 11L7.42264 5Z\"\n fill=\"#FF8268\" stroke=\"#FFE6E1\" stroke-width=\"0.5\" />\n <path\n d=\"M7.42264 7.66669C7.67924 7.22224 8.32074 7.22224 8.57734 7.66669L12.0414 13.6667C12.298 14.1111 11.9773 14.6667 11.4641 14.6667H4.53589C4.02269 14.6667 3.70194 14.1111 3.95854 13.6667L7.42264 7.66669Z\"\n fill=\"#FF8268\" stroke=\"#FFE6E1\" stroke-width=\"0.5\" />\n </g>\n <defs>\n <clipPath id=\"clip0\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n </div>\n </ng-container>\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'90%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'70%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <div class=\"banner-text text-base sm:text-4xl leading-6 sm:leading-10 font-bold\">{{\n handleCapitalize(extContentReadData?.name) }}</div>\n <div class=\"text-sm sm:text-base source-text font-semibold break-words\" #contentSource\n [ngClass]=\"{'sourceEllipsis': sourceEllipsis}\" title=\"{{content?.source}}\">\n {{ 'cardcontentv2.by' | translate }}\n <span *ngIf=\"extContentReadData?.contentPartner?.contentPartnerName\">\n <span *ngIf=\"extContentReadData?.courseProvider?.length;else contentPartnerName\">\n {{ formatcourseProviders(extContentReadData?.courseProvider) }}\n </span>\n <ng-template #contentPartnerName>\n {{extContentReadData?.contentPartner?.contentPartnerName }}\n </ng-template>\n </span>\n <span *ngIf=\"!extContentReadData?.contentPartner?.contentPartnerName\">{{\n 'common.karmayogiBharat' | translate }}</span>\n </div>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'120px'\" [height]=\"'40px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'88px'\" [height]=\"'24px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- <div class=\"flex gap-4 items-center\" *ngIf=\"content?.averageRating || content?.additionalTags?.length\">\n <div class=\"flex flex-row rating-chip py-2 items-center cursor-pointer\" (click)=\"handleNavigateToReviews()\" *ngIf=\"content?.averageRating\">\n <div class=\"flex flex-row gap-1 margin-left-s items-center\">\n <mat-icon>grade</mat-icon>\n <div class=\"text-white text-sm leading-4\">{{ content?.averageRating }}</div>\n </div>\n <div class=\"separator\"></div>\n <div class=\"text-white text-sm leading-4 margin-right-m\">{{ content?.totalRating | pipeCountTransform }}</div>\n </div>\n <div class=\"flex items-center\" *ngIf=\"content?.additionalTags?.length\">\n <div class=\"most-enrolled-chip text-xs leading-3\">\n <span *ngIf=\"content?.additionalTags?.includes('mostTrending')\">{{ 'cardcontentv2.mostTrending' | translate }}</span>\n <span *ngIf=\"content?.additionalTags?.includes('mostEnrolled')\">{{ 'cardcontentv2.mostEnrolled' | translate }}</span>\n </div>\n </div>\n </div> -->\n </ng-container>\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'180px'\" [height]=\"'20px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader && extContentReadData?.lastUpdatedOn\">\n <div class=\"text-xs leading-4 source-text\">({{ 'apptoc.lastUpdatedOn' | translate }} {{\n extContentReadData?.lastUpdatedOn | date: 'MMM d, y' }})</div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"!forPreview\">\n\n <div *ngIf=\"isMobile\">\n <div class=\"flex flex-col gap-4 p-5 border-bottom position-bottom\">\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}'\">\n <div class=\"flex flex-row justify-end w-full ws-mat-black-text\">\n <span class=\"mat-body-2 ws-mat-black-text\">\n {{userExtCourseEnroll?.progress}}%</span>\n </div>\n <ws-widget-content-progress [contentId]=\"userExtCourseEnroll?.progress\"\n [progress]=\"userExtCourseEnroll?.progress\"\n [progressType]=\"'percentage'\" [customClassName]=\"'viewer-progress'\">\n </ws-widget-content-progress>\n </ng-container> -->\n <ng-container *ngIf=\"showEnroll\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\"\n (click)=\"enRollToExtCourse(extContentReadData)\">\n <ng-container>{{ 'apptochome.enroll' | translate }}\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"enrollValidationLoading\">\n <ws-widget-skeleton-loader [width]=\"'132px'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"showRedirect\">\n <a class=\"flex action-button justify-center flex-middle resume\" target=\"_blank\"\n [href]=\"extContentReadData?.redirectUrl\" (click)=\"captureRedirectTelemetry(extContentReadData)\">\n <ng-container>{{ 'apptochome.redirect' | translate }}\n <mat-icon class=\"ml-2 ws-mat-white-text\">open_in_new</mat-icon>\n </ng-container>\n </a>\n </ng-container>\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0\n && userExtCourseEnroll?.progress === 100\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\" (click)=\"downloadCert()\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>Certificate</span>\n <mat-icon *ngIf=\"!downloadCertificateLoading\" class=\"ml-2\">arrow_downward</mat-icon>\n <div class=\"center flex flex-middle certificate-loader margin-left-s\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'white'\" class=\"white-spinner\" [diameter]=\"24\"></mat-spinner>\n </div>\n </button>\n </ng-container> -->\n </div>\n\n <div class=\"block md:hidden\">\n <ng-container [ngTemplateOutlet]=\"inProgressInfo\" ></ng-container>\n </div>\n <div>\n <div class=\"flex flex-col px-8 py-4 gap-2\" *ngIf=\"extContentReadData?.duration > 0\">\n <img src=\"/assets/icons/toc/timer.svg\" width=\"20px\" alt=\"web image\" />\n <div class=\"text-xs\">{{ extContentReadData?.duration * 60 | pipeDurationTransform: 'hms' }}</div>\n </div>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row gap-6 fixed-width\">\n <div class=\"toc-content\" [ngClass]=\"isMobile ? '':'mt-8 mb-8'\">\n <mat-tab-group>\n <mat-tab label=\"{{ 'apptocsinglepage.about' | translate }}\">\n <ng-template matTabContent>\n <div class=\"flex flex-col\" [ngClass]=\"isMobile ? '':'mt-5 mb-5'\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'80px'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <div class=\"flex flex-col gap-2 mt-4\">\n <ws-widget-skeleton-loader [width]=\"'80%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'95%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'65%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <ws-widget-app-toc-about [contentReadData]=\"extContentReadData\" [showReviews]=\"false\"\n [baseContentReadData]=\"extContentReadData\"\n [showMarketPlaceCertificate]=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0 && userExtCourseEnroll?.progress === 100\"\n [content]=\"extContentReadData\" [fromMarketPlace]=\"true\"\n [skeletonLoader]=\"skeletonLoader\"\n [fromMDO]=\"fromMDO\">\n </ws-widget-app-toc-about>\n </ng-container>\n </div>\n </ng-template>\n </mat-tab>\n\n <ng-container *ngIf=\"config?.commentsTab\">\n <mat-tab label=\"{{ 'apptocsinglepage.comments' | translate }}\">\n <!-- <ng-template matTabContent> -->\n <div class=\"flex flex-col ratings-div mt-5\" id=\"commentsDiv\" *ngIf=\"discussWidgetData\">\n <ng-container *ngIf=\"!commentId\">\n <d-v2-widget-comment [widgetData]=\"discussWidgetData\"></d-v2-widget-comment>\n </ng-container>\n <ng-container *ngIf=\"commentId\">\n <div class=\"flex flex-row gap-3 cursor-pointer mb-5\" (click)=\"clearCommentIdFromUrl()\">\n <mat-icon class=\"cursor-pointer\">arrow_back</mat-icon>\n Back to all comments\n </div>\n <d-v2-widget-comment [widgetData]=\"discussWidgetData\" [commentId]=\"commentId\"\n [skeletonLoader]></d-v2-widget-comment>\n </ng-container>\n\n </div>\n <!-- </ng-template> -->\n </mat-tab>\n </ng-container>\n </mat-tab-group>\n\n </div>\n <div class=\"right-container\">\n <div class=\"right-content\" #rightContainer>\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'384px'\" [height]=\"'224px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <div class=\"flex flex-col image-div\"\n [ngStyle]=\"{\n 'background-image': 'url(' + extContentReadData?.appIcon + ')', 'background-repeat': 'no-repeat', 'background-size': 'cover'}\"\n [ngClass]=\"{'image-backdrop': scrolled}\">\n <div class=\"flex flex-col justify-between text-container\">\n <div class=\"flex items-center gap-4 justify-end\">\n <div (click)=\"onClickOfShare()\"\n class=\"flex flex-row items-center justify-end gap-2 share-tag\" *ngIf=\"!forPreview\">\n <mat-icon>share</mat-icon>\n <div>{{ 'apptocsinglepage.share' | translate }}</div>\n </div>\n </div>\n <div class=\"flex flex-col gap-1\" *ngIf=\"scrolled\">\n <div class=\"text-xl leading-6 text-white font-bold text-scrol-custom\">{{\n handleCapitalize(extContentReadData?.name) }}\n </div>\n <!-- <div class=\"text-sm source-text font-semibold break-words\" #contentSource [ngClass]=\"{'sourceEllipsis': sourceEllipsis}\" title=\"{{content?.source}}\">\n {{ 'cardcontentv2.by' | translate }}\n <span *ngIf=\"extContentReadData?.contentPartner?.contentPartnerName\">{{ extContentReadData?.contentPartner?.contentPartnerName }}</span>\n <span *ngIf=\"!extContentReadData?.contentPartner?.contentPartnerName\">{{ 'common.karmayogiBharat' | translate }}</span>\n </div> -->\n </div>\n </div>\n\n\n </div>\n\n\n </ng-container>\n\n <ng-container *ngIf=\"!forPreview\">\n <div class=\"flex flex-col gap-3 p-3 border-bottom\">\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}'\">\n <div class=\"flex flex-row justify-end w-full ws-mat-black-text\">\n <span class=\"mat-body-2 ws-mat-black-text\">\n {{userExtCourseEnroll?.progress}}%</span>\n </div>\n <ws-widget-content-progress [contentId]=\"userExtCourseEnroll?.progress\"\n [progress]=\"userExtCourseEnroll?.progress\"\n [progressType]=\"'percentage'\" [customClassName]=\"'viewer-progress'\">\n </ws-widget-content-progress>\n </ng-container> -->\n\n <ng-container *ngIf=\"showEnroll\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\"\n (click)=\"enRollToExtCourse(extContentReadData)\">\n <ng-container>{{ 'apptochome.enroll' | translate }}\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"enrollValidationLoading\">\n <ws-widget-skeleton-loader [width]=\"'100%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded '\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"showRedirect\">\n <a class=\"flex action-button justify-center flex-middle resume\" target=\"_blank\"\n [href]=\"extContentReadData?.redirectUrl\"\n (click)=\"captureRedirectTelemetry(extContentReadData)\">\n <ng-container>{{ 'apptochome.redirect' | translate }}\n <mat-icon class=\"ml-2 ws-mat-white-text\">open_in_new</mat-icon>\n </ng-container>\n </a>\n </ng-container>\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0\n && userExtCourseEnroll?.progress === 100\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\" (click)=\"downloadCert()\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>Certificate</span>\n <mat-icon *ngIf=\"!downloadCertificateLoading\" class=\"ml-2\">arrow_downward</mat-icon>\n <div class=\"center flex flex-middle certificate-loader margin-left-s\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'white'\" class=\"white-spinner\" [diameter]=\"24\"></mat-spinner>\n </div>\n </button>\n </ng-container> -->\n </div>\n </ng-container>\n\n <ng-container [ngTemplateOutlet]=\"inProgressInfo\" ></ng-container>\n <div>\n <div class=\"flex flex-col kpi-values items-center gap-2\" *ngIf=\"extContentReadData?.duration > 0\">\n <img src=\"/assets/icons/toc/timer.svg\" width=\"20px\" alt=\"web image\" />\n <div class=\"text-xs\">\n {{ extContentReadData?.duration | pipeDurationTransform: 'hms' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<div *ngIf=\"!extContentAvailable\">\n <div class=\"flex justify-center w-full\">\n <div class=\"margin-xl text-center\">\n <img src=\"/assets/common/error-pages/empty_search.svg\" wsUtilsImageResponsive alt=\"No results\"\n class=\"margin-top-l margin-bottom-s\">\n <h2 class=\"mat-h2\" i18n=\"search route no result\">{{'learnsearch.noResults' | translate}}</h2>\n </div>\n </div>\n\n</div>\n\n<ws-app-share-toc *ngIf=\"enableShare\" [contentLink]=\"contentLink\" [rootOrgId]=\"rootOrgId\" [content]=\"extContentReadData\"\n (resetEnableShare)=\"resetEnableShare($event)\"></ws-app-share-toc>\n\n<ng-template #inProgressInfo>\n <ng-container *ngIf=\"showProviderTips\">\n <div class=\"no-certificate-found mt-6 mb-4 mx-2 p-2\" >\n <ws-widget-sliders-dynamic [widgetData]=\"widgetData\"></ws-widget-sliders-dynamic>\n </div>\n </ng-container>\n</ng-template>", styles: [".source-text{color:#ffffffb3}.toc-banner{background:#3a83cf;background:linear-gradient(135deg,#3a83cf,#1b4ca1);width:100%}.toc-banner .fixed-width{padding:0 16px}.toc-banner .banner-details{padding:36px 0}.toc-banner .banner-details .due-tag{padding:4px;color:#fff;border-radius:4px}.toc-banner .banner-details .due-warning{background-color:#ff9800;border:1px solid #FF9800}.toc-banner .banner-details .due-overdue{background-color:#f44336;border:1px solid #F44336}.toc-banner .banner-details .due-success{background-color:#4caf50;border:1px solid #4CAF50}.toc-banner .banner-details .rating-chip{border:1px solid rgba(0,0,0,.6);border-radius:20px;background-color:#0009}.toc-banner .banner-details .rating-chip mat-icon{width:16px;height:16px;color:#ff9800;font-size:16px}.toc-banner .banner-details .rating-chip .separator{width:1px;height:20px;border-right:1px solid rgba(255,255,255,.16);margin:0 8px}.toc-banner .banner-details .banner-text{color:#fffffff2;word-wrap:break-word}.toc-banner .info-div{max-width:384px;width:100%}.toc-banner .most-enrolled-chip{background-color:#ffea9e;border:1px solid #FFEA9E;padding:4px;border-radius:2px}.text-info-div{padding:8px;background-color:#fff;border-radius:64px}.tag-div{border:1px solid #FF9800;background-color:#00000080}.tag-div mat-icon{font-size:12px;width:12px;height:12px}.fixed-width{max-width:1200px;display:block;margin:0 auto}.mat-subheading-1{margin-bottom:4px!important}.initial-circle{width:36px;height:36px;border-radius:50%;background:#1b2133;color:#fff;text-transform:uppercase}.toc-content{max-width:792px;width:100%}.right-container .image-div{height:220px;background-color:#ccc;border-top-left-radius:12px;border-top-right-radius:12px}.right-container .image-div img{max-width:384px;width:100%;height:220px;border-top-left-radius:12px;border-top-right-radius:12px;position:relative;top:-42px}.right-container .image-div .share-container{position:relative;z-index:2;top:20px;margin-right:20px}.right-container .image-div .share-tag{font-weight:700;background-color:#000;border:1px solid #FFF;border-radius:20px;padding:6px 16px;color:#fff;cursor:pointer}.right-container .tag-div mat-icon{width:16px;height:16px;font-size:16px}.right-container .share-tag mat-icon{width:20px;height:20px;font-size:20px}.right-container .text-container{position:relative;z-index:2;height:220px;padding:16px}.right-container .right-content{background-color:#fff;border-radius:12px;position:fixed;z-index:10;top:132px;width:384px;margin-bottom:2rem;box-shadow:0 2px 6px -1px #00000080,0 -4px 4px -2px #00000080}.right-container .border-bottom{border-bottom:1px solid rgba(0,0,0,.2)}.right-container .info-div{background-color:#fef7ed;border:none;border-radius:8px;padding:8px 12px;font-size:14px}.right-container .info-div .mat-icon{width:18px;height:18px;font-size:18px}.right-container .kpi-values{width:64px;padding:8px;text-align:center}.right-container .kpi-values .timer-icon{color:#000000de;height:20px}.batch-info{padding:16px;border-radius:4px;background-color:#1b4ca114;border:1px solid rgba(27,76,161,.08);text-align:center}.batch-info .batch-label{font-size:.75rem;color:#0009;line-height:1rem}.button{border-radius:64px;letter-spacing:.25px;padding:12px 36px;font-weight:700;cursor:pointer;text-align:center}@media screen and (max-width: 1200px){.right-container{display:none}.action-button:before{content:\"\";position:absolute;inset:-10px;background-color:#ffffff40;border-radius:inherit;filter:blur(10px);z-index:-1}.action-button:after{content:\"\";position:absolute;inset:-10px;box-shadow:0 0 -4px -4px #fff9;border-radius:inherit;z-index:-1}.karma-points-div{display:none}}.enroll-modal{max-width:600px!important;width:100%!important}.enroll-modal .mat-dialog-container{padding:0;border-radius:12px}.confirmation-modal{max-width:420px!important;width:100%!important}.confirmation-modal .mat-dialog-container{border-radius:12px;padding:0}.image-backdrop{background-color:#000!important;position:relative}.image-backdrop:after{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);content:\"\";display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:#000000a6;border-top-left-radius:12px;border-top-right-radius:12px}.text-scrol-custom{height:200px;overflow-y:auto}@media screen and (max-width: 1000px){.confirmation-modal,.enroll-modal{max-width:90vw!important}}.kpi-loader-div{width:18%}a.action-button{color:#fff!important;width:auto}.rate-button{color:#000000de!important;font-size:.875rem;font-weight:700;border:none!important}.rate-button .mat-button-wrapper{display:flex;gap:8px;align-items:center}.mobile-enroll-div{padding:16px;position:fixed;z-index:1000;bottom:0;width:calc(100% - 32px)}.mobile-enroll-div .action-button{min-width:320px;max-width:400px;margin:auto}@media screen and (min-width: 1201px){.mobile-enroll-div,.mob-share{display:none!important}.hideAbove1200{display:none}}.mobile-progress{padding:16px}@media screen and (min-width: 1200px){.mobile-progress{display:none}}.sourceEllipsis{white-space:break-spaces;position:relative;overflow:hidden;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.text-white{color:#fff!important}.custom-button,.fluid-width{width:100%}.toc-container{background:#fff;width:100%}mat-divider{border-top-color:#d9d9d9}.sticky{top:56px;overflow:hidden;z-index:10;width:100%}.statusMsg{border-radius:4px;height:40px}.toc-body{padding-bottom:1rem}.toc-body .toc-links{width:100%;z-index:1;border:none;background:transparent}.toc-body .toc-links .mat-tab-link{text-align:left;justify-content:flex-start}.toc-body .toc-links .mat-tab-link.justify-center{justify-content:center}.toc-body .toc-links .mat-tab-link.link-active{color:#0074b6!important}.tab:focus{outline:1px solid!important}.rounded-icon{background:#fff 0% 0% no-repeat padding-box;box-shadow:0 2px 4px #00000029;border:2px solid #00A9F4;border-radius:50%;min-width:0;opacity:1;height:35px;width:35px;padding:0;align-items:center;align-self:center;float:right}.rounded-icon mat-icon{color:#00a9f4}.blue-border{border:2px solid #0074b6!important}.hidden-xs-inline{display:inline}@media only screen and (max-width: 599px){.hidden-xs-inline{display:none}}.visible-xs-inline{display:none}@media only screen and (max-width: 599px){.visible-xs-inline{display:inline}}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px;box-shadow:none;padding-left:0}@media only screen and (max-width: 599px){.meta-section{width:100%}}.font-bold-imp{font-weight:700!important}.info-section{width:20%;min-width:250px}.info-section .custom-button{background:#0074b6 0% 0% no-repeat padding-box!important;border-radius:4px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0!important}}.info-section .glance-container .at-glance-heading{letter-spacing:0px;color:#222}.info-section .glance-container .info-item .cs-icons .mat-icon{color:#666;vertical-align:middle;font-size:20px}.info-section .glance-container .info-item .cs-icons img{width:20px;height:20px;vertical-align:middle}.info-section .glance-container .info-item .item-heading{font:600 14px/21px Lato;margin:0 0 4px;letter-spacing:0px;color:#0074b6!important}.info-section .glance-container .info-item .item-value{letter-spacing:0px;color:#5f5f5f}.info-section .glance-container .info-item .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.toc-discussion-container{display:flex;justify-content:space-between;flex-wrap:wrap-reverse}.toc-discussion-container .discussion{flex:1;min-width:1px}.toc-discussion-container .cohorts{width:100%;background:#fff 0% 0% no-repeat padding-box;border:1px solid #D9D9D9;border-radius:8px;box-shadow:none}@media only screen and (min-width: 600px) and (max-width: 959px){.toc-discussion-container .cohorts{margin-left:24px;min-width:250px}}@media only screen and (max-width: 599px){.toc-discussion-container .cohorts{margin-left:0;margin-bottom:24px;width:100%}}.mtb-xl{margin-top:3.5rem;margin-bottom:3.5rem}.detailBar{display:flex}.editDetails{margin:auto;display:flex}.white-bg{background:#fff!important;background-color:#fff!important}.contacts-container{padding:22px 0 10px;border:0;border-top:1px;border-style:solid;border-bottom:1px;border-color:#ececec}.contacts-container .contacts-head{letter-spacing:0px;color:#222;background:transparent;margin-bottom:24px}.contacts-container .author-card{min-width:291px;width:291px;display:flex;flex-direction:row;align-items:center;margin-bottom:30px;padding-right:10px}.contacts-container .author-card .right{padding:0 15px}.contacts-container .author-card .user-name{letter-spacing:0px;color:#5f5f5f}.contacts-container .author-card .user-university{letter-spacing:0px;color:#00a9f4}.contacts-container .author-card .user-button{background:#fff 0% 0% no-repeat padding-box;border:1px solid #F58634;border-radius:15px;letter-spacing:0px;color:#f58634;max-width:60px;padding:4px}.divider-transparent{border-top-color:transparent!important}.scroll-to-top{position:fixed;bottom:15px;right:15px;opacity:0;transition:all .2s ease-in-out;border-radius:50%}.scroll-to-top .icon{font-size:24px!important}.show-scroll{opacity:1;transition:all .2s ease-in-out}.sticky-breadcrumbs{position:sticky;z-index:999;top:72px;width:100%}.sticky-banner{position:sticky;z-index:999}.sticky-navs{position:sticky!important;background:#fff;z-index:999;top:auto}.actbutton{border:1px solid rgba(0,0,0,.16);border-radius:4px;padding:0 15px;width:100%;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.actbutton .mat-icon{margin-right:6px}.disable-start-btn{cursor:not-allowed!important;pointer-events:none!important;opacity:.5!important}.certificate-loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#fff}.cb-plan-wrap{opacity:1;color:#1b4ca1;font-family:Lato-Regular;font-size:12px;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.cb-plan-wrap .cb-danger{border-radius:2px;padding:4px 8px;border:1px solid #d13924;background-color:#d13924!important;color:#fff!important;opacity:1}.cb-plan-wrap .cb-success{padding:4px 8px;border-radius:2px;border:1px solid #1d8922;background-color:#1d8922!important;color:#fff!important;opacity:1}.cb-plan-wrap .cb-warning{padding:4px 8px;border-radius:2px;border:1px solid #ef951e;background-color:#ef951e!important;color:#fff!important;opacity:1}.bg-white{background-color:#fff}.provider-logo-div{border-radius:4px;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.provider-logo-div img{display:flex;border-radius:4px;width:40px;height:40px;padding:4px}ul{padding:0!important}.kpi-values{min-width:64px;padding:8px;text-align:center}.kpi-values img{height:24px;width:24px}.position-bottom{position:fixed;width:88%;bottom:0;z-index:99}.no-certificate-found{border:1px solid #ccc;border-color:#f3962f;background-color:#fceedb;border-radius:12px}.no-certificate-found{min-height:56px}.no-certificate-found ::ng-deep ws-widget-sliders-dynamic .banner-data{font-size:16px!important;font-family:lato,sans-serif!important}.truncate-5{-webkit-line-clamp:1;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;word-wrap:break-word}.ext-info-slider{padding:8px}#commentsDiv{margin:1rem auto;min-height:500px}.knowledge-level-container{margin-right:auto}.level-badge{display:inline-flex;height:24px;padding:2px 8px;align-items:center;gap:4px;flex-shrink:0;border-radius:12px;font-weight:600;font-size:12px;line-height:16px;white-space:nowrap}.level-badge.beginner{border:1px solid #49C951;background:linear-gradient(0deg,#49c95133 0% 100%),#fff;color:#2f8132;border-radius:16px}.level-badge.intermediate{border:1px solid #1B4CA1;background:linear-gradient(0deg,#1b4ca133 0% 100%),#fff;color:#1b4ca1;border-radius:16px}.level-badge.advanced{border:1px solid #FF8268;background:linear-gradient(0deg,#ff826833 0% 100%),#fff;color:#ff4b25;border-radius:16px}.level-badge svg{flex-shrink:0}::ng-deep .consent-dialog-panel .mat-dialog-container{overflow:hidden;padding:0;margin:0;border-radius:8px}::ng-deep .consent-dialog-panel .mat-dialog-content{padding:0;margin:0;max-height:none;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i18.MatLegacyTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "component", type: i18.MatLegacyTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "directive", type: i18.MatLegacyTabContent, selector: "[matTabContent]" }, { kind: "component", type: SkeletonLoaderComponent, selector: "ws-widget-skeleton-loader", inputs: ["bindingClass", "height", "width"] }, { kind: "component", type: AppTocAboutComponent, selector: "ws-widget-app-toc-about", inputs: ["condition", "kparray", "content", "contentReadData", "baseContentReadData", "skeletonLoader", "sticky", "tocStructure", "pathSet", "config", "resumeData", "forPreview", "showReviews", "batchData", "fromViewer", "selectedBatchData", "selectedTabValue", "fromMarketPlace", "showMarketPlaceCertificate", "languageList", "lockCertificate", "fromMDO"], outputs: ["trigerCompletionSurveyForm"] }, { kind: "component", type: ShareTocComponent, selector: "ws-app-share-toc", inputs: ["rootOrgId", "content", "contentLink", "baseContentReadData"], outputs: ["resetEnableShare"] }, { kind: "component", type: i12$2.WidgetCommentComponent, selector: "d-v2-widget-comment", inputs: ["widgetData", "commentId"], outputs: ["commentDataChange"] }, { kind: "component", type: SlidersDynamicComponent, selector: "ws-widget-sliders-dynamic", inputs: ["widgetData", "baseContentReadData"] }, { kind: "pipe", type: i2.JsonPipe, name: "json" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i2$1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); }
|
|
26728
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocCiosHomeComponent, selector: "ws-app-app-toc-cios-home", host: { listeners: { "window:scroll": "handleScroll($event)" } }, viewQueries: [{ propertyName: "rcElement", first: true, predicate: ["rightContainer"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"extContentAvailable\">\n <div class=\"toc-banner\">\n <div class=\"flex flex-row gap-6 fixed-width\">\n <div class=\"banner-details toc-content\" #bannerDetails>\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'132px'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'140px'\" [height]=\"'24px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- <div class=\"flex flex-row gap-2\">\n <div class=\"flex flex-row tag-div rounded-2xl gap-1 items-center p-2\">\n <mat-icon class=\"ws-mat-orange-text\">video_library</mat-icon>\n <ng-container *ngIf=\"content?.courseCategory\">\n <div class=\"text-xs font-bold text-white leading-3\">{{ translateLabel(content?.courseCategory, 'searchfilters') }}</div>\n </ng-container>\n <ng-container *ngIf=\"extContentReadData?.topic\">\n <div class=\"text-xs font-bold text-white leading-3\">{{ 'External Course' }}</div>\n </ng-container>\n </div>\n </div> -->\n </ng-container>\n\n <div class=\"flex items-center text-white mob-share\">\n <mat-icon (click)=\"onClickOfShare()\">share</mat-icon>\n </div>\n </div>\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- Knowledge level block -->\n <div *ngIf=\"extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel\"\n class=\"knowledge-level-container\">\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'beginner' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'beginner'\"\n class=\"level-badge beginner\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <rect width=\"16\" height=\"16\" fill=\"#DBF4DC\" />\n <path\n d=\"M7.42267 5C7.67927 4.55555 8.32077 4.55556 8.57737 5L12.0415 11C12.2981 11.4444 11.9773 12 11.4641 12H4.53592C4.02272 12 3.70197 11.4444 3.95857 11L7.42267 5Z\"\n fill=\"#49C951\" />\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'intermediate' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'intermediate'\"\n class=\"level-badge intermediate\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <rect width=\"16\" height=\"16\" fill=\"#D1DBEC\" />\n <path\n d=\"M7.42267 2.66666C7.67927 2.22221 8.32077 2.22221 8.57737 2.66666L12.0415 8.66666C12.2981 9.1111 11.9773 9.66666 11.4641 9.66666H4.53592C4.02272 9.66666 3.70197 9.1111 3.95857 8.66666L7.42267 2.66666Z\"\n fill=\"#1B4CA1\" />\n <path\n d=\"M7.42267 5.66666C7.67927 5.22221 8.32077 5.22221 8.57737 5.66666L12.0415 11.6667C12.2981 12.1111 11.9773 12.6667 11.4641 12.6667H4.53592C4.02272 12.6667 3.70197 12.1111 3.95857 11.6667L7.42267 5.66666Z\"\n fill=\"#1B4CA1\" stroke=\"#D1DBEC\" stroke-width=\"0.5\" />\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'advanced' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'advanced'\"\n class=\"level-badge advanced\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <g clip-path=\"url(#clip0)\">\n <rect width=\"16\" height=\"16\" fill=\"#FFE6E1\" />\n <path\n d=\"M7.42264 2.33334C7.67924 1.8889 8.32074 1.8889 8.57734 2.33334L12.0414 8.33334C12.298 8.77779 11.9773 9.33334 11.4641 9.33334H4.53589C4.02269 9.33334 3.70194 8.77779 3.95854 8.33334L7.42264 2.33334Z\"\n fill=\"#FF8268\" />\n <path\n d=\"M7.42264 5C7.67924 4.55555 8.32074 4.55556 8.57734 5L12.0414 11C12.298 11.4444 11.9773 12 11.4641 12H4.53589C4.02269 12 3.70194 11.4444 3.95854 11L7.42264 5Z\"\n fill=\"#FF8268\" stroke=\"#FFE6E1\" stroke-width=\"0.5\" />\n <path\n d=\"M7.42264 7.66669C7.67924 7.22224 8.32074 7.22224 8.57734 7.66669L12.0414 13.6667C12.298 14.1111 11.9773 14.6667 11.4641 14.6667H4.53589C4.02269 14.6667 3.70194 14.1111 3.95854 13.6667L7.42264 7.66669Z\"\n fill=\"#FF8268\" stroke=\"#FFE6E1\" stroke-width=\"0.5\" />\n </g>\n <defs>\n <clipPath id=\"clip0\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n </div>\n \n </ng-container>\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'90%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'70%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <div class=\"banner-text text-base sm:text-4xl leading-6 sm:leading-10 font-bold\">{{\n handleCapitalize(extContentReadData?.name) }}\n <!-- <div class=\"knowledge-level-container badgediv\"> -->\n <span *ngIf=\"showBadgeIcon()\" class=\"custom-badge\">\n <img class=\"badge-img w-5 h-5\" src=\"{{ extContentReadData?.badgeDetails_v1?.[0]?.badgeTemplate | pipePublicURL }}\" alt=\"\" srcset=\"\">\n </span>\n <!-- </div> -->\n </div>\n \n <div class=\"text-sm sm:text-base source-text font-semibold break-words\" #contentSource\n [ngClass]=\"{'sourceEllipsis': sourceEllipsis}\" title=\"{{content?.source}}\">\n {{ 'cardcontentv2.by' | translate }}\n <span *ngIf=\"extContentReadData?.contentPartner?.contentPartnerName\">\n <span *ngIf=\"extContentReadData?.courseProvider?.length;else contentPartnerName\">\n {{ formatcourseProviders(extContentReadData?.courseProvider) }}\n </span>\n <ng-template #contentPartnerName>\n {{extContentReadData?.contentPartner?.contentPartnerName }}\n </ng-template>\n </span>\n <span *ngIf=\"!extContentReadData?.contentPartner?.contentPartnerName\">{{\n 'common.karmayogiBharat' | translate }}</span>\n </div>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'120px'\" [height]=\"'40px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'88px'\" [height]=\"'24px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- <div class=\"flex gap-4 items-center\" *ngIf=\"content?.averageRating || content?.additionalTags?.length\">\n <div class=\"flex flex-row rating-chip py-2 items-center cursor-pointer\" (click)=\"handleNavigateToReviews()\" *ngIf=\"content?.averageRating\">\n <div class=\"flex flex-row gap-1 margin-left-s items-center\">\n <mat-icon>grade</mat-icon>\n <div class=\"text-white text-sm leading-4\">{{ content?.averageRating }}</div>\n </div>\n <div class=\"separator\"></div>\n <div class=\"text-white text-sm leading-4 margin-right-m\">{{ content?.totalRating | pipeCountTransform }}</div>\n </div>\n <div class=\"flex items-center\" *ngIf=\"content?.additionalTags?.length\">\n <div class=\"most-enrolled-chip text-xs leading-3\">\n <span *ngIf=\"content?.additionalTags?.includes('mostTrending')\">{{ 'cardcontentv2.mostTrending' | translate }}</span>\n <span *ngIf=\"content?.additionalTags?.includes('mostEnrolled')\">{{ 'cardcontentv2.mostEnrolled' | translate }}</span>\n </div>\n </div>\n </div> -->\n </ng-container>\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'180px'\" [height]=\"'20px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader && extContentReadData?.lastUpdatedOn\">\n <div class=\"text-xs leading-4 source-text\">({{ 'apptoc.lastUpdatedOn' | translate }} {{\n extContentReadData?.lastUpdatedOn | date: 'MMM d, y' }})</div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"!forPreview\">\n\n <div *ngIf=\"isMobile\">\n <div class=\"flex flex-col gap-4 p-5 border-bottom position-bottom\">\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}'\">\n <div class=\"flex flex-row justify-end w-full ws-mat-black-text\">\n <span class=\"mat-body-2 ws-mat-black-text\">\n {{userExtCourseEnroll?.progress}}%</span>\n </div>\n <ws-widget-content-progress [contentId]=\"userExtCourseEnroll?.progress\"\n [progress]=\"userExtCourseEnroll?.progress\"\n [progressType]=\"'percentage'\" [customClassName]=\"'viewer-progress'\">\n </ws-widget-content-progress>\n </ng-container> -->\n <ng-container *ngIf=\"showEnroll\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\"\n (click)=\"enRollToExtCourse(extContentReadData)\">\n <ng-container>{{ 'apptochome.enroll' | translate }}\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"enrollValidationLoading\">\n <ws-widget-skeleton-loader [width]=\"'132px'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"showRedirect\">\n <a class=\"flex action-button justify-center flex-middle resume\" target=\"_blank\"\n [href]=\"extContentReadData?.redirectUrl\" (click)=\"captureRedirectTelemetry(extContentReadData)\">\n <ng-container>{{ 'apptochome.redirect' | translate }}\n <mat-icon class=\"ml-2 ws-mat-white-text\">open_in_new</mat-icon>\n </ng-container>\n </a>\n </ng-container>\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0\n && userExtCourseEnroll?.progress === 100\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\" (click)=\"downloadCert()\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>Certificate</span>\n <mat-icon *ngIf=\"!downloadCertificateLoading\" class=\"ml-2\">arrow_downward</mat-icon>\n <div class=\"center flex flex-middle certificate-loader margin-left-s\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'white'\" class=\"white-spinner\" [diameter]=\"24\"></mat-spinner>\n </div>\n </button>\n </ng-container> -->\n </div>\n\n <div class=\"block md:hidden\">\n <ng-container [ngTemplateOutlet]=\"inProgressInfo\" ></ng-container>\n </div>\n <div>\n <div class=\"flex flex-col px-8 py-4 gap-2\" *ngIf=\"extContentReadData?.duration > 0\">\n <img src=\"/assets/icons/toc/timer.svg\" width=\"20px\" alt=\"web image\" />\n <div class=\"text-xs\">{{ extContentReadData?.duration * 60 | pipeDurationTransform: 'hms' }}</div>\n </div>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row gap-6 fixed-width\">\n <div class=\"toc-content\" [ngClass]=\"isMobile ? '':'mt-8 mb-8'\">\n <mat-tab-group>\n <mat-tab label=\"{{ 'apptocsinglepage.about' | translate }}\">\n <ng-template matTabContent>\n <div class=\"flex flex-col\" [ngClass]=\"isMobile ? '':'mt-5 mb-5'\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'80px'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <div class=\"flex flex-col gap-2 mt-4\">\n <ws-widget-skeleton-loader [width]=\"'80%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'95%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'65%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <ws-widget-app-toc-about [contentReadData]=\"extContentReadData\" [showReviews]=\"false\"\n [baseContentReadData]=\"extContentReadData\"\n [showMarketPlaceCertificate]=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0 && userExtCourseEnroll?.progress === 100\"\n [content]=\"extContentReadData\" [fromMarketPlace]=\"true\"\n [skeletonLoader]=\"skeletonLoader\"\n [fromMDO]=\"fromMDO\">\n </ws-widget-app-toc-about>\n </ng-container>\n </div>\n </ng-template>\n </mat-tab>\n\n <ng-container *ngIf=\"config?.commentsTab\">\n <mat-tab label=\"{{ 'apptocsinglepage.comments' | translate }}\">\n <!-- <ng-template matTabContent> -->\n <div class=\"flex flex-col ratings-div mt-5\" id=\"commentsDiv\" *ngIf=\"discussWidgetData\">\n <ng-container *ngIf=\"!commentId\">\n <d-v2-widget-comment [widgetData]=\"discussWidgetData\"></d-v2-widget-comment>\n </ng-container>\n <ng-container *ngIf=\"commentId\">\n <div class=\"flex flex-row gap-3 cursor-pointer mb-5\" (click)=\"clearCommentIdFromUrl()\">\n <mat-icon class=\"cursor-pointer\">arrow_back</mat-icon>\n Back to all comments\n </div>\n <d-v2-widget-comment [widgetData]=\"discussWidgetData\" [commentId]=\"commentId\"\n [skeletonLoader]></d-v2-widget-comment>\n </ng-container>\n\n </div>\n <!-- </ng-template> -->\n </mat-tab>\n </ng-container>\n </mat-tab-group>\n\n </div>\n <div class=\"right-container\">\n <div class=\"right-content\" #rightContainer>\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'384px'\" [height]=\"'224px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <div class=\"flex flex-col image-div\"\n [ngStyle]=\"{\n 'background-image': 'url(' + extContentReadData?.appIcon + ')', 'background-repeat': 'no-repeat', 'background-size': 'cover'}\"\n [ngClass]=\"{'image-backdrop': scrolled}\">\n <div class=\"flex flex-col justify-between text-container\">\n <div class=\"flex items-center gap-4 justify-end\">\n <div (click)=\"onClickOfShare()\"\n class=\"flex flex-row items-center justify-end gap-2 share-tag\" *ngIf=\"!forPreview\">\n <mat-icon>share</mat-icon>\n <div>{{ 'apptocsinglepage.share' | translate }}</div>\n </div>\n </div>\n <div class=\"flex flex-col gap-1\" *ngIf=\"scrolled\">\n <div class=\"text-xl leading-6 text-white font-bold text-scrol-custom\">{{\n handleCapitalize(extContentReadData?.name) }}\n </div>\n <!-- <div class=\"text-sm source-text font-semibold break-words\" #contentSource [ngClass]=\"{'sourceEllipsis': sourceEllipsis}\" title=\"{{content?.source}}\">\n {{ 'cardcontentv2.by' | translate }}\n <span *ngIf=\"extContentReadData?.contentPartner?.contentPartnerName\">{{ extContentReadData?.contentPartner?.contentPartnerName }}</span>\n <span *ngIf=\"!extContentReadData?.contentPartner?.contentPartnerName\">{{ 'common.karmayogiBharat' | translate }}</span>\n </div> -->\n </div>\n </div>\n\n\n </div>\n\n\n </ng-container>\n\n <ng-container *ngIf=\"!forPreview\">\n <div class=\"flex flex-col gap-3 p-3 border-bottom\">\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}'\">\n <div class=\"flex flex-row justify-end w-full ws-mat-black-text\">\n <span class=\"mat-body-2 ws-mat-black-text\">\n {{userExtCourseEnroll?.progress}}%</span>\n </div>\n <ws-widget-content-progress [contentId]=\"userExtCourseEnroll?.progress\"\n [progress]=\"userExtCourseEnroll?.progress\"\n [progressType]=\"'percentage'\" [customClassName]=\"'viewer-progress'\">\n </ws-widget-content-progress>\n </ng-container> -->\n\n <ng-container *ngIf=\"showEnroll\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\"\n (click)=\"enRollToExtCourse(extContentReadData)\">\n <ng-container>{{ 'apptochome.enroll' | translate }}\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"enrollValidationLoading\">\n <ws-widget-skeleton-loader [width]=\"'100%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded '\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"showRedirect\">\n <a class=\"flex action-button justify-center flex-middle resume\" target=\"_blank\"\n [href]=\"extContentReadData?.redirectUrl\"\n (click)=\"captureRedirectTelemetry(extContentReadData)\">\n <ng-container>{{ 'apptochome.redirect' | translate }}\n <mat-icon class=\"ml-2 ws-mat-white-text\">open_in_new</mat-icon>\n </ng-container>\n </a>\n </ng-container>\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0\n && userExtCourseEnroll?.progress === 100\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\" (click)=\"downloadCert()\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>Certificate</span>\n <mat-icon *ngIf=\"!downloadCertificateLoading\" class=\"ml-2\">arrow_downward</mat-icon>\n <div class=\"center flex flex-middle certificate-loader margin-left-s\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'white'\" class=\"white-spinner\" [diameter]=\"24\"></mat-spinner>\n </div>\n </button>\n </ng-container> -->\n </div>\n </ng-container>\n\n <ng-container [ngTemplateOutlet]=\"inProgressInfo\" ></ng-container>\n <div>\n <div class=\"flex flex-col kpi-values items-center gap-2\" *ngIf=\"extContentReadData?.duration > 0\">\n <img src=\"/assets/icons/toc/timer.svg\" width=\"20px\" alt=\"web image\" />\n <div class=\"text-xs\">\n {{ extContentReadData?.duration | pipeDurationTransform: 'hms' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<div *ngIf=\"!extContentAvailable\">\n <div class=\"flex justify-center w-full\">\n <div class=\"margin-xl text-center\">\n <img src=\"/assets/common/error-pages/empty_search.svg\" wsUtilsImageResponsive alt=\"No results\"\n class=\"margin-top-l margin-bottom-s\">\n <h2 class=\"mat-h2\" i18n=\"search route no result\">{{'learnsearch.noResults' | translate}}</h2>\n </div>\n </div>\n\n</div>\n\n<ws-app-share-toc *ngIf=\"enableShare\" [contentLink]=\"contentLink\" [rootOrgId]=\"rootOrgId\" [content]=\"extContentReadData\"\n (resetEnableShare)=\"resetEnableShare($event)\"></ws-app-share-toc>\n\n<ng-template #inProgressInfo>\n <ng-container *ngIf=\"showProviderTips\">\n <div class=\"no-certificate-found mt-6 mb-4 mx-2 p-2\" >\n <ws-widget-sliders-dynamic [widgetData]=\"widgetData\"></ws-widget-sliders-dynamic>\n </div>\n </ng-container>\n</ng-template>", styles: [".source-text{color:#ffffffb3}.toc-banner{background:#3a83cf;background:linear-gradient(135deg,#3a83cf,#1b4ca1);width:100%}.toc-banner .fixed-width{padding:0 16px}.toc-banner .banner-details{padding:36px 0}.toc-banner .banner-details .due-tag{padding:4px;color:#fff;border-radius:4px}.toc-banner .banner-details .due-warning{background-color:#ff9800;border:1px solid #FF9800}.toc-banner .banner-details .due-overdue{background-color:#f44336;border:1px solid #F44336}.toc-banner .banner-details .due-success{background-color:#4caf50;border:1px solid #4CAF50}.toc-banner .banner-details .rating-chip{border:1px solid rgba(0,0,0,.6);border-radius:20px;background-color:#0009}.toc-banner .banner-details .rating-chip mat-icon{width:16px;height:16px;color:#ff9800;font-size:16px}.toc-banner .banner-details .rating-chip .separator{width:1px;height:20px;border-right:1px solid rgba(255,255,255,.16);margin:0 8px}.toc-banner .banner-details .banner-text{color:#fffffff2;word-wrap:break-word}.toc-banner .info-div{max-width:384px;width:100%}.toc-banner .most-enrolled-chip{background-color:#ffea9e;border:1px solid #FFEA9E;padding:4px;border-radius:2px}.text-info-div{padding:8px;background-color:#fff;border-radius:64px}.tag-div{border:1px solid #FF9800;background-color:#00000080}.tag-div mat-icon{font-size:12px;width:12px;height:12px}.fixed-width{max-width:1200px;display:block;margin:0 auto}.mat-subheading-1{margin-bottom:4px!important}.initial-circle{width:36px;height:36px;border-radius:50%;background:#1b2133;color:#fff;text-transform:uppercase}.toc-content{max-width:792px;width:100%}.right-container .image-div{height:220px;background-color:#ccc;border-top-left-radius:12px;border-top-right-radius:12px}.right-container .image-div img{max-width:384px;width:100%;height:220px;border-top-left-radius:12px;border-top-right-radius:12px;position:relative;top:-42px}.right-container .image-div .share-container{position:relative;z-index:2;top:20px;margin-right:20px}.right-container .image-div .share-tag{font-weight:700;background-color:#000;border:1px solid #FFF;border-radius:20px;padding:6px 16px;color:#fff;cursor:pointer}.right-container .tag-div mat-icon{width:16px;height:16px;font-size:16px}.right-container .share-tag mat-icon{width:20px;height:20px;font-size:20px}.right-container .text-container{position:relative;z-index:2;height:220px;padding:16px}.right-container .right-content{background-color:#fff;border-radius:12px;position:fixed;z-index:10;top:132px;width:384px;margin-bottom:2rem;box-shadow:0 2px 6px -1px #00000080,0 -4px 4px -2px #00000080}.right-container .border-bottom{border-bottom:1px solid rgba(0,0,0,.2)}.right-container .info-div{background-color:#fef7ed;border:none;border-radius:8px;padding:8px 12px;font-size:14px}.right-container .info-div .mat-icon{width:18px;height:18px;font-size:18px}.right-container .kpi-values{width:64px;padding:8px;text-align:center}.right-container .kpi-values .timer-icon{color:#000000de;height:20px}.batch-info{padding:16px;border-radius:4px;background-color:#1b4ca114;border:1px solid rgba(27,76,161,.08);text-align:center}.batch-info .batch-label{font-size:.75rem;color:#0009;line-height:1rem}.button{border-radius:64px;letter-spacing:.25px;padding:12px 36px;font-weight:700;cursor:pointer;text-align:center}@media screen and (max-width: 1200px){.right-container{display:none}.action-button:before{content:\"\";position:absolute;inset:-10px;background-color:#ffffff40;border-radius:inherit;filter:blur(10px);z-index:-1}.action-button:after{content:\"\";position:absolute;inset:-10px;box-shadow:0 0 -4px -4px #fff9;border-radius:inherit;z-index:-1}.karma-points-div{display:none}}.enroll-modal{max-width:600px!important;width:100%!important}.enroll-modal .mat-dialog-container{padding:0;border-radius:12px}.confirmation-modal{max-width:420px!important;width:100%!important}.confirmation-modal .mat-dialog-container{border-radius:12px;padding:0}.image-backdrop{background-color:#000!important;position:relative}.image-backdrop:after{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);content:\"\";display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:#000000a6;border-top-left-radius:12px;border-top-right-radius:12px}.text-scrol-custom{height:200px;overflow-y:auto}@media screen and (max-width: 1000px){.confirmation-modal,.enroll-modal{max-width:90vw!important}}.kpi-loader-div{width:18%}a.action-button{color:#fff!important;width:auto}.rate-button{color:#000000de!important;font-size:.875rem;font-weight:700;border:none!important}.rate-button .mat-button-wrapper{display:flex;gap:8px;align-items:center}.mobile-enroll-div{padding:16px;position:fixed;z-index:1000;bottom:0;width:calc(100% - 32px)}.mobile-enroll-div .action-button{min-width:320px;max-width:400px;margin:auto}@media screen and (min-width: 1201px){.mobile-enroll-div,.mob-share{display:none!important}.hideAbove1200{display:none}}.mobile-progress{padding:16px}@media screen and (min-width: 1200px){.mobile-progress{display:none}}.sourceEllipsis{white-space:break-spaces;position:relative;overflow:hidden;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.text-white{color:#fff!important}.custom-button,.fluid-width{width:100%}.toc-container{background:#fff;width:100%}mat-divider{border-top-color:#d9d9d9}.sticky{top:56px;overflow:hidden;z-index:10;width:100%}.statusMsg{border-radius:4px;height:40px}.toc-body{padding-bottom:1rem}.toc-body .toc-links{width:100%;z-index:1;border:none;background:transparent}.toc-body .toc-links .mat-tab-link{text-align:left;justify-content:flex-start}.toc-body .toc-links .mat-tab-link.justify-center{justify-content:center}.toc-body .toc-links .mat-tab-link.link-active{color:#0074b6!important}.tab:focus{outline:1px solid!important}.rounded-icon{background:#fff 0% 0% no-repeat padding-box;box-shadow:0 2px 4px #00000029;border:2px solid #00A9F4;border-radius:50%;min-width:0;opacity:1;height:35px;width:35px;padding:0;align-items:center;align-self:center;float:right}.rounded-icon mat-icon{color:#00a9f4}.blue-border{border:2px solid #0074b6!important}.hidden-xs-inline{display:inline}@media only screen and (max-width: 599px){.hidden-xs-inline{display:none}}.visible-xs-inline{display:none}@media only screen and (max-width: 599px){.visible-xs-inline{display:inline}}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px;box-shadow:none;padding-left:0}@media only screen and (max-width: 599px){.meta-section{width:100%}}.font-bold-imp{font-weight:700!important}.info-section{width:20%;min-width:250px}.info-section .custom-button{background:#0074b6 0% 0% no-repeat padding-box!important;border-radius:4px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0!important}}.info-section .glance-container .at-glance-heading{letter-spacing:0px;color:#222}.info-section .glance-container .info-item .cs-icons .mat-icon{color:#666;vertical-align:middle;font-size:20px}.info-section .glance-container .info-item .cs-icons img{width:20px;height:20px;vertical-align:middle}.info-section .glance-container .info-item .item-heading{font:600 14px/21px Lato;margin:0 0 4px;letter-spacing:0px;color:#0074b6!important}.info-section .glance-container .info-item .item-value{letter-spacing:0px;color:#5f5f5f}.info-section .glance-container .info-item .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.toc-discussion-container{display:flex;justify-content:space-between;flex-wrap:wrap-reverse}.toc-discussion-container .discussion{flex:1;min-width:1px}.toc-discussion-container .cohorts{width:100%;background:#fff 0% 0% no-repeat padding-box;border:1px solid #D9D9D9;border-radius:8px;box-shadow:none}@media only screen and (min-width: 600px) and (max-width: 959px){.toc-discussion-container .cohorts{margin-left:24px;min-width:250px}}@media only screen and (max-width: 599px){.toc-discussion-container .cohorts{margin-left:0;margin-bottom:24px;width:100%}}.mtb-xl{margin-top:3.5rem;margin-bottom:3.5rem}.detailBar{display:flex}.editDetails{margin:auto;display:flex}.white-bg{background:#fff!important;background-color:#fff!important}.contacts-container{padding:22px 0 10px;border:0;border-top:1px;border-style:solid;border-bottom:1px;border-color:#ececec}.contacts-container .contacts-head{letter-spacing:0px;color:#222;background:transparent;margin-bottom:24px}.contacts-container .author-card{min-width:291px;width:291px;display:flex;flex-direction:row;align-items:center;margin-bottom:30px;padding-right:10px}.contacts-container .author-card .right{padding:0 15px}.contacts-container .author-card .user-name{letter-spacing:0px;color:#5f5f5f}.contacts-container .author-card .user-university{letter-spacing:0px;color:#00a9f4}.contacts-container .author-card .user-button{background:#fff 0% 0% no-repeat padding-box;border:1px solid #F58634;border-radius:15px;letter-spacing:0px;color:#f58634;max-width:60px;padding:4px}.divider-transparent{border-top-color:transparent!important}.scroll-to-top{position:fixed;bottom:15px;right:15px;opacity:0;transition:all .2s ease-in-out;border-radius:50%}.scroll-to-top .icon{font-size:24px!important}.show-scroll{opacity:1;transition:all .2s ease-in-out}.sticky-breadcrumbs{position:sticky;z-index:999;top:72px;width:100%}.sticky-banner{position:sticky;z-index:999}.sticky-navs{position:sticky!important;background:#fff;z-index:999;top:auto}.actbutton{border:1px solid rgba(0,0,0,.16);border-radius:4px;padding:0 15px;width:100%;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.actbutton .mat-icon{margin-right:6px}.disable-start-btn{cursor:not-allowed!important;pointer-events:none!important;opacity:.5!important}.certificate-loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#fff}.cb-plan-wrap{opacity:1;color:#1b4ca1;font-family:Lato-Regular;font-size:12px;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.cb-plan-wrap .cb-danger{border-radius:2px;padding:4px 8px;border:1px solid #d13924;background-color:#d13924!important;color:#fff!important;opacity:1}.cb-plan-wrap .cb-success{padding:4px 8px;border-radius:2px;border:1px solid #1d8922;background-color:#1d8922!important;color:#fff!important;opacity:1}.cb-plan-wrap .cb-warning{padding:4px 8px;border-radius:2px;border:1px solid #ef951e;background-color:#ef951e!important;color:#fff!important;opacity:1}.bg-white{background-color:#fff}.provider-logo-div{border-radius:4px;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.provider-logo-div img{display:flex;border-radius:4px;width:40px;height:40px;padding:4px}ul{padding:0!important}.kpi-values{min-width:64px;padding:8px;text-align:center}.kpi-values img{height:24px;width:24px}.position-bottom{position:fixed;width:88%;bottom:0;z-index:99}.no-certificate-found{border:1px solid #ccc;border-color:#f3962f;background-color:#fceedb;border-radius:12px}.no-certificate-found{min-height:56px}.no-certificate-found ::ng-deep ws-widget-sliders-dynamic .banner-data{font-size:16px!important;font-family:lato,sans-serif!important}.truncate-5{-webkit-line-clamp:1;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;word-wrap:break-word}.ext-info-slider{padding:8px}#commentsDiv{margin:1rem auto;min-height:500px}.knowledge-level-container{margin-right:auto}.level-badge{display:inline-flex;height:24px;padding:2px 8px;align-items:center;gap:4px;flex-shrink:0;border-radius:12px;font-weight:600;font-size:12px;line-height:16px;white-space:nowrap}.level-badge.beginner{border:1px solid #49C951;background:linear-gradient(0deg,#49c95133 0% 100%),#fff;color:#2f8132;border-radius:16px}.level-badge.intermediate{border:1px solid #1B4CA1;background:linear-gradient(0deg,#1b4ca133 0% 100%),#fff;color:#1b4ca1;border-radius:16px}.level-badge.advanced{border:1px solid #FF8268;background:linear-gradient(0deg,#ff826833 0% 100%),#fff;color:#ff4b25;border-radius:16px}.level-badge svg{flex-shrink:0}::ng-deep .consent-dialog-panel .mat-dialog-container{overflow:hidden;padding:0;margin:0;border-radius:8px}::ng-deep .consent-dialog-panel .mat-dialog-content{padding:0;margin:0;max-height:none;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i18.MatLegacyTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "component", type: i18.MatLegacyTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "directive", type: i18.MatLegacyTabContent, selector: "[matTabContent]" }, { kind: "component", type: SkeletonLoaderComponent, selector: "ws-widget-skeleton-loader", inputs: ["bindingClass", "height", "width"] }, { kind: "component", type: AppTocAboutComponent, selector: "ws-widget-app-toc-about", inputs: ["condition", "kparray", "content", "contentReadData", "baseContentReadData", "skeletonLoader", "sticky", "tocStructure", "pathSet", "config", "resumeData", "forPreview", "showReviews", "batchData", "fromViewer", "selectedBatchData", "selectedTabValue", "fromMarketPlace", "showMarketPlaceCertificate", "languageList", "lockCertificate", "fromMDO"], outputs: ["trigerCompletionSurveyForm"] }, { kind: "component", type: ShareTocComponent, selector: "ws-app-share-toc", inputs: ["rootOrgId", "content", "contentLink", "baseContentReadData"], outputs: ["resetEnableShare"] }, { kind: "component", type: i12$2.WidgetCommentComponent, selector: "d-v2-widget-comment", inputs: ["widgetData", "commentId"], outputs: ["commentDataChange"] }, { kind: "component", type: SlidersDynamicComponent, selector: "ws-widget-sliders-dynamic", inputs: ["widgetData", "baseContentReadData"] }, { kind: "pipe", type: i2.JsonPipe, name: "json" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i2$1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i2$1.PipePublicURL, name: "pipePublicURL" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); }
|
|
26459
26729
|
}
|
|
26460
26730
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocCiosHomeComponent, decorators: [{
|
|
26461
26731
|
type: Component,
|
|
26462
|
-
args: [{ selector: 'ws-app-app-toc-cios-home', template: "<ng-container *ngIf=\"extContentAvailable\">\n <div class=\"toc-banner\">\n <div class=\"flex flex-row gap-6 fixed-width\">\n <div class=\"banner-details toc-content\" #bannerDetails>\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'132px'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'140px'\" [height]=\"'24px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- <div class=\"flex flex-row gap-2\">\n <div class=\"flex flex-row tag-div rounded-2xl gap-1 items-center p-2\">\n <mat-icon class=\"ws-mat-orange-text\">video_library</mat-icon>\n <ng-container *ngIf=\"content?.courseCategory\">\n <div class=\"text-xs font-bold text-white leading-3\">{{ translateLabel(content?.courseCategory, 'searchfilters') }}</div>\n </ng-container>\n <ng-container *ngIf=\"extContentReadData?.topic\">\n <div class=\"text-xs font-bold text-white leading-3\">{{ 'External Course' }}</div>\n </ng-container>\n </div>\n </div> -->\n </ng-container>\n\n <div class=\"flex items-center text-white mob-share\">\n <mat-icon (click)=\"onClickOfShare()\">share</mat-icon>\n </div>\n </div>\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- Knowledge level block -->\n <div *ngIf=\"extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel\"\n class=\"knowledge-level-container\">\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'beginner' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'beginner'\"\n class=\"level-badge beginner\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <rect width=\"16\" height=\"16\" fill=\"#DBF4DC\" />\n <path\n d=\"M7.42267 5C7.67927 4.55555 8.32077 4.55556 8.57737 5L12.0415 11C12.2981 11.4444 11.9773 12 11.4641 12H4.53592C4.02272 12 3.70197 11.4444 3.95857 11L7.42267 5Z\"\n fill=\"#49C951\" />\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'intermediate' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'intermediate'\"\n class=\"level-badge intermediate\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <rect width=\"16\" height=\"16\" fill=\"#D1DBEC\" />\n <path\n d=\"M7.42267 2.66666C7.67927 2.22221 8.32077 2.22221 8.57737 2.66666L12.0415 8.66666C12.2981 9.1111 11.9773 9.66666 11.4641 9.66666H4.53592C4.02272 9.66666 3.70197 9.1111 3.95857 8.66666L7.42267 2.66666Z\"\n fill=\"#1B4CA1\" />\n <path\n d=\"M7.42267 5.66666C7.67927 5.22221 8.32077 5.22221 8.57737 5.66666L12.0415 11.6667C12.2981 12.1111 11.9773 12.6667 11.4641 12.6667H4.53592C4.02272 12.6667 3.70197 12.1111 3.95857 11.6667L7.42267 5.66666Z\"\n fill=\"#1B4CA1\" stroke=\"#D1DBEC\" stroke-width=\"0.5\" />\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'advanced' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'advanced'\"\n class=\"level-badge advanced\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <g clip-path=\"url(#clip0)\">\n <rect width=\"16\" height=\"16\" fill=\"#FFE6E1\" />\n <path\n d=\"M7.42264 2.33334C7.67924 1.8889 8.32074 1.8889 8.57734 2.33334L12.0414 8.33334C12.298 8.77779 11.9773 9.33334 11.4641 9.33334H4.53589C4.02269 9.33334 3.70194 8.77779 3.95854 8.33334L7.42264 2.33334Z\"\n fill=\"#FF8268\" />\n <path\n d=\"M7.42264 5C7.67924 4.55555 8.32074 4.55556 8.57734 5L12.0414 11C12.298 11.4444 11.9773 12 11.4641 12H4.53589C4.02269 12 3.70194 11.4444 3.95854 11L7.42264 5Z\"\n fill=\"#FF8268\" stroke=\"#FFE6E1\" stroke-width=\"0.5\" />\n <path\n d=\"M7.42264 7.66669C7.67924 7.22224 8.32074 7.22224 8.57734 7.66669L12.0414 13.6667C12.298 14.1111 11.9773 14.6667 11.4641 14.6667H4.53589C4.02269 14.6667 3.70194 14.1111 3.95854 13.6667L7.42264 7.66669Z\"\n fill=\"#FF8268\" stroke=\"#FFE6E1\" stroke-width=\"0.5\" />\n </g>\n <defs>\n <clipPath id=\"clip0\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n </div>\n </ng-container>\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'90%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'70%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <div class=\"banner-text text-base sm:text-4xl leading-6 sm:leading-10 font-bold\">{{\n handleCapitalize(extContentReadData?.name) }}</div>\n <div class=\"text-sm sm:text-base source-text font-semibold break-words\" #contentSource\n [ngClass]=\"{'sourceEllipsis': sourceEllipsis}\" title=\"{{content?.source}}\">\n {{ 'cardcontentv2.by' | translate }}\n <span *ngIf=\"extContentReadData?.contentPartner?.contentPartnerName\">\n <span *ngIf=\"extContentReadData?.courseProvider?.length;else contentPartnerName\">\n {{ formatcourseProviders(extContentReadData?.courseProvider) }}\n </span>\n <ng-template #contentPartnerName>\n {{extContentReadData?.contentPartner?.contentPartnerName }}\n </ng-template>\n </span>\n <span *ngIf=\"!extContentReadData?.contentPartner?.contentPartnerName\">{{\n 'common.karmayogiBharat' | translate }}</span>\n </div>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'120px'\" [height]=\"'40px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'88px'\" [height]=\"'24px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- <div class=\"flex gap-4 items-center\" *ngIf=\"content?.averageRating || content?.additionalTags?.length\">\n <div class=\"flex flex-row rating-chip py-2 items-center cursor-pointer\" (click)=\"handleNavigateToReviews()\" *ngIf=\"content?.averageRating\">\n <div class=\"flex flex-row gap-1 margin-left-s items-center\">\n <mat-icon>grade</mat-icon>\n <div class=\"text-white text-sm leading-4\">{{ content?.averageRating }}</div>\n </div>\n <div class=\"separator\"></div>\n <div class=\"text-white text-sm leading-4 margin-right-m\">{{ content?.totalRating | pipeCountTransform }}</div>\n </div>\n <div class=\"flex items-center\" *ngIf=\"content?.additionalTags?.length\">\n <div class=\"most-enrolled-chip text-xs leading-3\">\n <span *ngIf=\"content?.additionalTags?.includes('mostTrending')\">{{ 'cardcontentv2.mostTrending' | translate }}</span>\n <span *ngIf=\"content?.additionalTags?.includes('mostEnrolled')\">{{ 'cardcontentv2.mostEnrolled' | translate }}</span>\n </div>\n </div>\n </div> -->\n </ng-container>\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'180px'\" [height]=\"'20px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader && extContentReadData?.lastUpdatedOn\">\n <div class=\"text-xs leading-4 source-text\">({{ 'apptoc.lastUpdatedOn' | translate }} {{\n extContentReadData?.lastUpdatedOn | date: 'MMM d, y' }})</div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"!forPreview\">\n\n <div *ngIf=\"isMobile\">\n <div class=\"flex flex-col gap-4 p-5 border-bottom position-bottom\">\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}'\">\n <div class=\"flex flex-row justify-end w-full ws-mat-black-text\">\n <span class=\"mat-body-2 ws-mat-black-text\">\n {{userExtCourseEnroll?.progress}}%</span>\n </div>\n <ws-widget-content-progress [contentId]=\"userExtCourseEnroll?.progress\"\n [progress]=\"userExtCourseEnroll?.progress\"\n [progressType]=\"'percentage'\" [customClassName]=\"'viewer-progress'\">\n </ws-widget-content-progress>\n </ng-container> -->\n <ng-container *ngIf=\"showEnroll\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\"\n (click)=\"enRollToExtCourse(extContentReadData)\">\n <ng-container>{{ 'apptochome.enroll' | translate }}\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"enrollValidationLoading\">\n <ws-widget-skeleton-loader [width]=\"'132px'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"showRedirect\">\n <a class=\"flex action-button justify-center flex-middle resume\" target=\"_blank\"\n [href]=\"extContentReadData?.redirectUrl\" (click)=\"captureRedirectTelemetry(extContentReadData)\">\n <ng-container>{{ 'apptochome.redirect' | translate }}\n <mat-icon class=\"ml-2 ws-mat-white-text\">open_in_new</mat-icon>\n </ng-container>\n </a>\n </ng-container>\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0\n && userExtCourseEnroll?.progress === 100\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\" (click)=\"downloadCert()\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>Certificate</span>\n <mat-icon *ngIf=\"!downloadCertificateLoading\" class=\"ml-2\">arrow_downward</mat-icon>\n <div class=\"center flex flex-middle certificate-loader margin-left-s\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'white'\" class=\"white-spinner\" [diameter]=\"24\"></mat-spinner>\n </div>\n </button>\n </ng-container> -->\n </div>\n\n <div class=\"block md:hidden\">\n <ng-container [ngTemplateOutlet]=\"inProgressInfo\" ></ng-container>\n </div>\n <div>\n <div class=\"flex flex-col px-8 py-4 gap-2\" *ngIf=\"extContentReadData?.duration > 0\">\n <img src=\"/assets/icons/toc/timer.svg\" width=\"20px\" alt=\"web image\" />\n <div class=\"text-xs\">{{ extContentReadData?.duration * 60 | pipeDurationTransform: 'hms' }}</div>\n </div>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row gap-6 fixed-width\">\n <div class=\"toc-content\" [ngClass]=\"isMobile ? '':'mt-8 mb-8'\">\n <mat-tab-group>\n <mat-tab label=\"{{ 'apptocsinglepage.about' | translate }}\">\n <ng-template matTabContent>\n <div class=\"flex flex-col\" [ngClass]=\"isMobile ? '':'mt-5 mb-5'\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'80px'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <div class=\"flex flex-col gap-2 mt-4\">\n <ws-widget-skeleton-loader [width]=\"'80%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'95%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'65%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <ws-widget-app-toc-about [contentReadData]=\"extContentReadData\" [showReviews]=\"false\"\n [baseContentReadData]=\"extContentReadData\"\n [showMarketPlaceCertificate]=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0 && userExtCourseEnroll?.progress === 100\"\n [content]=\"extContentReadData\" [fromMarketPlace]=\"true\"\n [skeletonLoader]=\"skeletonLoader\"\n [fromMDO]=\"fromMDO\">\n </ws-widget-app-toc-about>\n </ng-container>\n </div>\n </ng-template>\n </mat-tab>\n\n <ng-container *ngIf=\"config?.commentsTab\">\n <mat-tab label=\"{{ 'apptocsinglepage.comments' | translate }}\">\n <!-- <ng-template matTabContent> -->\n <div class=\"flex flex-col ratings-div mt-5\" id=\"commentsDiv\" *ngIf=\"discussWidgetData\">\n <ng-container *ngIf=\"!commentId\">\n <d-v2-widget-comment [widgetData]=\"discussWidgetData\"></d-v2-widget-comment>\n </ng-container>\n <ng-container *ngIf=\"commentId\">\n <div class=\"flex flex-row gap-3 cursor-pointer mb-5\" (click)=\"clearCommentIdFromUrl()\">\n <mat-icon class=\"cursor-pointer\">arrow_back</mat-icon>\n Back to all comments\n </div>\n <d-v2-widget-comment [widgetData]=\"discussWidgetData\" [commentId]=\"commentId\"\n [skeletonLoader]></d-v2-widget-comment>\n </ng-container>\n\n </div>\n <!-- </ng-template> -->\n </mat-tab>\n </ng-container>\n </mat-tab-group>\n\n </div>\n <div class=\"right-container\">\n <div class=\"right-content\" #rightContainer>\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'384px'\" [height]=\"'224px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <div class=\"flex flex-col image-div\"\n [ngStyle]=\"{\n 'background-image': 'url(' + extContentReadData?.appIcon + ')', 'background-repeat': 'no-repeat', 'background-size': 'cover'}\"\n [ngClass]=\"{'image-backdrop': scrolled}\">\n <div class=\"flex flex-col justify-between text-container\">\n <div class=\"flex items-center gap-4 justify-end\">\n <div (click)=\"onClickOfShare()\"\n class=\"flex flex-row items-center justify-end gap-2 share-tag\" *ngIf=\"!forPreview\">\n <mat-icon>share</mat-icon>\n <div>{{ 'apptocsinglepage.share' | translate }}</div>\n </div>\n </div>\n <div class=\"flex flex-col gap-1\" *ngIf=\"scrolled\">\n <div class=\"text-xl leading-6 text-white font-bold text-scrol-custom\">{{\n handleCapitalize(extContentReadData?.name) }}\n </div>\n <!-- <div class=\"text-sm source-text font-semibold break-words\" #contentSource [ngClass]=\"{'sourceEllipsis': sourceEllipsis}\" title=\"{{content?.source}}\">\n {{ 'cardcontentv2.by' | translate }}\n <span *ngIf=\"extContentReadData?.contentPartner?.contentPartnerName\">{{ extContentReadData?.contentPartner?.contentPartnerName }}</span>\n <span *ngIf=\"!extContentReadData?.contentPartner?.contentPartnerName\">{{ 'common.karmayogiBharat' | translate }}</span>\n </div> -->\n </div>\n </div>\n\n\n </div>\n\n\n </ng-container>\n\n <ng-container *ngIf=\"!forPreview\">\n <div class=\"flex flex-col gap-3 p-3 border-bottom\">\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}'\">\n <div class=\"flex flex-row justify-end w-full ws-mat-black-text\">\n <span class=\"mat-body-2 ws-mat-black-text\">\n {{userExtCourseEnroll?.progress}}%</span>\n </div>\n <ws-widget-content-progress [contentId]=\"userExtCourseEnroll?.progress\"\n [progress]=\"userExtCourseEnroll?.progress\"\n [progressType]=\"'percentage'\" [customClassName]=\"'viewer-progress'\">\n </ws-widget-content-progress>\n </ng-container> -->\n\n <ng-container *ngIf=\"showEnroll\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\"\n (click)=\"enRollToExtCourse(extContentReadData)\">\n <ng-container>{{ 'apptochome.enroll' | translate }}\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"enrollValidationLoading\">\n <ws-widget-skeleton-loader [width]=\"'100%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded '\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"showRedirect\">\n <a class=\"flex action-button justify-center flex-middle resume\" target=\"_blank\"\n [href]=\"extContentReadData?.redirectUrl\"\n (click)=\"captureRedirectTelemetry(extContentReadData)\">\n <ng-container>{{ 'apptochome.redirect' | translate }}\n <mat-icon class=\"ml-2 ws-mat-white-text\">open_in_new</mat-icon>\n </ng-container>\n </a>\n </ng-container>\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0\n && userExtCourseEnroll?.progress === 100\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\" (click)=\"downloadCert()\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>Certificate</span>\n <mat-icon *ngIf=\"!downloadCertificateLoading\" class=\"ml-2\">arrow_downward</mat-icon>\n <div class=\"center flex flex-middle certificate-loader margin-left-s\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'white'\" class=\"white-spinner\" [diameter]=\"24\"></mat-spinner>\n </div>\n </button>\n </ng-container> -->\n </div>\n </ng-container>\n\n <ng-container [ngTemplateOutlet]=\"inProgressInfo\" ></ng-container>\n <div>\n <div class=\"flex flex-col kpi-values items-center gap-2\" *ngIf=\"extContentReadData?.duration > 0\">\n <img src=\"/assets/icons/toc/timer.svg\" width=\"20px\" alt=\"web image\" />\n <div class=\"text-xs\">\n {{ extContentReadData?.duration | pipeDurationTransform: 'hms' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<div *ngIf=\"!extContentAvailable\">\n <div class=\"flex justify-center w-full\">\n <div class=\"margin-xl text-center\">\n <img src=\"/assets/common/error-pages/empty_search.svg\" wsUtilsImageResponsive alt=\"No results\"\n class=\"margin-top-l margin-bottom-s\">\n <h2 class=\"mat-h2\" i18n=\"search route no result\">{{'learnsearch.noResults' | translate}}</h2>\n </div>\n </div>\n\n</div>\n\n<ws-app-share-toc *ngIf=\"enableShare\" [contentLink]=\"contentLink\" [rootOrgId]=\"rootOrgId\" [content]=\"extContentReadData\"\n (resetEnableShare)=\"resetEnableShare($event)\"></ws-app-share-toc>\n\n<ng-template #inProgressInfo>\n <ng-container *ngIf=\"showProviderTips\">\n <div class=\"no-certificate-found mt-6 mb-4 mx-2 p-2\" >\n <ws-widget-sliders-dynamic [widgetData]=\"widgetData\"></ws-widget-sliders-dynamic>\n </div>\n </ng-container>\n</ng-template>", styles: [".source-text{color:#ffffffb3}.toc-banner{background:#3a83cf;background:linear-gradient(135deg,#3a83cf,#1b4ca1);width:100%}.toc-banner .fixed-width{padding:0 16px}.toc-banner .banner-details{padding:36px 0}.toc-banner .banner-details .due-tag{padding:4px;color:#fff;border-radius:4px}.toc-banner .banner-details .due-warning{background-color:#ff9800;border:1px solid #FF9800}.toc-banner .banner-details .due-overdue{background-color:#f44336;border:1px solid #F44336}.toc-banner .banner-details .due-success{background-color:#4caf50;border:1px solid #4CAF50}.toc-banner .banner-details .rating-chip{border:1px solid rgba(0,0,0,.6);border-radius:20px;background-color:#0009}.toc-banner .banner-details .rating-chip mat-icon{width:16px;height:16px;color:#ff9800;font-size:16px}.toc-banner .banner-details .rating-chip .separator{width:1px;height:20px;border-right:1px solid rgba(255,255,255,.16);margin:0 8px}.toc-banner .banner-details .banner-text{color:#fffffff2;word-wrap:break-word}.toc-banner .info-div{max-width:384px;width:100%}.toc-banner .most-enrolled-chip{background-color:#ffea9e;border:1px solid #FFEA9E;padding:4px;border-radius:2px}.text-info-div{padding:8px;background-color:#fff;border-radius:64px}.tag-div{border:1px solid #FF9800;background-color:#00000080}.tag-div mat-icon{font-size:12px;width:12px;height:12px}.fixed-width{max-width:1200px;display:block;margin:0 auto}.mat-subheading-1{margin-bottom:4px!important}.initial-circle{width:36px;height:36px;border-radius:50%;background:#1b2133;color:#fff;text-transform:uppercase}.toc-content{max-width:792px;width:100%}.right-container .image-div{height:220px;background-color:#ccc;border-top-left-radius:12px;border-top-right-radius:12px}.right-container .image-div img{max-width:384px;width:100%;height:220px;border-top-left-radius:12px;border-top-right-radius:12px;position:relative;top:-42px}.right-container .image-div .share-container{position:relative;z-index:2;top:20px;margin-right:20px}.right-container .image-div .share-tag{font-weight:700;background-color:#000;border:1px solid #FFF;border-radius:20px;padding:6px 16px;color:#fff;cursor:pointer}.right-container .tag-div mat-icon{width:16px;height:16px;font-size:16px}.right-container .share-tag mat-icon{width:20px;height:20px;font-size:20px}.right-container .text-container{position:relative;z-index:2;height:220px;padding:16px}.right-container .right-content{background-color:#fff;border-radius:12px;position:fixed;z-index:10;top:132px;width:384px;margin-bottom:2rem;box-shadow:0 2px 6px -1px #00000080,0 -4px 4px -2px #00000080}.right-container .border-bottom{border-bottom:1px solid rgba(0,0,0,.2)}.right-container .info-div{background-color:#fef7ed;border:none;border-radius:8px;padding:8px 12px;font-size:14px}.right-container .info-div .mat-icon{width:18px;height:18px;font-size:18px}.right-container .kpi-values{width:64px;padding:8px;text-align:center}.right-container .kpi-values .timer-icon{color:#000000de;height:20px}.batch-info{padding:16px;border-radius:4px;background-color:#1b4ca114;border:1px solid rgba(27,76,161,.08);text-align:center}.batch-info .batch-label{font-size:.75rem;color:#0009;line-height:1rem}.button{border-radius:64px;letter-spacing:.25px;padding:12px 36px;font-weight:700;cursor:pointer;text-align:center}@media screen and (max-width: 1200px){.right-container{display:none}.action-button:before{content:\"\";position:absolute;inset:-10px;background-color:#ffffff40;border-radius:inherit;filter:blur(10px);z-index:-1}.action-button:after{content:\"\";position:absolute;inset:-10px;box-shadow:0 0 -4px -4px #fff9;border-radius:inherit;z-index:-1}.karma-points-div{display:none}}.enroll-modal{max-width:600px!important;width:100%!important}.enroll-modal .mat-dialog-container{padding:0;border-radius:12px}.confirmation-modal{max-width:420px!important;width:100%!important}.confirmation-modal .mat-dialog-container{border-radius:12px;padding:0}.image-backdrop{background-color:#000!important;position:relative}.image-backdrop:after{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);content:\"\";display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:#000000a6;border-top-left-radius:12px;border-top-right-radius:12px}.text-scrol-custom{height:200px;overflow-y:auto}@media screen and (max-width: 1000px){.confirmation-modal,.enroll-modal{max-width:90vw!important}}.kpi-loader-div{width:18%}a.action-button{color:#fff!important;width:auto}.rate-button{color:#000000de!important;font-size:.875rem;font-weight:700;border:none!important}.rate-button .mat-button-wrapper{display:flex;gap:8px;align-items:center}.mobile-enroll-div{padding:16px;position:fixed;z-index:1000;bottom:0;width:calc(100% - 32px)}.mobile-enroll-div .action-button{min-width:320px;max-width:400px;margin:auto}@media screen and (min-width: 1201px){.mobile-enroll-div,.mob-share{display:none!important}.hideAbove1200{display:none}}.mobile-progress{padding:16px}@media screen and (min-width: 1200px){.mobile-progress{display:none}}.sourceEllipsis{white-space:break-spaces;position:relative;overflow:hidden;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.text-white{color:#fff!important}.custom-button,.fluid-width{width:100%}.toc-container{background:#fff;width:100%}mat-divider{border-top-color:#d9d9d9}.sticky{top:56px;overflow:hidden;z-index:10;width:100%}.statusMsg{border-radius:4px;height:40px}.toc-body{padding-bottom:1rem}.toc-body .toc-links{width:100%;z-index:1;border:none;background:transparent}.toc-body .toc-links .mat-tab-link{text-align:left;justify-content:flex-start}.toc-body .toc-links .mat-tab-link.justify-center{justify-content:center}.toc-body .toc-links .mat-tab-link.link-active{color:#0074b6!important}.tab:focus{outline:1px solid!important}.rounded-icon{background:#fff 0% 0% no-repeat padding-box;box-shadow:0 2px 4px #00000029;border:2px solid #00A9F4;border-radius:50%;min-width:0;opacity:1;height:35px;width:35px;padding:0;align-items:center;align-self:center;float:right}.rounded-icon mat-icon{color:#00a9f4}.blue-border{border:2px solid #0074b6!important}.hidden-xs-inline{display:inline}@media only screen and (max-width: 599px){.hidden-xs-inline{display:none}}.visible-xs-inline{display:none}@media only screen and (max-width: 599px){.visible-xs-inline{display:inline}}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px;box-shadow:none;padding-left:0}@media only screen and (max-width: 599px){.meta-section{width:100%}}.font-bold-imp{font-weight:700!important}.info-section{width:20%;min-width:250px}.info-section .custom-button{background:#0074b6 0% 0% no-repeat padding-box!important;border-radius:4px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0!important}}.info-section .glance-container .at-glance-heading{letter-spacing:0px;color:#222}.info-section .glance-container .info-item .cs-icons .mat-icon{color:#666;vertical-align:middle;font-size:20px}.info-section .glance-container .info-item .cs-icons img{width:20px;height:20px;vertical-align:middle}.info-section .glance-container .info-item .item-heading{font:600 14px/21px Lato;margin:0 0 4px;letter-spacing:0px;color:#0074b6!important}.info-section .glance-container .info-item .item-value{letter-spacing:0px;color:#5f5f5f}.info-section .glance-container .info-item .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.toc-discussion-container{display:flex;justify-content:space-between;flex-wrap:wrap-reverse}.toc-discussion-container .discussion{flex:1;min-width:1px}.toc-discussion-container .cohorts{width:100%;background:#fff 0% 0% no-repeat padding-box;border:1px solid #D9D9D9;border-radius:8px;box-shadow:none}@media only screen and (min-width: 600px) and (max-width: 959px){.toc-discussion-container .cohorts{margin-left:24px;min-width:250px}}@media only screen and (max-width: 599px){.toc-discussion-container .cohorts{margin-left:0;margin-bottom:24px;width:100%}}.mtb-xl{margin-top:3.5rem;margin-bottom:3.5rem}.detailBar{display:flex}.editDetails{margin:auto;display:flex}.white-bg{background:#fff!important;background-color:#fff!important}.contacts-container{padding:22px 0 10px;border:0;border-top:1px;border-style:solid;border-bottom:1px;border-color:#ececec}.contacts-container .contacts-head{letter-spacing:0px;color:#222;background:transparent;margin-bottom:24px}.contacts-container .author-card{min-width:291px;width:291px;display:flex;flex-direction:row;align-items:center;margin-bottom:30px;padding-right:10px}.contacts-container .author-card .right{padding:0 15px}.contacts-container .author-card .user-name{letter-spacing:0px;color:#5f5f5f}.contacts-container .author-card .user-university{letter-spacing:0px;color:#00a9f4}.contacts-container .author-card .user-button{background:#fff 0% 0% no-repeat padding-box;border:1px solid #F58634;border-radius:15px;letter-spacing:0px;color:#f58634;max-width:60px;padding:4px}.divider-transparent{border-top-color:transparent!important}.scroll-to-top{position:fixed;bottom:15px;right:15px;opacity:0;transition:all .2s ease-in-out;border-radius:50%}.scroll-to-top .icon{font-size:24px!important}.show-scroll{opacity:1;transition:all .2s ease-in-out}.sticky-breadcrumbs{position:sticky;z-index:999;top:72px;width:100%}.sticky-banner{position:sticky;z-index:999}.sticky-navs{position:sticky!important;background:#fff;z-index:999;top:auto}.actbutton{border:1px solid rgba(0,0,0,.16);border-radius:4px;padding:0 15px;width:100%;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.actbutton .mat-icon{margin-right:6px}.disable-start-btn{cursor:not-allowed!important;pointer-events:none!important;opacity:.5!important}.certificate-loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#fff}.cb-plan-wrap{opacity:1;color:#1b4ca1;font-family:Lato-Regular;font-size:12px;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.cb-plan-wrap .cb-danger{border-radius:2px;padding:4px 8px;border:1px solid #d13924;background-color:#d13924!important;color:#fff!important;opacity:1}.cb-plan-wrap .cb-success{padding:4px 8px;border-radius:2px;border:1px solid #1d8922;background-color:#1d8922!important;color:#fff!important;opacity:1}.cb-plan-wrap .cb-warning{padding:4px 8px;border-radius:2px;border:1px solid #ef951e;background-color:#ef951e!important;color:#fff!important;opacity:1}.bg-white{background-color:#fff}.provider-logo-div{border-radius:4px;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.provider-logo-div img{display:flex;border-radius:4px;width:40px;height:40px;padding:4px}ul{padding:0!important}.kpi-values{min-width:64px;padding:8px;text-align:center}.kpi-values img{height:24px;width:24px}.position-bottom{position:fixed;width:88%;bottom:0;z-index:99}.no-certificate-found{border:1px solid #ccc;border-color:#f3962f;background-color:#fceedb;border-radius:12px}.no-certificate-found{min-height:56px}.no-certificate-found ::ng-deep ws-widget-sliders-dynamic .banner-data{font-size:16px!important;font-family:lato,sans-serif!important}.truncate-5{-webkit-line-clamp:1;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;word-wrap:break-word}.ext-info-slider{padding:8px}#commentsDiv{margin:1rem auto;min-height:500px}.knowledge-level-container{margin-right:auto}.level-badge{display:inline-flex;height:24px;padding:2px 8px;align-items:center;gap:4px;flex-shrink:0;border-radius:12px;font-weight:600;font-size:12px;line-height:16px;white-space:nowrap}.level-badge.beginner{border:1px solid #49C951;background:linear-gradient(0deg,#49c95133 0% 100%),#fff;color:#2f8132;border-radius:16px}.level-badge.intermediate{border:1px solid #1B4CA1;background:linear-gradient(0deg,#1b4ca133 0% 100%),#fff;color:#1b4ca1;border-radius:16px}.level-badge.advanced{border:1px solid #FF8268;background:linear-gradient(0deg,#ff826833 0% 100%),#fff;color:#ff4b25;border-radius:16px}.level-badge svg{flex-shrink:0}::ng-deep .consent-dialog-panel .mat-dialog-container{overflow:hidden;padding:0;margin:0;border-radius:8px}::ng-deep .consent-dialog-panel .mat-dialog-content{padding:0;margin:0;max-height:none;overflow:hidden}\n"] }]
|
|
26732
|
+
args: [{ selector: 'ws-app-app-toc-cios-home', template: "<ng-container *ngIf=\"extContentAvailable\">\n <div class=\"toc-banner\">\n <div class=\"flex flex-row gap-6 fixed-width\">\n <div class=\"banner-details toc-content\" #bannerDetails>\n <div class=\"flex flex-col gap-4\">\n <div class=\"flex items-center justify-between gap-4\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'132px'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'140px'\" [height]=\"'24px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- <div class=\"flex flex-row gap-2\">\n <div class=\"flex flex-row tag-div rounded-2xl gap-1 items-center p-2\">\n <mat-icon class=\"ws-mat-orange-text\">video_library</mat-icon>\n <ng-container *ngIf=\"content?.courseCategory\">\n <div class=\"text-xs font-bold text-white leading-3\">{{ translateLabel(content?.courseCategory, 'searchfilters') }}</div>\n </ng-container>\n <ng-container *ngIf=\"extContentReadData?.topic\">\n <div class=\"text-xs font-bold text-white leading-3\">{{ 'External Course' }}</div>\n </ng-container>\n </div>\n </div> -->\n </ng-container>\n\n <div class=\"flex items-center text-white mob-share\">\n <mat-icon (click)=\"onClickOfShare()\">share</mat-icon>\n </div>\n </div>\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- Knowledge level block -->\n <div *ngIf=\"extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel\"\n class=\"knowledge-level-container\">\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'beginner' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'beginner'\"\n class=\"level-badge beginner\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <rect width=\"16\" height=\"16\" fill=\"#DBF4DC\" />\n <path\n d=\"M7.42267 5C7.67927 4.55555 8.32077 4.55556 8.57737 5L12.0415 11C12.2981 11.4444 11.9773 12 11.4641 12H4.53592C4.02272 12 3.70197 11.4444 3.95857 11L7.42267 5Z\"\n fill=\"#49C951\" />\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'intermediate' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'intermediate'\"\n class=\"level-badge intermediate\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <rect width=\"16\" height=\"16\" fill=\"#D1DBEC\" />\n <path\n d=\"M7.42267 2.66666C7.67927 2.22221 8.32077 2.22221 8.57737 2.66666L12.0415 8.66666C12.2981 9.1111 11.9773 9.66666 11.4641 9.66666H4.53592C4.02272 9.66666 3.70197 9.1111 3.95857 8.66666L7.42267 2.66666Z\"\n fill=\"#1B4CA1\" />\n <path\n d=\"M7.42267 5.66666C7.67927 5.22221 8.32077 5.22221 8.57737 5.66666L12.0415 11.6667C12.2981 12.1111 11.9773 12.6667 11.4641 12.6667H4.53592C4.02272 12.6667 3.70197 12.1111 3.95857 11.6667L7.42267 5.66666Z\"\n fill=\"#1B4CA1\" stroke=\"#D1DBEC\" stroke-width=\"0.5\" />\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n <span\n *ngIf=\"extContentReadData?.difficultyLevel?.toLowerCase() === 'advanced' || extContentReadData?.knowledgeLevel?.toLowerCase() === 'advanced'\"\n class=\"level-badge advanced\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\">\n <g clip-path=\"url(#clip0)\">\n <rect width=\"16\" height=\"16\" fill=\"#FFE6E1\" />\n <path\n d=\"M7.42264 2.33334C7.67924 1.8889 8.32074 1.8889 8.57734 2.33334L12.0414 8.33334C12.298 8.77779 11.9773 9.33334 11.4641 9.33334H4.53589C4.02269 9.33334 3.70194 8.77779 3.95854 8.33334L7.42264 2.33334Z\"\n fill=\"#FF8268\" />\n <path\n d=\"M7.42264 5C7.67924 4.55555 8.32074 4.55556 8.57734 5L12.0414 11C12.298 11.4444 11.9773 12 11.4641 12H4.53589C4.02269 12 3.70194 11.4444 3.95854 11L7.42264 5Z\"\n fill=\"#FF8268\" stroke=\"#FFE6E1\" stroke-width=\"0.5\" />\n <path\n d=\"M7.42264 7.66669C7.67924 7.22224 8.32074 7.22224 8.57734 7.66669L12.0414 13.6667C12.298 14.1111 11.9773 14.6667 11.4641 14.6667H4.53589C4.02269 14.6667 3.70194 14.1111 3.95854 13.6667L7.42264 7.66669Z\"\n fill=\"#FF8268\" stroke=\"#FFE6E1\" stroke-width=\"0.5\" />\n </g>\n <defs>\n <clipPath id=\"clip0\">\n <rect width=\"16\" height=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n {{extContentReadData?.difficultyLevel || extContentReadData?.knowledgeLevel}}\n </span>\n </div>\n \n </ng-container>\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'90%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'70%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <div class=\"banner-text text-base sm:text-4xl leading-6 sm:leading-10 font-bold\">{{\n handleCapitalize(extContentReadData?.name) }}\n <!-- <div class=\"knowledge-level-container badgediv\"> -->\n <span *ngIf=\"showBadgeIcon()\" class=\"custom-badge\">\n <img class=\"badge-img w-5 h-5\" src=\"{{ extContentReadData?.badgeDetails_v1?.[0]?.badgeTemplate | pipePublicURL }}\" alt=\"\" srcset=\"\">\n </span>\n <!-- </div> -->\n </div>\n \n <div class=\"text-sm sm:text-base source-text font-semibold break-words\" #contentSource\n [ngClass]=\"{'sourceEllipsis': sourceEllipsis}\" title=\"{{content?.source}}\">\n {{ 'cardcontentv2.by' | translate }}\n <span *ngIf=\"extContentReadData?.contentPartner?.contentPartnerName\">\n <span *ngIf=\"extContentReadData?.courseProvider?.length;else contentPartnerName\">\n {{ formatcourseProviders(extContentReadData?.courseProvider) }}\n </span>\n <ng-template #contentPartnerName>\n {{extContentReadData?.contentPartner?.contentPartnerName }}\n </ng-template>\n </span>\n <span *ngIf=\"!extContentReadData?.contentPartner?.contentPartnerName\">{{\n 'common.karmayogiBharat' | translate }}</span>\n </div>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'120px'\" [height]=\"'40px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'88px'\" [height]=\"'24px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <!-- <div class=\"flex gap-4 items-center\" *ngIf=\"content?.averageRating || content?.additionalTags?.length\">\n <div class=\"flex flex-row rating-chip py-2 items-center cursor-pointer\" (click)=\"handleNavigateToReviews()\" *ngIf=\"content?.averageRating\">\n <div class=\"flex flex-row gap-1 margin-left-s items-center\">\n <mat-icon>grade</mat-icon>\n <div class=\"text-white text-sm leading-4\">{{ content?.averageRating }}</div>\n </div>\n <div class=\"separator\"></div>\n <div class=\"text-white text-sm leading-4 margin-right-m\">{{ content?.totalRating | pipeCountTransform }}</div>\n </div>\n <div class=\"flex items-center\" *ngIf=\"content?.additionalTags?.length\">\n <div class=\"most-enrolled-chip text-xs leading-3\">\n <span *ngIf=\"content?.additionalTags?.includes('mostTrending')\">{{ 'cardcontentv2.mostTrending' | translate }}</span>\n <span *ngIf=\"content?.additionalTags?.includes('mostEnrolled')\">{{ 'cardcontentv2.mostEnrolled' | translate }}</span>\n </div>\n </div>\n </div> -->\n </ng-container>\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'180px'\" [height]=\"'20px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader && extContentReadData?.lastUpdatedOn\">\n <div class=\"text-xs leading-4 source-text\">({{ 'apptoc.lastUpdatedOn' | translate }} {{\n extContentReadData?.lastUpdatedOn | date: 'MMM d, y' }})</div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"!forPreview\">\n\n <div *ngIf=\"isMobile\">\n <div class=\"flex flex-col gap-4 p-5 border-bottom position-bottom\">\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}'\">\n <div class=\"flex flex-row justify-end w-full ws-mat-black-text\">\n <span class=\"mat-body-2 ws-mat-black-text\">\n {{userExtCourseEnroll?.progress}}%</span>\n </div>\n <ws-widget-content-progress [contentId]=\"userExtCourseEnroll?.progress\"\n [progress]=\"userExtCourseEnroll?.progress\"\n [progressType]=\"'percentage'\" [customClassName]=\"'viewer-progress'\">\n </ws-widget-content-progress>\n </ng-container> -->\n <ng-container *ngIf=\"showEnroll\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\"\n (click)=\"enRollToExtCourse(extContentReadData)\">\n <ng-container>{{ 'apptochome.enroll' | translate }}\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"enrollValidationLoading\">\n <ws-widget-skeleton-loader [width]=\"'132px'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded blue-2-loader'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"showRedirect\">\n <a class=\"flex action-button justify-center flex-middle resume\" target=\"_blank\"\n [href]=\"extContentReadData?.redirectUrl\" (click)=\"captureRedirectTelemetry(extContentReadData)\">\n <ng-container>{{ 'apptochome.redirect' | translate }}\n <mat-icon class=\"ml-2 ws-mat-white-text\">open_in_new</mat-icon>\n </ng-container>\n </a>\n </ng-container>\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0\n && userExtCourseEnroll?.progress === 100\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\" (click)=\"downloadCert()\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>Certificate</span>\n <mat-icon *ngIf=\"!downloadCertificateLoading\" class=\"ml-2\">arrow_downward</mat-icon>\n <div class=\"center flex flex-middle certificate-loader margin-left-s\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'white'\" class=\"white-spinner\" [diameter]=\"24\"></mat-spinner>\n </div>\n </button>\n </ng-container> -->\n </div>\n\n <div class=\"block md:hidden\">\n <ng-container [ngTemplateOutlet]=\"inProgressInfo\" ></ng-container>\n </div>\n <div>\n <div class=\"flex flex-col px-8 py-4 gap-2\" *ngIf=\"extContentReadData?.duration > 0\">\n <img src=\"/assets/icons/toc/timer.svg\" width=\"20px\" alt=\"web image\" />\n <div class=\"text-xs\">{{ extContentReadData?.duration * 60 | pipeDurationTransform: 'hms' }}</div>\n </div>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row gap-6 fixed-width\">\n <div class=\"toc-content\" [ngClass]=\"isMobile ? '':'mt-8 mb-8'\">\n <mat-tab-group>\n <mat-tab label=\"{{ 'apptocsinglepage.about' | translate }}\">\n <ng-template matTabContent>\n <div class=\"flex flex-col\" [ngClass]=\"isMobile ? '':'mt-5 mb-5'\">\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'80px'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <div class=\"flex flex-col gap-2 mt-4\">\n <ws-widget-skeleton-loader [width]=\"'80%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'95%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n <ws-widget-skeleton-loader [width]=\"'65%'\" [height]=\"'16px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <ws-widget-app-toc-about [contentReadData]=\"extContentReadData\" [showReviews]=\"false\"\n [baseContentReadData]=\"extContentReadData\"\n [showMarketPlaceCertificate]=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0 && userExtCourseEnroll?.progress === 100\"\n [content]=\"extContentReadData\" [fromMarketPlace]=\"true\"\n [skeletonLoader]=\"skeletonLoader\"\n [fromMDO]=\"fromMDO\">\n </ws-widget-app-toc-about>\n </ng-container>\n </div>\n </ng-template>\n </mat-tab>\n\n <ng-container *ngIf=\"config?.commentsTab\">\n <mat-tab label=\"{{ 'apptocsinglepage.comments' | translate }}\">\n <!-- <ng-template matTabContent> -->\n <div class=\"flex flex-col ratings-div mt-5\" id=\"commentsDiv\" *ngIf=\"discussWidgetData\">\n <ng-container *ngIf=\"!commentId\">\n <d-v2-widget-comment [widgetData]=\"discussWidgetData\"></d-v2-widget-comment>\n </ng-container>\n <ng-container *ngIf=\"commentId\">\n <div class=\"flex flex-row gap-3 cursor-pointer mb-5\" (click)=\"clearCommentIdFromUrl()\">\n <mat-icon class=\"cursor-pointer\">arrow_back</mat-icon>\n Back to all comments\n </div>\n <d-v2-widget-comment [widgetData]=\"discussWidgetData\" [commentId]=\"commentId\"\n [skeletonLoader]></d-v2-widget-comment>\n </ng-container>\n\n </div>\n <!-- </ng-template> -->\n </mat-tab>\n </ng-container>\n </mat-tab-group>\n\n </div>\n <div class=\"right-container\">\n <div class=\"right-content\" #rightContainer>\n <ng-container *ngIf=\"skeletonLoader\">\n <ws-widget-skeleton-loader [width]=\"'384px'\" [height]=\"'224px'\"\n [bindingClass]=\"'rounded'\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"!skeletonLoader\">\n <div class=\"flex flex-col image-div\"\n [ngStyle]=\"{\n 'background-image': 'url(' + extContentReadData?.appIcon + ')', 'background-repeat': 'no-repeat', 'background-size': 'cover'}\"\n [ngClass]=\"{'image-backdrop': scrolled}\">\n <div class=\"flex flex-col justify-between text-container\">\n <div class=\"flex items-center gap-4 justify-end\">\n <div (click)=\"onClickOfShare()\"\n class=\"flex flex-row items-center justify-end gap-2 share-tag\" *ngIf=\"!forPreview\">\n <mat-icon>share</mat-icon>\n <div>{{ 'apptocsinglepage.share' | translate }}</div>\n </div>\n </div>\n <div class=\"flex flex-col gap-1\" *ngIf=\"scrolled\">\n <div class=\"text-xl leading-6 text-white font-bold text-scrol-custom\">{{\n handleCapitalize(extContentReadData?.name) }}\n </div>\n <!-- <div class=\"text-sm source-text font-semibold break-words\" #contentSource [ngClass]=\"{'sourceEllipsis': sourceEllipsis}\" title=\"{{content?.source}}\">\n {{ 'cardcontentv2.by' | translate }}\n <span *ngIf=\"extContentReadData?.contentPartner?.contentPartnerName\">{{ extContentReadData?.contentPartner?.contentPartnerName }}</span>\n <span *ngIf=\"!extContentReadData?.contentPartner?.contentPartnerName\">{{ 'common.karmayogiBharat' | translate }}</span>\n </div> -->\n </div>\n </div>\n\n\n </div>\n\n\n </ng-container>\n\n <ng-container *ngIf=\"!forPreview\">\n <div class=\"flex flex-col gap-3 p-3 border-bottom\">\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}'\">\n <div class=\"flex flex-row justify-end w-full ws-mat-black-text\">\n <span class=\"mat-body-2 ws-mat-black-text\">\n {{userExtCourseEnroll?.progress}}%</span>\n </div>\n <ws-widget-content-progress [contentId]=\"userExtCourseEnroll?.progress\"\n [progress]=\"userExtCourseEnroll?.progress\"\n [progressType]=\"'percentage'\" [customClassName]=\"'viewer-progress'\">\n </ws-widget-content-progress>\n </ng-container> -->\n\n <ng-container *ngIf=\"showEnroll\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\"\n (click)=\"enRollToExtCourse(extContentReadData)\">\n <ng-container>{{ 'apptochome.enroll' | translate }}\n </ng-container>\n </button>\n </ng-container>\n <ng-container *ngIf=\"enrollValidationLoading\">\n <ws-widget-skeleton-loader [width]=\"'100%'\" [height]=\"'32px'\"\n [bindingClass]=\"'rounded '\"></ws-widget-skeleton-loader>\n </ng-container>\n <ng-container *ngIf=\"showRedirect\">\n <a class=\"flex action-button justify-center flex-middle resume\" target=\"_blank\"\n [href]=\"extContentReadData?.redirectUrl\"\n (click)=\"captureRedirectTelemetry(extContentReadData)\">\n <ng-container>{{ 'apptochome.redirect' | translate }}\n <mat-icon class=\"ml-2 ws-mat-white-text\">open_in_new</mat-icon>\n </ng-container>\n </a>\n </ng-container>\n <!-- <ng-container *ngIf=\"(userExtCourseEnroll | json) !== '{}' && userExtCourseEnroll?.issued_certificates?.length > 0\n && userExtCourseEnroll?.progress === 100\">\n <button class=\"flex action-button justify-center flex-middle resume\" type=\"button\" (click)=\"downloadCert()\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>Certificate</span>\n <mat-icon *ngIf=\"!downloadCertificateLoading\" class=\"ml-2\">arrow_downward</mat-icon>\n <div class=\"center flex flex-middle certificate-loader margin-left-s\" *ngIf=\"downloadCertificateLoading\">\n <mat-spinner strokeWidth=\"2\" stroke=\"'white'\" class=\"white-spinner\" [diameter]=\"24\"></mat-spinner>\n </div>\n </button>\n </ng-container> -->\n </div>\n </ng-container>\n\n <ng-container [ngTemplateOutlet]=\"inProgressInfo\" ></ng-container>\n <div>\n <div class=\"flex flex-col kpi-values items-center gap-2\" *ngIf=\"extContentReadData?.duration > 0\">\n <img src=\"/assets/icons/toc/timer.svg\" width=\"20px\" alt=\"web image\" />\n <div class=\"text-xs\">\n {{ extContentReadData?.duration | pipeDurationTransform: 'hms' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<div *ngIf=\"!extContentAvailable\">\n <div class=\"flex justify-center w-full\">\n <div class=\"margin-xl text-center\">\n <img src=\"/assets/common/error-pages/empty_search.svg\" wsUtilsImageResponsive alt=\"No results\"\n class=\"margin-top-l margin-bottom-s\">\n <h2 class=\"mat-h2\" i18n=\"search route no result\">{{'learnsearch.noResults' | translate}}</h2>\n </div>\n </div>\n\n</div>\n\n<ws-app-share-toc *ngIf=\"enableShare\" [contentLink]=\"contentLink\" [rootOrgId]=\"rootOrgId\" [content]=\"extContentReadData\"\n (resetEnableShare)=\"resetEnableShare($event)\"></ws-app-share-toc>\n\n<ng-template #inProgressInfo>\n <ng-container *ngIf=\"showProviderTips\">\n <div class=\"no-certificate-found mt-6 mb-4 mx-2 p-2\" >\n <ws-widget-sliders-dynamic [widgetData]=\"widgetData\"></ws-widget-sliders-dynamic>\n </div>\n </ng-container>\n</ng-template>", styles: [".source-text{color:#ffffffb3}.toc-banner{background:#3a83cf;background:linear-gradient(135deg,#3a83cf,#1b4ca1);width:100%}.toc-banner .fixed-width{padding:0 16px}.toc-banner .banner-details{padding:36px 0}.toc-banner .banner-details .due-tag{padding:4px;color:#fff;border-radius:4px}.toc-banner .banner-details .due-warning{background-color:#ff9800;border:1px solid #FF9800}.toc-banner .banner-details .due-overdue{background-color:#f44336;border:1px solid #F44336}.toc-banner .banner-details .due-success{background-color:#4caf50;border:1px solid #4CAF50}.toc-banner .banner-details .rating-chip{border:1px solid rgba(0,0,0,.6);border-radius:20px;background-color:#0009}.toc-banner .banner-details .rating-chip mat-icon{width:16px;height:16px;color:#ff9800;font-size:16px}.toc-banner .banner-details .rating-chip .separator{width:1px;height:20px;border-right:1px solid rgba(255,255,255,.16);margin:0 8px}.toc-banner .banner-details .banner-text{color:#fffffff2;word-wrap:break-word}.toc-banner .info-div{max-width:384px;width:100%}.toc-banner .most-enrolled-chip{background-color:#ffea9e;border:1px solid #FFEA9E;padding:4px;border-radius:2px}.text-info-div{padding:8px;background-color:#fff;border-radius:64px}.tag-div{border:1px solid #FF9800;background-color:#00000080}.tag-div mat-icon{font-size:12px;width:12px;height:12px}.fixed-width{max-width:1200px;display:block;margin:0 auto}.mat-subheading-1{margin-bottom:4px!important}.initial-circle{width:36px;height:36px;border-radius:50%;background:#1b2133;color:#fff;text-transform:uppercase}.toc-content{max-width:792px;width:100%}.right-container .image-div{height:220px;background-color:#ccc;border-top-left-radius:12px;border-top-right-radius:12px}.right-container .image-div img{max-width:384px;width:100%;height:220px;border-top-left-radius:12px;border-top-right-radius:12px;position:relative;top:-42px}.right-container .image-div .share-container{position:relative;z-index:2;top:20px;margin-right:20px}.right-container .image-div .share-tag{font-weight:700;background-color:#000;border:1px solid #FFF;border-radius:20px;padding:6px 16px;color:#fff;cursor:pointer}.right-container .tag-div mat-icon{width:16px;height:16px;font-size:16px}.right-container .share-tag mat-icon{width:20px;height:20px;font-size:20px}.right-container .text-container{position:relative;z-index:2;height:220px;padding:16px}.right-container .right-content{background-color:#fff;border-radius:12px;position:fixed;z-index:10;top:132px;width:384px;margin-bottom:2rem;box-shadow:0 2px 6px -1px #00000080,0 -4px 4px -2px #00000080}.right-container .border-bottom{border-bottom:1px solid rgba(0,0,0,.2)}.right-container .info-div{background-color:#fef7ed;border:none;border-radius:8px;padding:8px 12px;font-size:14px}.right-container .info-div .mat-icon{width:18px;height:18px;font-size:18px}.right-container .kpi-values{width:64px;padding:8px;text-align:center}.right-container .kpi-values .timer-icon{color:#000000de;height:20px}.batch-info{padding:16px;border-radius:4px;background-color:#1b4ca114;border:1px solid rgba(27,76,161,.08);text-align:center}.batch-info .batch-label{font-size:.75rem;color:#0009;line-height:1rem}.button{border-radius:64px;letter-spacing:.25px;padding:12px 36px;font-weight:700;cursor:pointer;text-align:center}@media screen and (max-width: 1200px){.right-container{display:none}.action-button:before{content:\"\";position:absolute;inset:-10px;background-color:#ffffff40;border-radius:inherit;filter:blur(10px);z-index:-1}.action-button:after{content:\"\";position:absolute;inset:-10px;box-shadow:0 0 -4px -4px #fff9;border-radius:inherit;z-index:-1}.karma-points-div{display:none}}.enroll-modal{max-width:600px!important;width:100%!important}.enroll-modal .mat-dialog-container{padding:0;border-radius:12px}.confirmation-modal{max-width:420px!important;width:100%!important}.confirmation-modal .mat-dialog-container{border-radius:12px;padding:0}.image-backdrop{background-color:#000!important;position:relative}.image-backdrop:after{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);content:\"\";display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:#000000a6;border-top-left-radius:12px;border-top-right-radius:12px}.text-scrol-custom{height:200px;overflow-y:auto}@media screen and (max-width: 1000px){.confirmation-modal,.enroll-modal{max-width:90vw!important}}.kpi-loader-div{width:18%}a.action-button{color:#fff!important;width:auto}.rate-button{color:#000000de!important;font-size:.875rem;font-weight:700;border:none!important}.rate-button .mat-button-wrapper{display:flex;gap:8px;align-items:center}.mobile-enroll-div{padding:16px;position:fixed;z-index:1000;bottom:0;width:calc(100% - 32px)}.mobile-enroll-div .action-button{min-width:320px;max-width:400px;margin:auto}@media screen and (min-width: 1201px){.mobile-enroll-div,.mob-share{display:none!important}.hideAbove1200{display:none}}.mobile-progress{padding:16px}@media screen and (min-width: 1200px){.mobile-progress{display:none}}.sourceEllipsis{white-space:break-spaces;position:relative;overflow:hidden;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}.text-white{color:#fff!important}.custom-button,.fluid-width{width:100%}.toc-container{background:#fff;width:100%}mat-divider{border-top-color:#d9d9d9}.sticky{top:56px;overflow:hidden;z-index:10;width:100%}.statusMsg{border-radius:4px;height:40px}.toc-body{padding-bottom:1rem}.toc-body .toc-links{width:100%;z-index:1;border:none;background:transparent}.toc-body .toc-links .mat-tab-link{text-align:left;justify-content:flex-start}.toc-body .toc-links .mat-tab-link.justify-center{justify-content:center}.toc-body .toc-links .mat-tab-link.link-active{color:#0074b6!important}.tab:focus{outline:1px solid!important}.rounded-icon{background:#fff 0% 0% no-repeat padding-box;box-shadow:0 2px 4px #00000029;border:2px solid #00A9F4;border-radius:50%;min-width:0;opacity:1;height:35px;width:35px;padding:0;align-items:center;align-self:center;float:right}.rounded-icon mat-icon{color:#00a9f4}.blue-border{border:2px solid #0074b6!important}.hidden-xs-inline{display:inline}@media only screen and (max-width: 599px){.hidden-xs-inline{display:none}}.visible-xs-inline{display:none}@media only screen and (max-width: 599px){.visible-xs-inline{display:inline}}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px;box-shadow:none;padding-left:0}@media only screen and (max-width: 599px){.meta-section{width:100%}}.font-bold-imp{font-weight:700!important}.info-section{width:20%;min-width:250px}.info-section .custom-button{background:#0074b6 0% 0% no-repeat padding-box!important;border-radius:4px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0!important}}.info-section .glance-container .at-glance-heading{letter-spacing:0px;color:#222}.info-section .glance-container .info-item .cs-icons .mat-icon{color:#666;vertical-align:middle;font-size:20px}.info-section .glance-container .info-item .cs-icons img{width:20px;height:20px;vertical-align:middle}.info-section .glance-container .info-item .item-heading{font:600 14px/21px Lato;margin:0 0 4px;letter-spacing:0px;color:#0074b6!important}.info-section .glance-container .info-item .item-value{letter-spacing:0px;color:#5f5f5f}.info-section .glance-container .info-item .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.toc-discussion-container{display:flex;justify-content:space-between;flex-wrap:wrap-reverse}.toc-discussion-container .discussion{flex:1;min-width:1px}.toc-discussion-container .cohorts{width:100%;background:#fff 0% 0% no-repeat padding-box;border:1px solid #D9D9D9;border-radius:8px;box-shadow:none}@media only screen and (min-width: 600px) and (max-width: 959px){.toc-discussion-container .cohorts{margin-left:24px;min-width:250px}}@media only screen and (max-width: 599px){.toc-discussion-container .cohorts{margin-left:0;margin-bottom:24px;width:100%}}.mtb-xl{margin-top:3.5rem;margin-bottom:3.5rem}.detailBar{display:flex}.editDetails{margin:auto;display:flex}.white-bg{background:#fff!important;background-color:#fff!important}.contacts-container{padding:22px 0 10px;border:0;border-top:1px;border-style:solid;border-bottom:1px;border-color:#ececec}.contacts-container .contacts-head{letter-spacing:0px;color:#222;background:transparent;margin-bottom:24px}.contacts-container .author-card{min-width:291px;width:291px;display:flex;flex-direction:row;align-items:center;margin-bottom:30px;padding-right:10px}.contacts-container .author-card .right{padding:0 15px}.contacts-container .author-card .user-name{letter-spacing:0px;color:#5f5f5f}.contacts-container .author-card .user-university{letter-spacing:0px;color:#00a9f4}.contacts-container .author-card .user-button{background:#fff 0% 0% no-repeat padding-box;border:1px solid #F58634;border-radius:15px;letter-spacing:0px;color:#f58634;max-width:60px;padding:4px}.divider-transparent{border-top-color:transparent!important}.scroll-to-top{position:fixed;bottom:15px;right:15px;opacity:0;transition:all .2s ease-in-out;border-radius:50%}.scroll-to-top .icon{font-size:24px!important}.show-scroll{opacity:1;transition:all .2s ease-in-out}.sticky-breadcrumbs{position:sticky;z-index:999;top:72px;width:100%}.sticky-banner{position:sticky;z-index:999}.sticky-navs{position:sticky!important;background:#fff;z-index:999;top:auto}.actbutton{border:1px solid rgba(0,0,0,.16);border-radius:4px;padding:0 15px;width:100%;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.actbutton .mat-icon{margin-right:6px}.disable-start-btn{cursor:not-allowed!important;pointer-events:none!important;opacity:.5!important}.certificate-loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#fff}.cb-plan-wrap{opacity:1;color:#1b4ca1;font-family:Lato-Regular;font-size:12px;font-weight:400;font-style:normal;letter-spacing:.25px;text-align:left;line-height:16px}.cb-plan-wrap .cb-danger{border-radius:2px;padding:4px 8px;border:1px solid #d13924;background-color:#d13924!important;color:#fff!important;opacity:1}.cb-plan-wrap .cb-success{padding:4px 8px;border-radius:2px;border:1px solid #1d8922;background-color:#1d8922!important;color:#fff!important;opacity:1}.cb-plan-wrap .cb-warning{padding:4px 8px;border-radius:2px;border:1px solid #ef951e;background-color:#ef951e!important;color:#fff!important;opacity:1}.bg-white{background-color:#fff}.provider-logo-div{border-radius:4px;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.provider-logo-div img{display:flex;border-radius:4px;width:40px;height:40px;padding:4px}ul{padding:0!important}.kpi-values{min-width:64px;padding:8px;text-align:center}.kpi-values img{height:24px;width:24px}.position-bottom{position:fixed;width:88%;bottom:0;z-index:99}.no-certificate-found{border:1px solid #ccc;border-color:#f3962f;background-color:#fceedb;border-radius:12px}.no-certificate-found{min-height:56px}.no-certificate-found ::ng-deep ws-widget-sliders-dynamic .banner-data{font-size:16px!important;font-family:lato,sans-serif!important}.truncate-5{-webkit-line-clamp:1;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;word-wrap:break-word}.ext-info-slider{padding:8px}#commentsDiv{margin:1rem auto;min-height:500px}.knowledge-level-container{margin-right:auto}.level-badge{display:inline-flex;height:24px;padding:2px 8px;align-items:center;gap:4px;flex-shrink:0;border-radius:12px;font-weight:600;font-size:12px;line-height:16px;white-space:nowrap}.level-badge.beginner{border:1px solid #49C951;background:linear-gradient(0deg,#49c95133 0% 100%),#fff;color:#2f8132;border-radius:16px}.level-badge.intermediate{border:1px solid #1B4CA1;background:linear-gradient(0deg,#1b4ca133 0% 100%),#fff;color:#1b4ca1;border-radius:16px}.level-badge.advanced{border:1px solid #FF8268;background:linear-gradient(0deg,#ff826833 0% 100%),#fff;color:#ff4b25;border-radius:16px}.level-badge svg{flex-shrink:0}::ng-deep .consent-dialog-panel .mat-dialog-container{overflow:hidden;padding:0;margin:0;border-radius:8px}::ng-deep .consent-dialog-panel .mat-dialog-content{padding:0;margin:0;max-height:none;overflow:hidden}\n"] }]
|
|
26463
26733
|
}], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: i5.CommonMethodsService }, { type: i1$2.TranslateService }, { type: i2$1.ConfigurationsService }, { type: i2$1.EventService }, { type: i2$1.MultilingualTranslationsService }, { type: i2$1.WidgetContentService }, { type: CertificateService }, { type: LoaderService }, { type: i5$4.MatDialog }, { type: i7.MatLegacySnackBar }, { type: NetCoreService }, { type: undefined, decorators: [{
|
|
26464
26734
|
type: Inject,
|
|
26465
26735
|
args: ['environment']
|
|
@@ -26658,8 +26928,9 @@ class AppTocLibModule {
|
|
|
26658
26928
|
ActionService,
|
|
26659
26929
|
MultilingualTranslationsService,
|
|
26660
26930
|
CommonMethodsService,
|
|
26661
|
-
|
|
26662
|
-
|
|
26931
|
+
UserProfileService,
|
|
26932
|
+
NPSGridService,
|
|
26933
|
+
OtpService,
|
|
26663
26934
|
ContentLanguageService,
|
|
26664
26935
|
TOCMultiLingualDialogModule,
|
|
26665
26936
|
DatePipe,
|
|
@@ -26879,8 +27150,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
26879
27150
|
ActionService,
|
|
26880
27151
|
MultilingualTranslationsService,
|
|
26881
27152
|
CommonMethodsService,
|
|
26882
|
-
|
|
26883
|
-
|
|
27153
|
+
UserProfileService,
|
|
27154
|
+
NPSGridService,
|
|
27155
|
+
OtpService,
|
|
26884
27156
|
ContentLanguageService,
|
|
26885
27157
|
TOCMultiLingualDialogModule,
|
|
26886
27158
|
DatePipe,
|
|
@@ -27189,5 +27461,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27189
27461
|
* Generated bundle index. Do not edit.
|
|
27190
27462
|
*/
|
|
27191
27463
|
|
|
27192
|
-
export { AccessControlService, ActionService, AppTocAboutComponent, AppTocAnalyticsTilesComponent, AppTocBannerComponent, AppTocBatchAssignmentsComponent, AppTocCiosHomeComponent, AppTocCiosResolverService, AppTocCiosUserEnrollResolverService, AppTocCohortsComponent, AppTocContentCardComponent, AppTocContentComponent, AppTocContentReadResolverService, AppTocDialogIntroVideoComponent, AppTocDiscussionComponent, AppTocExtPublicResolverService, AppTocHomeComponent, AppTocHomeV2Component, AppTocLibModule, AppTocOverviewComponent, AppTocResolverService, AppTocService, AppTocSessionCardComponent, AppTocSessionsComponent, AppTocSinglePageComponent, AppTocTeachersNotesComponent, AppTocV2Service, CardCompetencyComponent, CardCompetencyModule, CompletionSurveyFormComponent, ConfigResolverService, ContentTocComponent, ContentTocModule, CreateBatchDialogComponent, EnrollLanguageDialogueComponent, EnrollProfileFormComponent, EnrollQuestionnaireComponent, ErrorType, KarmaPointsComponent, KarmaPointsModule, KnowledgeArtifactDetailsComponent, LoadCheckService, MetaTag, NsAppToc, NsCohorts, NsDiscussionForum, ProfileResolverService, PublicSurveyFormComponent, ROOT_WIDGET_CONFIG, ResetRatingsService, RestrictedFeaturesResolverService, ReviewsContentComponent, ShareTocComponent, ShareTocModule, SurveyFormQuestionComponent, SurveyFormSectionComponent, TimerService, TitleTagService, TocKpiValuesComponent, TocKpiValuesModule, ViewerDataService, ViewerUtilService, WIDGET_REGISTERED_LIB_MODULES, WIDGET_REGISTRATION_TOC_LIB_CONFIG, WidgetContentService };
|
|
27464
|
+
export { AccessControlService, ActionService, AppTocAboutComponent, AppTocAnalyticsTilesComponent, AppTocBannerComponent, AppTocBatchAssignmentsComponent, AppTocCiosHomeComponent, AppTocCiosResolverService, AppTocCiosUserEnrollResolverService, AppTocCohortsComponent, AppTocContentCardComponent, AppTocContentComponent, AppTocContentReadResolverService, AppTocDialogIntroVideoComponent, AppTocDiscussionComponent, AppTocExtPublicResolverService, AppTocHomeComponent, AppTocHomeV2Component, AppTocLibModule, AppTocOverviewComponent, AppTocResolverService, AppTocService, AppTocSessionCardComponent, AppTocSessionsComponent, AppTocSinglePageComponent, AppTocTeachersNotesComponent, AppTocV2Service, CardCompetencyComponent, CardCompetencyModule, CompletionSurveyFormComponent, ConfigResolverService, ContentTocComponent, ContentTocModule, CreateBatchDialogComponent, EnrollLanguageDialogueComponent, EnrollProfileFormComponent, EnrollQuestionnaireComponent, ErrorType, KarmaPointsComponent, KarmaPointsModule, KnowledgeArtifactDetailsComponent, LoadCheckService, MetaTag, NsAppToc, NsCohorts, NsDiscussionForum, ProfileResolverService, PublicSurveyFormComponent, ROOT_WIDGET_CONFIG, ResetRatingsService, RestrictedFeaturesResolverService, ReviewsContentComponent, ShareTocComponent, ShareTocModule, SurveyFormQuestionComponent, SurveyFormSectionComponent, TimerService, TitleTagService, TocKpiValuesComponent, TocKpiValuesModule, UserProfileService, ViewerDataService, ViewerUtilService, WIDGET_REGISTERED_LIB_MODULES, WIDGET_REGISTRATION_TOC_LIB_CONFIG, WidgetContentService };
|
|
27193
27465
|
//# sourceMappingURL=sunbird-cb-toc.mjs.map
|