@rolatech/angular-course 17.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +7 -0
  2. package/esm2022/index.mjs +4 -0
  3. package/esm2022/lib/components/course-action/course-action.component.mjs +27 -0
  4. package/esm2022/lib/components/course-details/course-details.component.mjs +27 -0
  5. package/esm2022/lib/components/course-info/course-info.component.mjs +19 -0
  6. package/esm2022/lib/components/course-item/course-item.component.mjs +15 -0
  7. package/esm2022/lib/components/course-media/course-media.component.mjs +34 -0
  8. package/esm2022/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.mjs +20 -0
  9. package/esm2022/lib/components/course-pricing/course-pricing.component.mjs +14 -0
  10. package/esm2022/lib/components/course-schedule/course-schedule.component.mjs +22 -0
  11. package/esm2022/lib/components/course-sections/course-sections.component.mjs +30 -0
  12. package/esm2022/lib/interfaces/category.mjs +2 -0
  13. package/esm2022/lib/interfaces/course.mjs +146 -0
  14. package/esm2022/lib/interfaces/index.mjs +2 -0
  15. package/esm2022/lib/interfaces/media.mjs +2 -0
  16. package/esm2022/lib/pages/course/course-category/course-category.component.mjs +74 -0
  17. package/esm2022/lib/pages/course/course-detail/course-detail.component.mjs +157 -0
  18. package/esm2022/lib/pages/course/course-index/course-index.component.mjs +53 -0
  19. package/esm2022/lib/pages/course/course-layout/course-layout.component.mjs +49 -0
  20. package/esm2022/lib/pages/course/course-section-content/course-section-content.component.mjs +140 -0
  21. package/esm2022/lib/pages/course/course.routes.mjs +34 -0
  22. package/esm2022/lib/services/category.service.mjs +38 -0
  23. package/esm2022/lib/services/course-section.service.mjs +26 -0
  24. package/esm2022/lib/services/course.service.mjs +280 -0
  25. package/esm2022/lib/services/index.mjs +6 -0
  26. package/esm2022/provider.mjs +13 -0
  27. package/esm2022/rolatech-angular-course.mjs +5 -0
  28. package/fesm2022/rolatech-angular-course.mjs +1139 -0
  29. package/fesm2022/rolatech-angular-course.mjs.map +1 -0
  30. package/index.d.ts +3 -0
  31. package/lib/components/course-action/course-action.component.d.ts +14 -0
  32. package/lib/components/course-details/course-details.component.d.ts +20 -0
  33. package/lib/components/course-info/course-info.component.d.ts +9 -0
  34. package/lib/components/course-item/course-item.component.d.ts +8 -0
  35. package/lib/components/course-media/course-media.component.d.ts +12 -0
  36. package/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.d.ts +8 -0
  37. package/lib/components/course-pricing/course-pricing.component.d.ts +7 -0
  38. package/lib/components/course-schedule/course-schedule.component.d.ts +10 -0
  39. package/lib/components/course-sections/course-sections.component.d.ts +19 -0
  40. package/lib/interfaces/category.d.ts +16 -0
  41. package/lib/interfaces/course.d.ts +143 -0
  42. package/lib/interfaces/index.d.ts +3 -0
  43. package/lib/interfaces/media.d.ts +9 -0
  44. package/lib/pages/course/course-category/course-category.component.d.ts +21 -0
  45. package/lib/pages/course/course-detail/course-detail.component.d.ts +36 -0
  46. package/lib/pages/course/course-index/course-index.component.d.ts +18 -0
  47. package/lib/pages/course/course-layout/course-layout.component.d.ts +17 -0
  48. package/lib/pages/course/course-section-content/course-section-content.component.d.ts +40 -0
  49. package/lib/pages/course/course.routes.d.ts +2 -0
  50. package/lib/services/category.service.d.ts +12 -0
  51. package/lib/services/course-section.service.d.ts +10 -0
  52. package/lib/services/course.service.d.ts +65 -0
  53. package/lib/services/index.d.ts +5 -0
  54. package/package.json +31 -0
  55. package/provider.d.ts +2 -0
  56. package/themes/_default.scss +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-course.mjs","sources":["../../../../libs/angular-course/src/lib/interfaces/course.ts","../../../../libs/angular-course/src/lib/services/course.service.ts","../../../../libs/angular-course/src/lib/services/course-section.service.ts","../../../../libs/angular-course/src/lib/services/category.service.ts","../../../../libs/angular-course/src/lib/services/index.ts","../../../../libs/angular-course/src/provider.ts","../../../../libs/angular-course/src/lib/components/course-item/course-item.component.ts","../../../../libs/angular-course/src/lib/components/course-item/course-item.component.html","../../../../libs/angular-course/src/lib/pages/course/course-category/course-category.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-category/course-category.component.html","../../../../libs/angular-course/src/lib/components/course-action/course-action.component.ts","../../../../libs/angular-course/src/lib/components/course-action/course-action.component.html","../../../../libs/angular-course/src/lib/components/course-details/course-details.component.ts","../../../../libs/angular-course/src/lib/components/course-details/course-details.component.html","../../../../libs/angular-course/src/lib/components/course-info/course-info.component.ts","../../../../libs/angular-course/src/lib/components/course-info/course-info.component.html","../../../../libs/angular-course/src/lib/components/course-media/course-media.component.ts","../../../../libs/angular-course/src/lib/components/course-media/course-media.component.html","../../../../libs/angular-course/src/lib/components/course-pricing/course-pricing.component.ts","../../../../libs/angular-course/src/lib/components/course-pricing/course-pricing.component.html","../../../../libs/angular-course/src/lib/components/course-schedule/course-schedule.component.ts","../../../../libs/angular-course/src/lib/components/course-schedule/course-schedule.component.html","../../../../libs/angular-course/src/lib/components/course-sections/course-sections.component.ts","../../../../libs/angular-course/src/lib/components/course-sections/course-sections.component.html","../../../../libs/angular-course/src/lib/pages/course/course-detail/course-detail.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-detail/course-detail.component.html","../../../../libs/angular-course/src/lib/pages/course/course-index/course-index.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-index/course-index.component.html","../../../../libs/angular-course/src/lib/pages/course/course-layout/course-layout.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-layout/course-layout.component.html","../../../../libs/angular-course/src/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.ts","../../../../libs/angular-course/src/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.html","../../../../libs/angular-course/src/lib/pages/course/course-section-content/course-section-content.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-section-content/course-section-content.component.html","../../../../libs/angular-course/src/lib/pages/course/course.routes.ts","../../../../libs/angular-course/src/rolatech-angular-course.ts"],"sourcesContent":["import { CourseCategory } from './category';\nimport { Media } from './media';\n\nexport interface Course {\n id: string;\n name: string;\n description: string;\n categories?: CourseCategory[];\n createdAt: string;\n updatedAt: string;\n status: CourseStatus | string;\n media: Media[];\n type: CourseType;\n instructorId: string;\n classroom: CourseClassroom;\n details: CourseDetail[];\n pricing: CoursePricing[];\n schedule: CourseSchedule[];\n}\nexport interface CoursePricing {\n id: string;\n min: number;\n max: number;\n total: number;\n}\nexport interface CourseSchedule {\n id: string;\n title: string;\n content: string;\n startDate: string;\n startTime: string;\n startAt: string;\n endDate: string;\n endTime: string;\n endAt: string;\n}\nexport interface CourseClassroom {\n id: string;\n name: string;\n contact: string;\n phone: string;\n province: string;\n city: string;\n county: string;\n town: string;\n address: string;\n detail: string;\n latitude: string;\n longitude: string;\n media: Media[];\n isUploading?: boolean;\n room?: string;\n}\nexport enum CourseStatus {\n ACTIVE = <any>'已发布',\n ACCEPTED = <any>'已通过',\n AWAITING = <any>'审核中',\n PENDING = <any>'审核中',\n STARTED = <any>'已开始',\n ENDED = <any>'已完成',\n DELETED = <any>'已删除',\n DRAFT = <any>'草稿',\n}\nexport enum CourseRequestStatus {\n AWAITING = '审核中',\n ACTIVE = '已通过',\n REJECTED = '已拒绝',\n}\nexport interface CourseReviewRecord {\n content: string;\n status: CourseReviewStatus;\n course: Course;\n createdAt: string;\n updatedAt: string;\n}\nexport enum CourseReviewStatus {\n ACCEPTED = '已通过',\n REJECTED = '未通过',\n}\nexport interface CourseDetail {\n id: string;\n title: string;\n description: string;\n content: string;\n media: Media[];\n isUploading?: boolean;\n}\nexport interface CourseSection {\n id?: string;\n title: string;\n description: string;\n lectures: CourseSectionLecture[];\n}\nexport interface CourseSectionLecture {\n id?: string;\n title: string;\n description: string;\n type: CourseSectionLectureContentType | string;\n item: CourseSectionLectureVideo;\n isUploading?: boolean;\n progress?: number | 0;\n}\nexport interface CourseSectionLectureItem {\n id: string;\n}\nexport enum CourseSectionLectureContentType {\n VIDEO = <any>'视频',\n ARTICLE = <any>'文章',\n}\nexport interface CourseSectionLectureVideo {\n id?: string;\n url: string;\n thumbnail: string;\n duration: number;\n isUploading?: boolean;\n progress: number | 0;\n canBePreviewed: boolean;\n}\nexport interface CourseSectionLectureVideoMetadata {\n duration: string;\n}\n\nexport interface Schedule {\n id?: string;\n title: string;\n content: string;\n startDate?: string;\n startTime?: string;\n startAt: string;\n endDate?: string;\n endTime?: string;\n endAt: string;\n}\nexport interface Pricing {\n id?: string;\n min: number;\n max: number;\n total: number;\n}\n// export const CourseType = [\n// {\n// key: 'ONLINE',\n// value: '线上',\n// },\n// {\n// key: 'OFFLINE',\n// value: '线下',\n// },\n// {\n// key: 'MIXED',\n// value: '混合',\n// },\n// ];\nexport enum CourseType {\n ONLINE = <any>'线上',\n OFFLINE = <any>'线下',\n MIXED = <any>'混合',\n}\nexport const ScheduleDate = [\n '00:00',\n '00:15',\n '00:30',\n '00:45',\n\n '01:00',\n '01:15',\n '01:30',\n '01:45',\n\n '02:00',\n '02:15',\n '02:30',\n '02:45',\n '03:00',\n '03:15',\n '03:30',\n '03:45',\n\n '04:00',\n '04:15',\n '04:30',\n '04:45',\n '05:00',\n '05:15',\n '05:30',\n '05:45',\n\n '06:00',\n '06:15',\n '06:30',\n '06:45',\n '07:00',\n '07:15',\n '07:30',\n '07:45',\n\n '08:00',\n '08:15',\n '08:30',\n '08:45',\n '09:00',\n '09:15',\n '09:30',\n '09:45',\n\n '10:00',\n '10:15',\n '10:30',\n '10:45',\n '11:00',\n '11:15',\n '11:30',\n '11:45',\n\n '12:00',\n '12:15',\n '12:30',\n '12:45',\n '13:00',\n '13:15',\n '13:30',\n '13:45',\n\n '14:00',\n '14:15',\n '14:30',\n '14:45',\n '15:00',\n '15:15',\n '15:30',\n '15:45',\n\n '16:00',\n '16:15',\n '16:30',\n '16:45',\n '17:00',\n '17:15',\n '17:30',\n '17:45',\n\n '18:00',\n '18:15',\n '18:30',\n '18:45',\n '19:00',\n '19:15',\n '19:30',\n '19:45',\n\n '20:00',\n '20:15',\n '20:30',\n '20:45',\n '21:00',\n '21:15',\n '21:30',\n '21:45',\n\n '22:00',\n '22:15',\n '22:30',\n '22:45',\n '23:00',\n '23:15',\n '23:30',\n '23:45',\n];\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BaseService } from '@rolatech/angular-services';\nimport { Observable, of } from 'rxjs';\n@Injectable({\n providedIn: 'root',\n})\nexport class CourseService extends BaseService {\n override init() {\n this.endpoint = 'courses';\n super.init();\n }\n me(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/me`, {\n params: options,\n withCredentials: true,\n });\n }\n\n findSchedule(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/${id}/schedule`, {\n withCredentials: true,\n });\n }\n findPricing(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/${id}/pricing`, {\n withCredentials: true,\n });\n }\n addDetail(id: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/details`, data, {\n withCredentials: true,\n });\n }\n addBatchDetails(id: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/details/batch`, data, {\n withCredentials: true,\n });\n }\n findDetails(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/${id}/details`, {\n withCredentials: true,\n });\n }\n updateDetail(id: string, detailId: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.actionUrl}/${id}/details/${detailId}`, data, {\n withCredentials: true,\n });\n }\n deleteDetail(id: string, detailId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/details/${detailId}`, {\n withCredentials: true,\n });\n }\n uploadDetailMedia(id: string, detailId: string, data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/details/${detailId}/media`, data, {\n withCredentials: true,\n });\n }\n deleteDetailMedia(id: string, detailId: string, mediaId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/details/${detailId}/media/${mediaId}`, {\n withCredentials: true,\n });\n }\n review(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/review`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n start(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/start`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n finish(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/finish`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n publish(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/publish`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n\n upload(data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/upload`, data, {\n withCredentials: true,\n });\n }\n uploadMedia(id: string, data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/media`, data, {\n withCredentials: true,\n });\n }\n deleteMedia(id: string, mediaId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/media/${mediaId}`, {\n withCredentials: true,\n });\n }\n importFromExcel(data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/excel`, data, {\n withCredentials: true,\n });\n }\n createFromExcel(data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/list`, data, {\n withCredentials: true,\n });\n }\n findAllRequests(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/requests`, {\n params: options,\n withCredentials: true,\n });\n }\n findRequestDetail(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/requests/${id}`, {\n withCredentials: true,\n });\n }\n accept(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/${id}/reviews/accept`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n reject(id: string, body: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/reviews/reject`, body, {\n withCredentials: true,\n });\n }\n acceptRequest(id: string): Observable<any> {\n return this.http.post<any>(\n `${this.actionUrl}/requests/${id}/reviews/accept`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n rejectRequest(id: string, body: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/requests/${id}/reviews/reject`, body, {\n withCredentials: true,\n });\n }\n addPricing(id: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/pricing`, data, {\n withCredentials: true,\n });\n }\n updatePricing(id: string, pricingId: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.actionUrl}/${id}/pricing/${pricingId}`, data, {\n withCredentials: true,\n });\n }\n deletePricing(id: string, pricingId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/pricing/${pricingId}`, {\n withCredentials: true,\n });\n }\n addSchedule(id: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/schedule`, data, {\n withCredentials: true,\n });\n }\n updateSchedule(id: string, scheduleId: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.actionUrl}/${id}/schedule/${scheduleId}`, data, {\n withCredentials: true,\n });\n }\n deleteSchedule(id: string, scheduleId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/schedule/${scheduleId}`, {\n withCredentials: true,\n });\n }\n findAllReviews(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/reviews`, {\n params: options,\n withCredentials: true,\n });\n }\n getReview(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/reviews/${id}`, {\n withCredentials: true,\n });\n }\n findReviews(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/reviews/me`, {\n params: options,\n withCredentials: true,\n });\n }\n countUsers(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/users/count/by`, {\n params: options,\n withCredentials: true,\n });\n }\n findByIds(ids: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/by`, {\n params: { ids },\n withCredentials: true,\n });\n }\n findWishlist(options: any) {\n return this.http.get(`${this.actionUrl}/wishlist`, { params: options, withCredentials: true });\n }\n addToWishlist(courseId: string) {\n return this.http.post(`${this.actionUrl}/${courseId}/wishlist`, {}, { withCredentials: true });\n }\n removeFromWishlist(courseId: string) {\n return this.http.delete(`${this.actionUrl}/${courseId}/wishlist`, { withCredentials: true });\n }\n findWishlistBy(courseId: string) {\n return this.http.get(`${this.actionUrl}/${courseId}/wishlist/by`, { withCredentials: true });\n }\n findMyCourses(options: any) {\n return this.http.get(`${this.actionUrl}/users`, { params: options, withCredentials: true });\n }\n findPurchasedByCourseId(courseId: string) {\n return this.http.get(`${this.actionUrl}/users/me/by?courseId=${courseId}`, {\n withCredentials: true,\n });\n }\n deleteFromWishlist(sectionId: string) {\n return this.http.delete(`${this.actionUrl}/sections/${sectionId}`, { withCredentials: true });\n }\n\n // Course sections\n findCourseSections(options: any) {\n return this.http.get(`${this.actionUrl}/sections`, { params: options, withCredentials: false });\n }\n addCourseSection(courseId: any, data: any): Observable<any> {\n return this.http.post(`${this.actionUrl}/${courseId}/sections`, data, { withCredentials: true });\n }\n updateCourseSection(sectionId: any, data: any): Observable<any> {\n return this.http.put(`${this.actionUrl}/sections/${sectionId}`, data, { withCredentials: true });\n }\n deleteCourseSection(sectionId: any): Observable<any> {\n return this.http.delete(`${this.actionUrl}/sections/${sectionId}`, { withCredentials: true });\n }\n getCourseSection(courseId: any): Observable<any> {\n return this.http.get(`${this.actionUrl}/${courseId}/sections`, { withCredentials: false });\n }\n addLecture(sectionId: string, data: any): Observable<any> {\n return this.http.post(`${this.actionUrl}/sections/${sectionId}/lectures`, data, { withCredentials: true });\n }\n updateLecture(lectureId: string, data: any): Observable<any> {\n return this.http.put(`${this.actionUrl}/sections/lectures/${lectureId}`, data, { withCredentials: true });\n }\n deleteLecture(lectureId: any): Observable<any> {\n return this.http.delete(`${this.actionUrl}/sections/lectures/${lectureId}`, { withCredentials: true });\n }\n uploadVideoInit(lectureId: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/sections/lectures/${lectureId}/videos/init`, data, {\n withCredentials: true,\n });\n }\n uploadVideoPartsToLecture(lectureId: string, data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/sections/lectures/${lectureId}/videos/parts`, data, {\n withCredentials: true,\n });\n }\n completePartUpload(lectureId: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.actionUrl}/sections/lectures/${lectureId}/videos/parts`, data, {\n withCredentials: true,\n });\n }\n uploadVideoToLecture(lectureId: string, data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/sections/lectures/${lectureId}/videos`, data, {\n withCredentials: true,\n });\n }\n deleteLectureVideo(videoId: any): Observable<any> {\n return this.http.delete(`${this.actionUrl}/sections/lectures/videos/${videoId}`, { withCredentials: true });\n }\n uploadLectureVideoThumbnail(videoId: any, data: FormData): Observable<any> {\n return this.http.post(`${this.actionUrl}/sections/lectures/videos/${videoId}/thumbnail`, data, {\n withCredentials: true,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseService } from '@rolatech/angular-services';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CourseSectionService extends BaseService {\n override init() {\n this.endpoint = 'courses';\n super.init();\n }\n findSections(id: string): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/${id}/sections`);\n }\n canBePreviewed(videoId: any, data: any): Observable<any> {\n return this.http.post(`${this.actionUrl}/sections/lectures/videos/${videoId}/preview`, data, {\n withCredentials: true,\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from '@rolatech/angular-services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CategoryService extends BaseService {\n override init() {\n this.endpoint = 'categories';\n super.init();\n }\n uploadMedia(id: string, data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/${id}/media`, data, {\n withCredentials: true,\n });\n }\n deleteMedia(id: string, mediaId: string): Observable<any> {\n return this.http.delete<any>(`${this.actionUrl}/${id}/media/${mediaId}`, {\n withCredentials: true,\n });\n }\n importFromExcel(data: FormData): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/excel`, data, {\n withCredentials: true,\n });\n }\n createFromExcel(data: any): Observable<any> {\n return this.http.post<any>(`${this.actionUrl}/list`, data, {\n withCredentials: true,\n });\n }\n}\n","import { CourseService } from './course.service';\nimport { CourseSectionService } from './course-section.service';\nimport { CategoryService } from './category.service';\nexport { CourseService, CourseSectionService, CategoryService };\nexport const services: any[] = [CourseService, CourseSectionService, CategoryService];\n","import { EnvironmentProviders, Provider, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport * as fromServices from './lib/services';\n\nexport function provideAngulaCourse(): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n ...fromServices.services,\n importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { Component, input } from '@angular/core';\nimport { Course } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-item',\n templateUrl: './course-item.component.html',\n styleUrls: ['./course-item.component.scss'],\n standalone: true,\n imports: [],\n})\nexport class CourseItemComponent {\n course = input.required<Course>();\n row = input<boolean>(true);\n}\n","@if (row()) {\n <div class=\"flex w-full flex-row\">\n <div class=\"h-fit w-2/5 sm:w-1/4 aspect-video bg-gray-200 rounded-lg\">\n @if (course().media) {\n <img class=\"w-full object-cover aspect-video rounded-lg\" [src]=\"course().media[0].url\" />\n }\n </div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div>\n <div class=\"sm:text-xl font-medium break-words line-clamp-2 whitespace-normal\">{{ course().name }}</div>\n <div class=\"invisible h-0 sm:h-auto sm:visible break-words line-clamp-1 whitespace-normal\">\n {{ course().description }}\n </div>\n </div>\n @if (course().pricing) {\n <div class=\"sm:text-lg font-medium py-1\">¥{{ course().pricing[0].total / 100 }}</div>\n }\n </div>\n </div>\n} @else {\n <div>\n <div class=\"bg-gray-200 rounded-lg h-fit\">\n @if (course().media) {\n <img class=\"w-full object-cover aspect-video rounded-lg\" [src]=\"course().media[0].url\" />\n }\n </div>\n <div class=\"mt-2\">\n <div class=\"text-md sm:text-xl font-medium break-words line-clamp-2\">{{ course().name }}</div>\n @if (course().pricing) {\n <div class=\"text-md sm:text-lg font-medium py-1\">¥{{ course().pricing[0].total / 100 }}</div>\n }\n </div>\n </div>\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { ParamMap } from '@angular/router';\nimport { CourseCategory, Course } from '../../../interfaces';\nimport { CategoryService, CourseService } from '../../../services';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { CourseItemComponent } from '../../../components/course-item/course-item.component';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, CourseItemComponent],\n selector: 'rolatech-course-category',\n templateUrl: './course-category.component.html',\n styleUrls: ['./course-category.component.scss'],\n})\nexport class CourseCategoryComponent extends BaseComponent implements OnInit {\n categoryService = inject(CategoryService);\n courseService = inject(CourseService);\n category!: CourseCategory;\n courses: Course[] = [];\n categories: CourseCategory[] = [];\n loading = false;\n\n ngOnInit(): void {\n this.findAllCategories();\n this.route.paramMap.subscribe((params: ParamMap) => {\n const id = params.get('id') as string;\n this.findCategoryById(id);\n this.findCoursesByCategoryId(id);\n });\n }\n findAllCategories() {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n findCategoryById(id: string) {\n this.categoryService.get(id).subscribe({\n next: (res: any) => {\n this.category = res.data;\n },\n });\n }\n findAllCourses() {\n this.courseService.find({}).subscribe({\n next: (res: any) => {\n this.courses = res.data;\n },\n });\n }\n findCoursesByCategoryId(id: string) {\n this.loading = true;\n const options = {\n filter: `categories:${id},published:true`,\n };\n this.courseService.find(options).subscribe({\n next: (res: any) => {\n this.courses = res.data;\n this.loading = false;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n\n loadCoursesByCategory(item: any) {\n // [routerLink] = \"['../../', item.id]\";\n this.router.navigate([`../../${item.id}`], {\n relativeTo: this.route,\n });\n }\n}\n","<div>\n @if (category) {\n <div class=\"p-3 hidden sm:block text-2xl font-medium\">{{ category.name }}</div>\n } @else {\n <div class=\"flex flex-row animate-pulse w-full\">\n <div class=\"h-4 bg-slate-200 rounded col-span-2\"></div>\n </div>\n }\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 sm:w-1/4 aspect-video bg-gray-200 rounded-lg\"></div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-slate-200 rounded col-span-2\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-slate-200 rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n @for (item of courses; track item) {\n <div\n class=\"py-2 cursor-pointer min-w-[80%] md:min-w-[25%] sm:min-w-[33%] hover:bg-gray-100\"\n [routerLink]=\"['../../', item.id]\"\n >\n <rolatech-course-item [course]=\"item\"></rolatech-course-item>\n </div>\n }\n }\n</div>\n","import { Component, input, output } from '@angular/core';\nimport { Course } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-action',\n templateUrl: './course-action.component.html',\n styleUrls: ['./course-action.component.scss'],\n standalone: true,\n})\nexport class CourseActionComponent {\n course = input.required<Course>();\n inWishList = input<boolean>(false);\n\n cart = output<Course>();\n wish = output<Course>();\n checkout = output<Course>();\n\n onCart(course: Course) {\n this.cart.emit(course);\n }\n onWish(course: Course) {\n this.wish.emit(course);\n }\n onCheckout(course: Course) {\n this.checkout.emit(course);\n }\n}\n","<div class=\"flex flex-col\">\n <!-- <a class=\"p-3 bg-orange-600 text-white text-center mt-3\" target=\"_blank\" (click)=\"onCart(course)\">加入购物车</a> -->\n <a\n class=\"p-3 bg-orange-600 text-white text-center mt-3 cursor-pointer rounded-md hover:bg-orange-700\"\n target=\"_blank\"\n (click)=\"onCheckout(course())\"\n >立即购买</a\n >\n <a\n class=\"p-3 border border-black text-center mt-3 cursor-pointer rounded-md hover:bg-gray-100\"\n target=\"_blank\"\n (click)=\"onWish(course())\"\n >{{ inWishList() ? '移除收藏' : '加入收藏' }}</a\n >\n</div>\n","import { ViewportScroller } from '@angular/common';\nimport { Component, ElementRef, inject, input, OnInit, PLATFORM_ID } from '@angular/core';\nimport { CourseDetail } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-details',\n templateUrl: './course-details.component.html',\n styleUrls: ['./course-details.component.scss'],\n standalone: true,\n imports: [],\n})\nexport class CourseDetailsComponent implements OnInit {\n details = input.required<CourseDetail[]>();\n instructor = input<string>();\n username = input<string>();\n el = inject(ElementRef);\n\n viewportScroller = inject(ViewportScroller);\n platformId = inject(PLATFORM_ID);\n\n player: any;\n\n show = false;\n mediaIndex = 0;\n finalSchedule = [];\n ngOnInit(): void {}\n\n onClickScroller(id: string) {\n this.viewportScroller.scrollToAnchor(id);\n }\n}\n","<div class=\"py-3\" id=\"details\">\n <div class=\"text-xl font-medium py-2\">详情</div>\n @if (details()) {\n @for (detail of details(); track $index) {\n <div>\n @if (detail.title) {\n <div class=\"py-3 flex items-center gap-3\">\n <span class=\"h-4 w-1 bg-orange-500 inline-block\"></span>\n <span class=\"text-lg font-medium py-1\"> {{ detail.title }}</span>\n </div>\n }\n @if (detail.content) {\n <div>\n {{ detail.content }}\n </div>\n }\n @if (detail.media) {\n <div class=\"w-80%\">\n @for (item of detail.media; track item) {\n <div class=\"py-3\">\n <img class=\"object-cover\" [src]=\"item.url + '?imageMogr2/format/avif'\" />\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\n","import { Component, input } from '@angular/core';\nimport { Course } from '../../interfaces';\nimport { RouterLink } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-course-info',\n templateUrl: './course-info.component.html',\n styleUrls: ['./course-info.component.scss'],\n standalone: true,\n imports: [MatIconModule, RouterLink],\n})\nexport class CourseInfoComponent {\n course = input.required<Course>();\n instructor = input<string>();\n username = input<string>();\n}\n","<div>\n <div>\n <div class=\"text-2xl font-medium\">{{ course().name }}</div>\n @if (course().type && course().type.toString() !== 'ONLINE') {\n <div class=\"flex items-center pt-2\">\n <mat-icon>place</mat-icon>\n <span class=\"text-sm opacity-75\">{{ course().classroom.address }}</span>\n </div>\n }\n <div class=\"py-3 text-black-light flex justify-between\">\n <div>\n <div class=\"mb-1 flex items-center\">\n <span class=\"font-medium\">主讲教师: </span>\n <a class=\"ml-2 underline text-orange-600 text-[0.9rem]\" [routerLink]=\"['../../instructors/', '@' + username()]\">{{\n instructor()\n }}</a>\n </div>\n <span class=\"text-sm opacity-75\">最后编辑: {{ course().updatedAt }} </span>\n </div>\n </div>\n </div>\n <!-- 描述 -->\n <div class=\"mb-3\">\n {{ course().description }}\n </div>\n</div>\n","import { Component, inject, input } from '@angular/core';\nimport { Media } from '../../interfaces';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NgClass } from '@angular/common';\nimport { MediaPreviewDialogComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-course-media',\n templateUrl: './course-media.component.html',\n styleUrls: ['./course-media.component.scss'],\n standalone: true,\n imports: [NgClass],\n})\nexport class CourseMediaComponent {\n dialog = inject(MatDialog);\n media = input<Media[]>([]);\n min = input<boolean>(false);\n mediaIndex = 0;\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(MediaPreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.media,\n selected: i,\n },\n });\n dialogRef.afterClosed().subscribe((result) => {});\n }\n}\n","@if (media()) {\n @if (min()) {\n <div class=\"sm:w-80 object-cover aspect-video bg-gray-200 rounded-lg\">\n @if (media()) {\n <img class=\"aspect-video object-cover w-full rounded-lg\" [src]=\"media()[0].url\" />\n }\n </div>\n } @else {\n <div>\n <div class=\"object-cover aspect-video bg-gray-200\">\n <img class=\"aspect-video object-cover w-full rounded-md\" [src]=\"media()[mediaIndex].url\" />\n </div>\n @for (item of media(); track $index) {\n <div\n class=\"inline-flex flex-row mt-3 mr-3 cursor-pointer rounded-md\"\n (click)=\"mediaIndex = $index\"\n [ngClass]=\"mediaIndex === $index ? '' : 'opacity-30'\"\n >\n <img class=\"rounded-md aspect-video object-cover w-32\" [src]=\"item.url\" />\n </div>\n }\n </div>\n }\n}\n","import { Component, input } from '@angular/core';\nimport { CoursePricing } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-pricing',\n templateUrl: './course-pricing.component.html',\n styleUrls: ['./course-pricing.component.scss'],\n standalone: true,\n})\nexport class CoursePricingComponent {\n pricing = input<CoursePricing[]>([]);\n}\n","@if (pricing()) {\n <div class=\"py-3\">\n <div class=\"text-lg font-medium py-2\">价格</div>\n @for (item of pricing(); track $index) {\n <div>\n <span>{{ item.min }} 至 {{ item.max }}人</span>\n <span class=\"ml-3\">{{ item.total / 100 }}元</span>\n </div>\n }\n </div>\n}\n","import { Component, OnInit, input } from '@angular/core';\nimport { CourseSchedule } from '../../interfaces';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-course-schedule',\n templateUrl: './course-schedule.component.html',\n styleUrls: ['./course-schedule.component.scss'],\n standalone: true,\n imports: [MatExpansionModule, MatIconModule],\n})\nexport class CourseScheduleComponent implements OnInit {\n schedule = input<CourseSchedule[]>([]);\n\n ngOnInit(): void {\n // this.formatSchedule();\n }\n formatSchedule() {}\n}\n","<!-- 课表 -->\n@if (schedule()) {\n <div class=\"py-3\" id=\"schedule\">\n <div class=\"text-xl font-medium py-2\">课表</div>\n @for (item of schedule(); track $index) {\n <mat-expansion-panel #panel [class.mat-elevation-z0]=\"true\" hideToggle [expanded]=\"$index === 0\">\n <mat-expansion-panel-header class=\"bg-red\">\n <mat-panel-title>\n <span class=\"text-[1rem]\">{{ item.title }}</span>\n </mat-panel-title>\n <mat-icon\n class=\"toggle-icon\"\n style=\"transition-duration:.5s;transform: {{ panel.expanded ? 'rotate(180deg)' : 'rotate(0deg)' }};\"\n >expand_more</mat-icon\n >\n </mat-expansion-panel-header>\n <div class=\"bg-white\">\n <div class=\"text-gray-600 font-thin pt-2\">\n <span>{{ item.startAt }} - {{ item.endAt }}</span>\n </div>\n <div class=\"py-3\">\n <div>{{ item.content }}</div>\n </div>\n </div>\n </mat-expansion-panel>\n }\n </div>\n}\n","import { Component, ViewEncapsulation, inject, input, output } from '@angular/core';\nimport { CourseSection, CourseSectionLecture } from '../../interfaces';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DurationPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-course-sections',\n templateUrl: './course-sections.component.html',\n styleUrls: ['./course-sections.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [MatExpansionModule, MatIconModule, DurationPipe, MatCheckboxModule],\n})\nexport class CourseSectionsComponent {\n purchased = input<boolean>(false);\n sections = input<CourseSection[]>([]);\n section = output<{ section: CourseSection; lecture: CourseSectionLecture }>();\n checkout = output<{ section: CourseSection; lecture: CourseSectionLecture }>();\n\n panelOpenState = false;\n onSection(section: CourseSection, lecture: CourseSectionLecture) {\n this.section.emit({ section, lecture });\n }\n onCheckout(section: CourseSection, lecture: CourseSectionLecture) {\n this.checkout.emit({ section, lecture });\n }\n}\n","@if (sections()) {\n <div id=\"sections()\">\n <div class=\"text-xl font-medium py-2\">课程内容</div>\n <mat-accordion multi>\n @for (item of sections(); track $index) {\n <mat-expansion-panel #panel [class.mat-elevation-z0]=\"true\" hideToggle [expanded]=\"$index === 0\">\n <mat-expansion-panel-header class=\"bg-red\">\n <mat-panel-title>\n <span class=\"text-[1rem]\">{{ item.title }}</span>\n </mat-panel-title>\n <mat-icon\n class=\"toggle-icon\"\n style=\"transition-duration:.5s;transform: {{ panel.expanded ? 'rotate(180deg)' : 'rotate(0deg)' }};\"\n >expand_more</mat-icon\n >\n </mat-expansion-panel-header>\n <div class=\"bg-white\">\n @for (lecture of item.lectures; track $index) {\n <div class=\"flex items-center justify-between py-1\">\n @if (lecture.item && lecture.type === 'VIDEO') {\n <div class=\"flex items-center gap-3\">\n <mat-icon>live_tv</mat-icon>\n <span class=\"text-md\"> {{ lecture.title }}</span>\n </div>\n <div>\n @if (purchased()) {\n <a\n class=\"text-sm mr-1 underline underline-offset-2 cursor-pointer text-orange-600\"\n (click)=\"onSection(item, lecture)\"\n >播放</a\n >\n } @else {\n @if (lecture.item.canBePreviewed) {\n <a\n class=\"text-sm mr-1 underline underline-offset-2 cursor-pointer text-orange-600\"\n (click)=\"onSection(item, lecture)\"\n >试看</a\n >\n } @else {\n <a\n class=\"text-sm mr-1 underline underline-offset-2 cursor-pointer text-orange-600\"\n (click)=\"onCheckout(item, lecture)\"\n >购买</a\n >\n }\n }\n\n <a class=\"text-gray-500 inline-block w-[60px] text-right\">{{ lecture.item.duration | duration }}</a>\n </div>\n }\n </div>\n }\n </div>\n </mat-expansion-panel>\n }\n </mat-accordion>\n </div>\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CourseSection, CourseSectionLectureContentType, CourseStatus } from '../../../interfaces';\nimport { CourseSectionService, CourseService } from '../../../services';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { AngularComponentsModule, AppContainerComponent, BaseComponent } from '@rolatech/angular-components';\nimport { ViewportScroller } from '@angular/common';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { CommentsComponent } from '@rolatech/angular-comment';\nimport { CourseActionComponent } from '../../../components/course-action/course-action.component';\nimport { CourseDetailsComponent } from '../../../components/course-details/course-details.component';\nimport { CourseInfoComponent } from '../../../components/course-info/course-info.component';\nimport { CourseMediaComponent } from '../../../components/course-media/course-media.component';\nimport { CoursePricingComponent } from '../../../components/course-pricing/course-pricing.component';\nimport { CourseScheduleComponent } from '../../../components/course-schedule/course-schedule.component';\nimport { CourseSectionsComponent } from '../../../components/course-sections/course-sections.component';\n@Component({\n standalone: true,\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n CourseInfoComponent,\n CourseSectionsComponent,\n CourseScheduleComponent,\n CourseDetailsComponent,\n CourseMediaComponent,\n CoursePricingComponent,\n CourseActionComponent,\n CommentsComponent,\n AppContainerComponent,\n ],\n selector: 'rolatech-course-detail',\n templateUrl: './course-detail.component.html',\n styleUrls: ['./course-detail.component.scss'],\n})\nexport class CourseDetailComponent extends BaseComponent implements OnInit {\n course: any;\n status: any = CourseStatus;\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n courseService = inject(CourseService);\n viewportScroller = inject(ViewportScroller);\n courseSectionService = inject(CourseSectionService);\n instructorName = '';\n username = '';\n inWishList = false;\n purchased = false;\n sections: CourseSection[] = [];\n type = CourseSectionLectureContentType;\n ngOnInit(): void {\n this.findOne();\n this.findSections();\n this.authService.introspect().subscribe({\n next: (res) => {\n if (res.authenticated) {\n this.findPurchasedByCourseId();\n this.findWishlistBy();\n }\n },\n });\n }\n scrollToAnchor(anchorId: string): void {\n // this.viewportScroller.setOffset([100, 100]);\n document.getElementById(anchorId)?.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n });\n }\n findOne() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.course = res.data;\n this.findUserBaseInfo(this.course.instructorId);\n this.titleService.setTitle(`${this.course.name} - 拼小课`);\n },\n });\n }\n findSections() {\n this.courseSectionService.findSections(this.id).subscribe({\n next: (res) => {\n this.sections = res.data;\n },\n });\n }\n findUserBaseInfo(userId: string) {\n this.authUserService.getPublicUserInfo(userId).subscribe({\n next: (res) => {\n this.instructorName = res.name;\n this.username = res.username;\n },\n });\n }\n onWish(e: any) {\n this.authService.introspect().subscribe({\n next: (res) => {\n if (res.authenticated) {\n if (this.inWishList) {\n this.removeFromWishlist();\n } else {\n this.addToWishlist();\n }\n } else {\n this.snackBarService.open('请先登录');\n }\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n checkout(e: any) {\n this.router.navigateByUrl(`/carts/checkout/express/courses/${this.id}`);\n }\n private removeFromWishlist() {\n this.courseService.removeFromWishlist(this.id).subscribe({\n next: (res) => {\n this.inWishList = false;\n },\n });\n }\n private addToWishlist() {\n this.courseService.addToWishlist(this.id).subscribe({\n next: (res) => {\n this.inWishList = true;\n },\n });\n }\n onSection(event: any) {\n const { section, lecture } = event;\n this.router.navigate(['/courses', this.course.id, 'sections', section.id, 'lectures', lecture.id]);\n }\n\n private findWishlistBy() {\n this.authService.introspect().subscribe({\n next: (res) => {\n if (res.authenticated) {\n this.courseService.findWishlistBy(this.id).subscribe({\n next: (res: any) => {\n this.inWishList = res.data;\n },\n });\n }\n },\n });\n }\n findPurchasedByCourseId() {\n this.courseService.findPurchasedByCourseId(this.id).subscribe({\n next: (res: any) => {\n this.purchased = res.data ? true : false;\n },\n });\n }\n}\n","@if (course) {\n <rolatech-app-container>\n <div class=\"flex flex-col-reverse gap-2 sm:flex-row md:flex-row w-full justify-between\">\n <div class=\"sm:w-3/4\">\n <rolatech-course-info [course]=\"course\" [instructor]=\"instructorName\" [username]=\"username\"> </rolatech-course-info>\n <rolatech-course-sections\n [sections]=\"sections\"\n (section)=\"onSection($event)\"\n (checkout)=\"checkout($event)\"\n [purchased]=\"purchased\"\n ></rolatech-course-sections>\n <rolatech-course-schedule [schedule]=\"course.schedule\"></rolatech-course-schedule>\n <rolatech-course-details [details]=\"course.details\"></rolatech-course-details>\n <rolatech-comments [itemId]=\"course.id\"></rolatech-comments>\n </div>\n <div>\n <!-- <rolatech-course-media [min]=\"!purchased\" [media]=\"course.media\" [min]=\"true\"></rolatech-course-media> -->\n <rolatech-course-media [media]=\"course.media\" [min]=\"true\"></rolatech-course-media>\n @if (!purchased) {\n <rolatech-course-pricing [pricing]=\"course.pricing\"></rolatech-course-pricing>\n <rolatech-course-action\n [course]=\"course\"\n (checkout)=\"checkout($event)\"\n (wish)=\"onWish($event)\"\n [inWishList]=\"inWishList\"\n ></rolatech-course-action>\n }\n </div>\n </div>\n </rolatech-app-container>\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CourseCategory, Course } from '../../../interfaces';\nimport { CategoryService, CourseService } from '../../../services';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';\nimport { CourseItemComponent } from '../../../components/course-item/course-item.component';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, CourseItemComponent],\n selector: 'rolatech-course-index',\n templateUrl: './course-index.component.html',\n styleUrls: ['./course-index.component.scss'],\n})\nexport class CourseIndexComponent extends BaseComponent implements OnInit {\n courses: Course[] = [];\n categories: CourseCategory[] = [];\n courseService = inject(CourseService);\n categoryService = inject(CategoryService);\n meta: any;\n loading = false;\n\n ngOnInit(): void {\n this.findCategories();\n this.findCourses();\n this.titleService.setTitle('课程 - 拼小课');\n }\n findCourses() {\n this.loading = true;\n const options = {\n sort: 'updatedAt desc',\n filter: 'published:true',\n };\n this.courseService.find(options).subscribe({\n next: (res: any) => {\n this.courses = res.data;\n this.meta = res.meta;\n this.loading = false;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n findCategories() {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n}\n","<div class=\"min-w-[320px] max-w-[1120px] m-auto\">\n <div class=\"p-3 hidden sm:block text-2xl font-medium\">全部课程</div>\n @if (loading) {\n @for (number of [0, 1, 2, 3, 4, 5]; track number) {\n <div class=\"flex flex-row animate-pulse mt-3 mr-4 cursor-pointer w-full\">\n <div class=\"h-fit w-2/5 sm:w-1/4 aspect-video bg-gray-200 rounded-lg\"></div>\n <div class=\"w-3/5 sm:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-slate-200 rounded col-span-2\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1\"></div>\n <div class=\"h-2 bg-slate-200 rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-slate-200 rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n @for (item of courses; track $index) {\n <div\n class=\"py-2 cursor-pointer min-w-[80%] md:min-w-[25%] sm:min-w-[33%] hover:bg-gray-100\"\n [routerLink]=\"['./', item.id]\"\n >\n <rolatech-course-item [course]=\"item\"></rolatech-course-item>\n </div>\n }\n }\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CourseCategory } from '../../../interfaces';\nimport { CategoryService, CourseService } from '../../../services';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, AppContainerComponent, BaseComponent } from '@rolatech/angular-components';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, AppContainerComponent],\n selector: 'rolatech-course-layout',\n templateUrl: './course-layout.component.html',\n styleUrls: ['./course-layout.component.scss'],\n})\nexport class CourseLayoutComponent extends BaseComponent implements OnInit {\n categories: CourseCategory[] = [];\n categoryService = inject(CategoryService);\n courseService = inject(CourseService);\n selectIndex = 0;\n\n ngOnInit(): void {\n this.findCategories();\n }\n findCategories() {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n loadCourseByCategoryIndex(index: number) {\n this.selectIndex = index;\n const id = this.categories[index].id;\n if (index === 0) {\n this.router.navigate([`/courses`]);\n // this.courseService.find({}).subscribe({\n // next: res => {\n // }\n // })\n } else {\n this.router.navigate([`../courses/categories/${id}`], {\n relativeTo: this.route,\n });\n }\n }\n nextCategory() {}\n}\n","@if (categories) {\n <rolatech-app-container>\n <div class=\"flex flex-col sm:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 sm:h-auto min-w-[256px] sm:py-3\">\n <div class=\"hidden sm:block text-2xl font-medium p-3\">分类</div>\n <div\n class=\"flex flex-row sm:flex-col sm:h-full items-center sm:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 sm:hover:bg-gray-200 hover:rounded flex items-center sm:mb-1\"\n routerLinkActive=\"active\"\n routerLink=\"/courses\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md sm:text-lg\">全部</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 sm:hover:bg-gray-200 hover:rounded flex items-center sm:mb-1\"\n routerLinkActive=\"active\"\n [routerLink]=\"['../courses/categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"px-3 text-md sm:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full sm:py-3\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </rolatech-app-container>\n}\n","import { Component, input } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'rolatech-course-media-owner-renderer',\n standalone: true,\n imports: [AngularCommonModule, MatIconModule],\n templateUrl: './course-media-owner-renderer.component.html',\n styleUrl: './course-media-owner-renderer.component.scss',\n})\nexport class CourseMediaOwnerRendererComponent {\n name = input<string>();\n avatar = input<string>();\n username = input<string>();\n}\n","<div class=\"flex flex-row items-center\">\n <div class=\"flex mr-3 gap-2 items-center\">\n @if (avatar()) {\n <div class=\"cursor-pointer\" [routerLink]=\"['/instructors/', '@' + username()]\">\n <img [src]=\"avatar()\" class=\"w-11 h-11 rounded-full\" />\n </div>\n } @else {\n <div class=\"w-11 h-11 rounded-full bg-orange-600\"></div>\n }\n <div class=\"flex items-center text-lg font-bold cursor-pointer\">\n <a [routerLink]=\"['/instructors/', '@' + username()]\">\n <span>{{ name() }}</span>\n </a>\n <mat-icon color=\"primary\">verified</mat-icon>\n </div>\n </div>\n</div>\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, OnDestroy, OnInit, PLATFORM_ID, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CourseSection } from '../../../interfaces';\nimport { CourseSectionService, CourseService } from '../../../services';\nimport { AuthService, AuthUserService } from '@rolatech/angular-auth';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { CommentsComponent } from '@rolatech/angular-comment';\nimport { CourseMediaOwnerRendererComponent } from '../../../components/course-media-owner-renderer/course-media-owner-renderer.component';\nimport { CourseSectionsComponent } from '../../../components/course-sections/course-sections.component';\n\n// import DPlayer from 'DPlayer';\ndeclare const DPlayer: any;\n\n@Component({\n standalone: true,\n imports: [\n AngularCommonModule,\n AngularComponentsModule,\n CourseSectionsComponent,\n CourseMediaOwnerRendererComponent,\n CommentsComponent,\n ],\n selector: 'rolatech-course-section-content',\n templateUrl: './course-section-content.component.html',\n styleUrls: ['./course-section-content.component.scss'],\n})\nexport class CourseSectionContentComponent implements OnInit, AfterViewInit, OnDestroy {\n route = inject(ActivatedRoute);\n router = inject(Router);\n courseSectionService = inject(CourseSectionService);\n courseService = inject(CourseService);\n authService = inject(AuthService);\n authUserService = inject(AuthUserService);\n el = inject(ElementRef);\n platformId = inject(PLATFORM_ID);\n player: any;\n sections: CourseSection[] = [];\n courseId = '';\n sectionId = '';\n lectureId = '';\n videoUrl: any = '';\n instructorName = '';\n instructorAvatar = '';\n instructorUsername = '';\n course: any;\n purchased = false;\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.courseId = params['id'];\n this.sectionId = params['sectionId'];\n this.lectureId = params['lectureId'];\n this.findCourse(this.courseId);\n this.findSections(this.courseId);\n this.introspect();\n });\n }\n ngOnDestroy(): void {\n if (this.player) {\n this.player.destroy();\n }\n }\n ngAfterViewInit(): void {}\n initPlayer(url: string, thumbnail?: string) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n // 'https://cos-video-1258344699.cos.ap-guangzhou.tencentcos.cn/test.mp4',\n if (!this.player) {\n const playerContainer = this.el.nativeElement.querySelector('#dplayer');\n this.player = new DPlayer({\n container: playerContainer,\n screenshot: true,\n preload: 'metadata',\n video: {\n url: url,\n pic: thumbnail,\n },\n });\n // this.player.on('loadedmetadata', () => {\n // console.log('Video duration:', this.player.video.duration);\n // });\n } else {\n this.player.switchVideo({\n url: url,\n pic: thumbnail,\n });\n }\n }\n findSections(courseId: any) {\n this.courseSectionService.findSections(courseId).subscribe({\n next: (res) => {\n this.sections = res.data;\n const section = this.sections.find((item: any) => item.id === this.sectionId);\n const letcture = section?.lectures.find((item: any) => item.id === this.lectureId);\n this.videoUrl = letcture?.item.url;\n const thumbnail = letcture?.item.thumbnail;\n\n this.initPlayer(this.videoUrl, thumbnail);\n },\n });\n }\n findCourse(courseId: string) {\n this.courseService.get(courseId).subscribe({\n next: (res: any) => {\n this.course = res.data;\n this.findUserBaseInfo(this.course.instructorId);\n },\n });\n }\n findUserBaseInfo(userId: string) {\n this.authUserService.getPublicUserInfo(userId).subscribe({\n next: (res) => {\n this.instructorName = res.name;\n this.instructorAvatar = res.avatar;\n this.instructorUsername = res.username;\n },\n });\n }\n introspect() {\n this.authService.introspect().subscribe({\n next: (res) => {\n if (res.authenticated) {\n this.findPurchasedByCourseId();\n }\n },\n });\n }\n\n findPurchasedByCourseId() {\n this.courseService.findPurchasedByCourseId(this.courseId).subscribe({\n next: (res: any) => {\n this.purchased = res.data ? true : false;\n },\n });\n }\n onSection(event: any) {\n const { section, lecture } = event;\n this.router.navigate(['/courses', this.courseId, 'sections', section.id, 'lectures', lecture.id]);\n }\n checkout(e: any) {\n this.router.navigateByUrl(`/carts/checkout/express/courses/${this.courseId}`);\n }\n}\n","<div class=\"flex sm:flex-row flex-col justify-between w-full mt-2 sm:mt-4\">\n <div class=\"sm:w-[70%] flex flex-col items-start justify-center px-4 sm:px-6 h-fit\">\n <div id=\"dplayer\" class=\"w-full h-auto aspect-video rounded-xl\"></div>\n <div class=\"py-3 w-full\">\n @if (course) {\n <div class=\"text-xl font-medium py-3\">\n {{ course.name }}\n </div>\n <div>\n <rolatech-course-media-owner-renderer\n [name]=\"instructorName\"\n [avatar]=\"instructorAvatar\"\n [username]=\"instructorUsername\"\n ></rolatech-course-media-owner-renderer>\n </div>\n <div>\n <rolatech-comments [itemId]=\"lectureId\"></rolatech-comments>\n </div>\n }\n </div>\n </div>\n <div class=\"sm:w-[30%] px-4 sm:px-0 sm:pr-6\">\n <rolatech-course-sections\n [sections]=\"sections\"\n [purchased]=\"purchased\"\n (section)=\"onSection($event)\"\n (checkout)=\"checkout($event)\"\n ></rolatech-course-sections>\n </div>\n</div>\n","import { Routes } from '@angular/router';\nimport { CourseCategoryComponent } from './course-category/course-category.component';\nimport { CourseDetailComponent } from './course-detail/course-detail.component';\nimport { CourseIndexComponent } from './course-index/course-index.component';\nimport { CourseLayoutComponent } from './course-layout/course-layout.component';\nimport { CourseSectionContentComponent } from './course-section-content/course-section-content.component';\n\nexport const courseRoutes: Routes = [\n {\n path: '',\n component: CourseLayoutComponent,\n children: [\n {\n path: '',\n component: CourseIndexComponent,\n },\n {\n path: 'categories/:id',\n component: CourseCategoryComponent,\n },\n ],\n },\n {\n path: ':id',\n component: CourseDetailComponent,\n },\n {\n path: ':id/sections/:sectionId/lectures/:lectureId',\n component: CourseSectionContentComponent,\n },\n {\n path: 'my-courses',\n component: CourseDetailComponent,\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["fromServices.services"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './lib/interfaces';
2
+ export * from './provider';
3
+ export { courseRoutes } from './lib/pages/course/course.routes';
@@ -0,0 +1,14 @@
1
+ import { Course } from '../../interfaces';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CourseActionComponent {
4
+ course: import("@angular/core").InputSignal<Course>;
5
+ inWishList: import("@angular/core").InputSignal<boolean>;
6
+ cart: import("@angular/core").OutputEmitterRef<Course>;
7
+ wish: import("@angular/core").OutputEmitterRef<Course>;
8
+ checkout: import("@angular/core").OutputEmitterRef<Course>;
9
+ onCart(course: Course): void;
10
+ onWish(course: Course): void;
11
+ onCheckout(course: Course): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseActionComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseActionComponent, "rolatech-course-action", never, { "course": { "alias": "course"; "required": true; "isSignal": true; }; "inWishList": { "alias": "inWishList"; "required": false; "isSignal": true; }; }, { "cart": "cart"; "wish": "wish"; "checkout": "checkout"; }, never, never, true, never>;
14
+ }
@@ -0,0 +1,20 @@
1
+ import { ViewportScroller } from '@angular/common';
2
+ import { ElementRef, OnInit } from '@angular/core';
3
+ import { CourseDetail } from '../../interfaces';
4
+ import * as i0 from "@angular/core";
5
+ export declare class CourseDetailsComponent implements OnInit {
6
+ details: import("@angular/core").InputSignal<CourseDetail[]>;
7
+ instructor: import("@angular/core").InputSignal<string | undefined>;
8
+ username: import("@angular/core").InputSignal<string | undefined>;
9
+ el: ElementRef<any>;
10
+ viewportScroller: ViewportScroller;
11
+ platformId: Object;
12
+ player: any;
13
+ show: boolean;
14
+ mediaIndex: number;
15
+ finalSchedule: never[];
16
+ ngOnInit(): void;
17
+ onClickScroller(id: string): void;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseDetailsComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseDetailsComponent, "rolatech-course-details", never, { "details": { "alias": "details"; "required": true; "isSignal": true; }; "instructor": { "alias": "instructor"; "required": false; "isSignal": true; }; "username": { "alias": "username"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
+ }
@@ -0,0 +1,9 @@
1
+ import { Course } from '../../interfaces';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CourseInfoComponent {
4
+ course: import("@angular/core").InputSignal<Course>;
5
+ instructor: import("@angular/core").InputSignal<string | undefined>;
6
+ username: import("@angular/core").InputSignal<string | undefined>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseInfoComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseInfoComponent, "rolatech-course-info", never, { "course": { "alias": "course"; "required": true; "isSignal": true; }; "instructor": { "alias": "instructor"; "required": false; "isSignal": true; }; "username": { "alias": "username"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { Course } from '../../interfaces';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CourseItemComponent {
4
+ course: import("@angular/core").InputSignal<Course>;
5
+ row: import("@angular/core").InputSignal<boolean>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseItemComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseItemComponent, "rolatech-course-item", never, { "course": { "alias": "course"; "required": true; "isSignal": true; }; "row": { "alias": "row"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,12 @@
1
+ import { Media } from '../../interfaces';
2
+ import { MatDialog } from '@angular/material/dialog';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CourseMediaComponent {
5
+ dialog: MatDialog;
6
+ media: import("@angular/core").InputSignal<Media[]>;
7
+ min: import("@angular/core").InputSignal<boolean>;
8
+ mediaIndex: number;
9
+ onImageClick(i: any): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseMediaComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseMediaComponent, "rolatech-course-media", never, { "media": { "alias": "media"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CourseMediaOwnerRendererComponent {
3
+ name: import("@angular/core").InputSignal<string | undefined>;
4
+ avatar: import("@angular/core").InputSignal<string | undefined>;
5
+ username: import("@angular/core").InputSignal<string | undefined>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseMediaOwnerRendererComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseMediaOwnerRendererComponent, "rolatech-course-media-owner-renderer", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "avatar": { "alias": "avatar"; "required": false; "isSignal": true; }; "username": { "alias": "username"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,7 @@
1
+ import { CoursePricing } from '../../interfaces';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CoursePricingComponent {
4
+ pricing: import("@angular/core").InputSignal<CoursePricing[]>;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<CoursePricingComponent, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<CoursePricingComponent, "rolatech-course-pricing", never, { "pricing": { "alias": "pricing"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7
+ }
@@ -0,0 +1,10 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { CourseSchedule } from '../../interfaces';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CourseScheduleComponent implements OnInit {
5
+ schedule: import("@angular/core").InputSignal<CourseSchedule[]>;
6
+ ngOnInit(): void;
7
+ formatSchedule(): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseScheduleComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseScheduleComponent, "rolatech-course-schedule", never, { "schedule": { "alias": "schedule"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
+ }
@@ -0,0 +1,19 @@
1
+ import { CourseSection, CourseSectionLecture } from '../../interfaces';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CourseSectionsComponent {
4
+ purchased: import("@angular/core").InputSignal<boolean>;
5
+ sections: import("@angular/core").InputSignal<CourseSection[]>;
6
+ section: import("@angular/core").OutputEmitterRef<{
7
+ section: CourseSection;
8
+ lecture: CourseSectionLecture;
9
+ }>;
10
+ checkout: import("@angular/core").OutputEmitterRef<{
11
+ section: CourseSection;
12
+ lecture: CourseSectionLecture;
13
+ }>;
14
+ panelOpenState: boolean;
15
+ onSection(section: CourseSection, lecture: CourseSectionLecture): void;
16
+ onCheckout(section: CourseSection, lecture: CourseSectionLecture): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseSectionsComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseSectionsComponent, "rolatech-course-sections", never, { "purchased": { "alias": "purchased"; "required": false; "isSignal": true; }; "sections": { "alias": "sections"; "required": false; "isSignal": true; }; }, { "section": "section"; "checkout": "checkout"; }, never, never, true, never>;
19
+ }
@@ -0,0 +1,16 @@
1
+ import { Course } from './course';
2
+ export interface CourseCategory {
3
+ id: string;
4
+ name: string;
5
+ media: CourseCategoryMedia[];
6
+ courses: Course[];
7
+ createdAt: string;
8
+ originId: string;
9
+ children: CourseCategory;
10
+ parent: CourseCategory;
11
+ }
12
+ export interface CourseCategoryMedia {
13
+ id: string;
14
+ url: string;
15
+ alt: string;
16
+ }
@@ -0,0 +1,143 @@
1
+ import { CourseCategory } from './category';
2
+ import { Media } from './media';
3
+ export interface Course {
4
+ id: string;
5
+ name: string;
6
+ description: string;
7
+ categories?: CourseCategory[];
8
+ createdAt: string;
9
+ updatedAt: string;
10
+ status: CourseStatus | string;
11
+ media: Media[];
12
+ type: CourseType;
13
+ instructorId: string;
14
+ classroom: CourseClassroom;
15
+ details: CourseDetail[];
16
+ pricing: CoursePricing[];
17
+ schedule: CourseSchedule[];
18
+ }
19
+ export interface CoursePricing {
20
+ id: string;
21
+ min: number;
22
+ max: number;
23
+ total: number;
24
+ }
25
+ export interface CourseSchedule {
26
+ id: string;
27
+ title: string;
28
+ content: string;
29
+ startDate: string;
30
+ startTime: string;
31
+ startAt: string;
32
+ endDate: string;
33
+ endTime: string;
34
+ endAt: string;
35
+ }
36
+ export interface CourseClassroom {
37
+ id: string;
38
+ name: string;
39
+ contact: string;
40
+ phone: string;
41
+ province: string;
42
+ city: string;
43
+ county: string;
44
+ town: string;
45
+ address: string;
46
+ detail: string;
47
+ latitude: string;
48
+ longitude: string;
49
+ media: Media[];
50
+ isUploading?: boolean;
51
+ room?: string;
52
+ }
53
+ export declare enum CourseStatus {
54
+ ACTIVE,
55
+ ACCEPTED,
56
+ AWAITING,
57
+ PENDING,
58
+ STARTED,
59
+ ENDED,
60
+ DELETED,
61
+ DRAFT
62
+ }
63
+ export declare enum CourseRequestStatus {
64
+ AWAITING = "\u5BA1\u6838\u4E2D",
65
+ ACTIVE = "\u5DF2\u901A\u8FC7",
66
+ REJECTED = "\u5DF2\u62D2\u7EDD"
67
+ }
68
+ export interface CourseReviewRecord {
69
+ content: string;
70
+ status: CourseReviewStatus;
71
+ course: Course;
72
+ createdAt: string;
73
+ updatedAt: string;
74
+ }
75
+ export declare enum CourseReviewStatus {
76
+ ACCEPTED = "\u5DF2\u901A\u8FC7",
77
+ REJECTED = "\u672A\u901A\u8FC7"
78
+ }
79
+ export interface CourseDetail {
80
+ id: string;
81
+ title: string;
82
+ description: string;
83
+ content: string;
84
+ media: Media[];
85
+ isUploading?: boolean;
86
+ }
87
+ export interface CourseSection {
88
+ id?: string;
89
+ title: string;
90
+ description: string;
91
+ lectures: CourseSectionLecture[];
92
+ }
93
+ export interface CourseSectionLecture {
94
+ id?: string;
95
+ title: string;
96
+ description: string;
97
+ type: CourseSectionLectureContentType | string;
98
+ item: CourseSectionLectureVideo;
99
+ isUploading?: boolean;
100
+ progress?: number | 0;
101
+ }
102
+ export interface CourseSectionLectureItem {
103
+ id: string;
104
+ }
105
+ export declare enum CourseSectionLectureContentType {
106
+ VIDEO,
107
+ ARTICLE
108
+ }
109
+ export interface CourseSectionLectureVideo {
110
+ id?: string;
111
+ url: string;
112
+ thumbnail: string;
113
+ duration: number;
114
+ isUploading?: boolean;
115
+ progress: number | 0;
116
+ canBePreviewed: boolean;
117
+ }
118
+ export interface CourseSectionLectureVideoMetadata {
119
+ duration: string;
120
+ }
121
+ export interface Schedule {
122
+ id?: string;
123
+ title: string;
124
+ content: string;
125
+ startDate?: string;
126
+ startTime?: string;
127
+ startAt: string;
128
+ endDate?: string;
129
+ endTime?: string;
130
+ endAt: string;
131
+ }
132
+ export interface Pricing {
133
+ id?: string;
134
+ min: number;
135
+ max: number;
136
+ total: number;
137
+ }
138
+ export declare enum CourseType {
139
+ ONLINE,
140
+ OFFLINE,
141
+ MIXED
142
+ }
143
+ export declare const ScheduleDate: string[];
@@ -0,0 +1,3 @@
1
+ export { Media } from './media';
2
+ export { Course, CourseStatus, CourseRequestStatus, CourseDetail, Schedule, CourseSchedule, CoursePricing, ScheduleDate, Pricing, CourseType, CourseReviewRecord, CourseReviewStatus, CourseClassroom, CourseSection, CourseSectionLecture, CourseSectionLectureVideo, CourseSectionLectureContentType, CourseSectionLectureVideoMetadata, } from './course';
3
+ export { CourseCategory, CourseCategoryMedia } from './category';
@@ -0,0 +1,9 @@
1
+ export interface Media {
2
+ id?: string;
3
+ url: string;
4
+ alt: string;
5
+ width?: number;
6
+ height?: number;
7
+ uuid?: string;
8
+ selected?: boolean;
9
+ }
@@ -0,0 +1,21 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { CourseCategory, Course } from '../../../interfaces';
3
+ import { CategoryService, CourseService } from '../../../services';
4
+ import { BaseComponent } from '@rolatech/angular-components';
5
+ import * as i0 from "@angular/core";
6
+ export declare class CourseCategoryComponent extends BaseComponent implements OnInit {
7
+ categoryService: CategoryService;
8
+ courseService: CourseService;
9
+ category: CourseCategory;
10
+ courses: Course[];
11
+ categories: CourseCategory[];
12
+ loading: boolean;
13
+ ngOnInit(): void;
14
+ findAllCategories(): void;
15
+ findCategoryById(id: string): void;
16
+ findAllCourses(): void;
17
+ findCoursesByCategoryId(id: string): void;
18
+ loadCoursesByCategory(item: any): void;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<CourseCategoryComponent, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<CourseCategoryComponent, "rolatech-course-category", never, {}, {}, never, never, true, never>;
21
+ }