@rolatech/angular-course 17.6.4 → 19.0.0-beta.1

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 (61) hide show
  1. package/fesm2022/{rolatech-angular-course-course-index.component-vjwivkqz.mjs → rolatech-angular-course-course-index.component-Ba8BsDP1.mjs} +6 -6
  2. package/fesm2022/rolatech-angular-course-course-index.component-Ba8BsDP1.mjs.map +1 -0
  3. package/fesm2022/rolatech-angular-course.mjs +275 -300
  4. package/fesm2022/rolatech-angular-course.mjs.map +1 -1
  5. package/lib/components/index.d.ts +0 -1
  6. package/package.json +8 -6
  7. package/themes/_default.scss +1 -1
  8. package/esm2022/index.mjs +0 -7
  9. package/esm2022/lib/components/course-action/course-action.component.mjs +0 -29
  10. package/esm2022/lib/components/course-details/course-details.component.mjs +0 -28
  11. package/esm2022/lib/components/course-details-dialog/course-details-dialog.component.mjs +0 -92
  12. package/esm2022/lib/components/course-edit-dialog/course-edit-dialog.component.mjs +0 -233
  13. package/esm2022/lib/components/course-info/course-info.component.mjs +0 -23
  14. package/esm2022/lib/components/course-item/course-item.component.mjs +0 -19
  15. package/esm2022/lib/components/course-media/course-media.component.mjs +0 -34
  16. package/esm2022/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.mjs +0 -20
  17. package/esm2022/lib/components/course-preview/course-preview.component.mjs +0 -11
  18. package/esm2022/lib/components/course-pricing/course-pricing.component.mjs +0 -15
  19. package/esm2022/lib/components/course-pricing-add-dialog/course-pricing-add-dialog.component.mjs +0 -25
  20. package/esm2022/lib/components/course-pricing-dialog/course-pricing-dialog.component.mjs +0 -59
  21. package/esm2022/lib/components/course-schedule/course-schedule.component.mjs +0 -20
  22. package/esm2022/lib/components/course-schedule-add-dialog/course-schedule-add-dialog.component.mjs +0 -26
  23. package/esm2022/lib/components/course-schedule-dialog/course-schedule-dialog.component.mjs +0 -56
  24. package/esm2022/lib/components/course-section-item/course-section-item.component.mjs +0 -52
  25. package/esm2022/lib/components/course-section-lecture-item/course-section-lecture-item.component.mjs +0 -112
  26. package/esm2022/lib/components/course-section-lecture-video-dialog/course-section-lecture-video-dialog.component.mjs +0 -111
  27. package/esm2022/lib/components/course-section-lecture-video-item/course-section-lecture-video-item.component.mjs +0 -11
  28. package/esm2022/lib/components/course-sections/course-sections.component.mjs +0 -28
  29. package/esm2022/lib/components/detail-item/detail-item.component.mjs +0 -72
  30. package/esm2022/lib/components/index.mjs +0 -24
  31. package/esm2022/lib/components/pricing-item/pricing-item.component.mjs +0 -44
  32. package/esm2022/lib/components/schedule-item/schedule-item.component.mjs +0 -127
  33. package/esm2022/lib/interfaces/category.mjs +0 -2
  34. package/esm2022/lib/interfaces/course.mjs +0 -146
  35. package/esm2022/lib/interfaces/index.mjs +0 -2
  36. package/esm2022/lib/interfaces/media.mjs +0 -2
  37. package/esm2022/lib/pages/course/course-category/course-category.component.mjs +0 -74
  38. package/esm2022/lib/pages/course/course-detail/course-detail.component.mjs +0 -148
  39. package/esm2022/lib/pages/course/course-index/course-index.component.mjs +0 -53
  40. package/esm2022/lib/pages/course/course-layout/course-layout.component.mjs +0 -49
  41. package/esm2022/lib/pages/course/course-section-content/course-section-content.component.mjs +0 -133
  42. package/esm2022/lib/pages/course/course.routes.mjs +0 -33
  43. package/esm2022/lib/pages/course-manage/course-manage-content/course-manage-content.component.mjs +0 -12
  44. package/esm2022/lib/pages/course-manage/course-manage-details/course-manage-details.component.mjs +0 -159
  45. package/esm2022/lib/pages/course-manage/course-manage-info/course-manage-info.component.mjs +0 -139
  46. package/esm2022/lib/pages/course-manage/course-manage-layout/course-manage-layout.component.mjs +0 -68
  47. package/esm2022/lib/pages/course-manage/course-manage-media/course-manage-media.component.mjs +0 -137
  48. package/esm2022/lib/pages/course-manage/course-manage-pricing/course-manage-pricing.component.mjs +0 -127
  49. package/esm2022/lib/pages/course-manage/course-manage-schedule/course-manage-schedule.component.mjs +0 -131
  50. package/esm2022/lib/pages/course-manage/course-manage-section/course-manage-section.component.mjs +0 -341
  51. package/esm2022/lib/pages/course-manage/course-manage.routes.mjs +0 -40
  52. package/esm2022/lib/services/booking.service.mjs +0 -24
  53. package/esm2022/lib/services/category.service.mjs +0 -38
  54. package/esm2022/lib/services/course-section.service.mjs +0 -26
  55. package/esm2022/lib/services/course.service.mjs +0 -280
  56. package/esm2022/lib/services/index.mjs +0 -6
  57. package/esm2022/lib/services/instructor.service.mjs +0 -24
  58. package/esm2022/provider.mjs +0 -13
  59. package/esm2022/rolatech-angular-course.mjs +0 -5
  60. package/fesm2022/rolatech-angular-course-course-index.component-vjwivkqz.mjs.map +0 -1
  61. package/lib/components/course-item/course-item.component.d.ts +0 -9
@@ -1 +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-preview/course-preview.component.ts","../../../../libs/angular-course/src/lib/components/course-preview/course-preview.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-action/course-action.component.ts","../../../../libs/angular-course/src/lib/components/course-action/course-action.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/components/course-section-item/course-section-item.component.ts","../../../../libs/angular-course/src/lib/components/course-section-item/course-section-item.component.html","../../../../libs/angular-course/src/lib/components/schedule-item/schedule-item.component.ts","../../../../libs/angular-course/src/lib/components/schedule-item/schedule-item.component.html","../../../../libs/angular-course/src/lib/components/course-section-lecture-video-dialog/course-section-lecture-video-dialog.component.ts","../../../../libs/angular-course/src/lib/components/course-section-lecture-video-dialog/course-section-lecture-video-dialog.component.html","../../../../libs/angular-course/src/lib/components/course-section-lecture-item/course-section-lecture-item.component.ts","../../../../libs/angular-course/src/lib/components/course-section-lecture-item/course-section-lecture-item.component.html","../../../../libs/angular-course/src/lib/components/course-section-lecture-video-item/course-section-lecture-video-item.component.ts","../../../../libs/angular-course/src/lib/components/course-section-lecture-video-item/course-section-lecture-video-item.component.html","../../../../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/components/pricing-item/pricing-item.component.ts","../../../../libs/angular-course/src/lib/components/pricing-item/pricing-item.component.html","../../../../libs/angular-course/src/lib/components/course-pricing-add-dialog/course-pricing-add-dialog.component.ts","../../../../libs/angular-course/src/lib/components/course-pricing-add-dialog/course-pricing-add-dialog.component.html","../../../../libs/angular-course/src/lib/components/course-schedule-add-dialog/course-schedule-add-dialog.component.ts","../../../../libs/angular-course/src/lib/components/course-schedule-add-dialog/course-schedule-add-dialog.component.html","../../../../libs/angular-course/src/lib/components/course-pricing-dialog/course-pricing-dialog.component.ts","../../../../libs/angular-course/src/lib/components/course-pricing-dialog/course-pricing-dialog.component.html","../../../../libs/angular-course/src/lib/components/course-schedule-dialog/course-schedule-dialog.component.ts","../../../../libs/angular-course/src/lib/components/course-schedule-dialog/course-schedule-dialog.component.html","../../../../libs/angular-course/src/lib/components/detail-item/detail-item.component.ts","../../../../libs/angular-course/src/lib/components/detail-item/detail-item.component.html","../../../../libs/angular-course/src/lib/components/course-details-dialog/course-details-dialog.component.ts","../../../../libs/angular-course/src/lib/components/course-details-dialog/course-details-dialog.component.html","../../../../libs/angular-course/src/lib/components/course-edit-dialog/course-edit-dialog.component.ts","../../../../libs/angular-course/src/lib/components/course-edit-dialog/course-edit-dialog.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-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-category/course-category.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-category/course-category.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-layout/course-layout.component.ts","../../../../libs/angular-course/src/lib/pages/course/course-layout/course-layout.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/lib/pages/course-manage/course-manage-content/course-manage-content.component.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-content/course-manage-content.component.html","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-details/course-manage-details.component.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-details/course-manage-details.component.html","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-schedule/course-manage-schedule.component.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-schedule/course-manage-schedule.component.html","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-pricing/course-manage-pricing.component.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-pricing/course-manage-pricing.component.html","../../../../libs/angular-course/src/lib/services/booking.service.ts","../../../../libs/angular-course/src/lib/services/instructor.service.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-info/course-manage-info.component.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-info/course-manage-info.component.html","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-media/course-manage-media.component.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-media/course-manage-media.component.html","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-section/course-manage-section.component.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-section/course-manage-section.component.html","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-layout/course-manage-layout.component.ts","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage-layout/course-manage-layout.component.html","../../../../libs/angular-course/src/lib/pages/course-manage/course-manage.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 { 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 provideAngularCourse(): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n ...fromServices.services,\n importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-course-preview',\n standalone: true,\n imports: [],\n templateUrl: './course-preview.component.html',\n styleUrls: ['./course-preview.component.scss'],\n})\nexport class CoursePreviewComponent {}\n","<p>course-preview works!</p>\n","import { Component, Signal, computed, effect, input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Course } from '../../interfaces';\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, RouterModule],\n})\nexport class CourseInfoComponent {\n course = input.required<Course>();\n instructor = input<string>();\n username = input<string>();\n dataToDisplay = effect(() => {\n return this.course();\n });\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 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-[--rt-brand-color] text-[0.9rem]\" [routerLink]=\"['/@' + 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 { MatDialog } from '@angular/material/dialog';\nimport { NgClass } from '@angular/common';\nimport { ImagePreviewDialogComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { Media } from '../../interfaces';\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, ThumbnailComponent],\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(ImagePreviewDialogComponent, {\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=\"md:w-80 object-cover aspect-video bg-[--rt-10-percent-layer] rounded-lg\">\n @if (media()) {\n <rolatech-thumbnail [src]=\"media()[0].url\" size=\"small\"></rolatech-thumbnail>\n }\n </div>\n } @else {\n <div>\n <div class=\"object-cover aspect-video bg-[--rt-10-percent-layer]\">\n <rolatech-thumbnail [src]=\"media()[mediaIndex].url\" size=\"small\"></rolatech-thumbnail>\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 <rolatech-thumbnail [src]=\"item.url\" size=\"small\"></rolatech-thumbnail>\n </div>\n }\n </div>\n }\n}\n","import { Component, input } from '@angular/core';\nimport { CoursePricing } from '../../interfaces';\nimport { FixedPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-course-pricing',\n templateUrl: './course-pricing.component.html',\n styleUrls: ['./course-pricing.component.scss'],\n standalone: true,\n imports: [FixedPipe],\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 | fixed }}元</span>\n </div>\n }\n </div>\n}\n","import { Component, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Course } from '../../interfaces';\n\n@Component({\n standalone: true,\n selector: 'rolatech-course-action',\n templateUrl: './course-action.component.html',\n styleUrls: ['./course-action.component.scss'],\n imports: [MatButtonModule],\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-[--rt-brand-color] text-center mt-3\" target=\"_blank\" (click)=\"onCart(course)\">加入购物车</a> -->\n <a mat-flat-button class=\"mt-3 min-h-11\" target=\"_blank\" (click)=\"onCheckout(course())\">立即购买</a>\n <a mat-stroked-button class=\"mt-3 min-h-11\" target=\"_blank\" (click)=\"onWish(course())\">{{\n inWishList() ? '移除收藏' : '加入收藏'\n }}</a>\n</div>\n","import { Component, OnInit, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CourseSchedule } from '../../interfaces';\nimport { AccordionComponent, PanelComponent } from '@rolatech/angular-components';\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: [MatIconModule, AccordionComponent, PanelComponent],\n})\nexport class CourseScheduleComponent implements OnInit {\n schedule = input<CourseSchedule[]>([]);\n\n ngOnInit(): void {\n // this.formatSchedule();\n }\n formatSchedule() {}\n}\n","@if (schedule()) {\n <div class=\"py-3\" id=\"schedule\">\n <div class=\"text-xl font-medium py-2\">课表</div>\n <rolatech-accordion>\n @for (item of schedule(); track $index) {\n <rolatech-panel [title]=\"item.title\" [expanded]=\"$index === 0\">\n <div>\n <div class=\"text-[--rt-text-secondary]pt-2 text-sm\">\n <span>{{ item.startAt }} - {{ item.endAt }}</span>\n </div>\n <div class=\"py-3\">\n <div>{{ item.content }}</div>\n </div>\n </div>\n </rolatech-panel>\n }\n </rolatech-accordion>\n </div>\n}\n","import { Component, ViewEncapsulation, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DurationPipe } from '@rolatech/angular-common';\nimport { CourseSection, CourseSectionLecture } from '../../interfaces';\nimport { AccordionComponent, PanelComponent } from '@rolatech/angular-components';\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: [MatIconModule, DurationPipe, MatCheckboxModule, AccordionComponent, PanelComponent],\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 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-2xl font-medium py-3 lg:pt-0\">课程内容</div>\n <rolatech-accordion>\n @for (item of sections(); track $index) {\n <rolatech-panel [expanded]=\"$index === 0\" [title]=\"item.title\">\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-[--rt-brand-color]\"\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-[--rt-brand-color]\"\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-[--rt-brand-color]\"\n (click)=\"onCheckout(item, lecture)\"\n >购买</a\n >\n }\n }\n\n <a class=\"text-[--rt-text-secondary] inline-block w-[60px] text-right\">{{\n lecture.item.duration | duration\n }}</a>\n </div>\n }\n </div>\n }\n </rolatech-panel>\n }\n </rolatech-accordion>\n </div>\n}\n","import { Component, OnInit, input, model, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent, InputComponent } from '@rolatech/angular-components';\nimport { CourseSection } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-section-item',\n templateUrl: './course-section-item.component.html',\n styleUrls: ['./course-section-item.component.scss'],\n standalone: true,\n imports: [MatIconModule, FormsModule, MatButtonModule, IconButtonComponent, InputComponent],\n})\nexport class CourseSectionItemComponent implements OnInit {\n section = model.required<CourseSection>();\n actions = model<boolean>();\n hasUnsaved = model<boolean[]>();\n editId = model<any>();\n save = output<CourseSection>();\n cancel = output<CourseSection>();\n delete = output<CourseSection>();\n edit = output<CourseSection>();\n addLecture = output<CourseSection>();\n editing = false;\n isExpand = false;\n\n ngOnInit(): void {}\n\n onSave(section: CourseSection) {\n this.editing = false;\n this.editId.set(null);\n this.save.emit(section);\n }\n onCancel(section: CourseSection) {\n this.editing = false;\n this.editId.set(null);\n this.cancel.emit(section);\n }\n onDelete(section: CourseSection) {\n this.delete.emit(section);\n }\n onEdit(section: CourseSection) {\n this.editId.set(null);\n this.editing = true;\n this.edit.emit(section);\n }\n onAddLecture(section: CourseSection) {\n this.addLecture.emit(section);\n }\n}\n","<div class=\"flex flex-col grow\">\n @if (section().id !== editId()) {\n <div>\n <div class=\"flex justify-between items-center cursor-pointer\" (click)=\"isExpand = !isExpand\">\n <div class=\"w-full flex items-center gap-3 pl-3\">\n <span>{{ section().title }}</span>\n <button mat-icon-button class=\"max-w-8 max-h-8 !p-1\" (click)=\"onEdit(section()); $event.stopPropagation()\">\n <mat-icon>edit</mat-icon>\n </button>\n <button mat-icon-button class=\"max-w-8 max-h-8 !p-1\" (click)=\"onDelete(section()); $event.stopPropagation()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <button mat-icon-button class=\"max-w-8 max-h-8 !p-1\">\n <mat-icon>{{ isExpand ? 'expand_less' : 'expand_more' }}</mat-icon>\n </button>\n </div>\n @if (isExpand) {\n <div>\n <ng-content></ng-content>\n </div>\n }\n </div>\n } @else {\n <div class=\"flex flex-col justify-between items-center\">\n <rolatech-input [(title)]=\"section().title\" placeholder=\"标题\"></rolatech-input>\n <div class=\"w-full flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onCancel(section())\">取消</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(section())\">保存</button>\n </div>\n </div>\n }\n</div>\n","import { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { Component, OnInit, OnDestroy, output, model, input, effect, computed } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatOptionModule } from '@angular/material/core';\nimport moment from 'moment';\nimport { DatePipe, NgClass } from '@angular/common';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { Schedule, ScheduleDate } from '../../interfaces';\nexport const COURSE_SCHEDULE_DATE_FORMATS = {\n parse: {\n dateInput: 'YYYY-MM-DD',\n },\n display: {\n dateInput: 'YYYY-MM-DD',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'YYYY-MM-DD',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n\n@Component({\n selector: 'rolatech-schedule-item',\n templateUrl: './schedule-item.component.html',\n styleUrls: ['./schedule-item.component.scss'],\n providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n { provide: MAT_DATE_FORMATS, useValue: COURSE_SCHEDULE_DATE_FORMATS },\n DatePipe,\n ],\n standalone: true,\n imports: [\n NgClass,\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n TextFieldModule,\n MatDatepickerModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n MatDividerModule,\n ],\n})\nexport class ScheduleItemComponent implements OnInit, OnDestroy {\n value = input<Schedule | undefined>();\n actions = input<boolean>(false);\n delete = output<Schedule>();\n save = output<Schedule>();\n date = ScheduleDate;\n schedule: any = effect(() => {\n this.schedule = this.value() || {\n title: '',\n content: '',\n startAt: '',\n endAt: '',\n };\n this.schedule.startDate = moment(this.schedule.startAt).format('YYYY-MM-DD');\n this.schedule.startTime = moment(this.schedule.startAt).format('HH:mm');\n this.schedule.endDate = moment(this.schedule.endAt).format('YYYY-MM-DD');\n this.schedule.endTime = moment(this.schedule.endAt).format('HH:mm');\n });\n // constructor() {\n // this.schedule = this.value();\n // }\n\n ngOnInit(): void {\n // this.schedule = computed(() => {\n // return this.value();\n // })();\n // this.schedule = this.value();\n // this.schedule.startDate = moment(this.schedule.startAt).format('YYYY-MM-DD');\n // this.schedule.startTime = moment(this.schedule.startAt).format('HH:mm');\n // this.schedule.endDate = moment(this.schedule.endAt).format('YYYY-MM-DD');\n // this.schedule.endTime = moment(this.schedule.endAt).format('HH:mm');\n }\n ngOnDestroy(): void {\n const { startAt, endAt, startTime, startDate, endDate, endTime } = this.schedule;\n this.schedule.startAt = this.schedule.startDate + ' ' + this.schedule.startTime;\n this.schedule.endAt = this.schedule.endDate + ' ' + this.schedule.endTime;\n delete this.schedule.startDate;\n delete this.schedule.startTime;\n delete this.schedule.endDate;\n delete this.schedule.endTime;\n }\n startDateChanged(event: any) {}\n startTimeChanged(event: any) {}\n\n endDateChanged(event: any) {}\n endTimeChanged(event: any) {}\n\n onSave(schedule: Schedule) {\n this.format();\n this.save.emit(schedule);\n }\n onDelete(schedule: Schedule) {\n this.delete.emit(schedule);\n }\n private format() {\n this.schedule.startAt = this.schedule.startDate + ' ' + this.schedule.startTime;\n this.schedule.endAt = this.schedule.endDate + ' ' + this.schedule.endTime;\n }\n}\n","<div class=\"flex flex-col py-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 标题 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"schedule.title\" name=\"title\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 内容 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"schedule.content\"\n name=\"content\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>开始日期</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n (focus)=\"picker.open()\"\n name=\"startAt\"\n [(ngModel)]=\"schedule.startDate\"\n (ngModelChange)=\"startDateChanged($event)\"\n (dateInput)=\"schedule.startDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>开始时间</mat-label>\n <mat-select [(ngModel)]=\"schedule.startTime\" (selectionChange)=\"startTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>结束日期</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker2\"\n name=\"endAt\"\n (focus)=\"picker2.open()\"\n (ngModelChange)=\"endDateChanged($event)\"\n [(ngModel)]=\"schedule.endDate\"\n (dateInput)=\"schedule.endDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>结束时间</mat-label>\n <mat-select [(ngModel)]=\"schedule.endTime\" (selectionChange)=\"endTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n</div>\n@if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onDelete(schedule)\">删除</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(schedule)\">保存</button>\n </div>\n}\n<mat-divider></mat-divider>\n","import { AfterViewInit, Component, ElementRef, Inject, OnDestroy, OnInit, PLATFORM_ID, inject, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogClose, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { ScheduleItemComponent } from '../schedule-item/schedule-item.component';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { CourseSectionLecture } from '../../interfaces';\nimport { CourseSectionService, CourseService } from '../../services';\ndeclare const DPlayer: any;\n\n@Component({\n selector: 'rolatech-course-section-lecture-video-dialog',\n standalone: true,\n imports: [\n MatIconModule,\n MatDividerModule,\n FormsModule,\n MatStepperModule,\n ScheduleItemComponent,\n MatButtonModule,\n MatDialogClose,\n MatCheckboxModule,\n ],\n templateUrl: './course-section-lecture-video-dialog.component.html',\n styleUrl: './course-section-lecture-video-dialog.component.scss',\n})\nexport class CourseSectionLectureVideoDialogComponent implements OnInit, AfterViewInit, OnDestroy {\n lecture!: CourseSectionLecture;\n thumbnailUpload = output<any>();\n courseService = inject(CourseService);\n courseSectionService = inject(CourseSectionService);\n\n snackBar = inject(MatSnackBar);\n platformId = inject(PLATFORM_ID);\n el = inject(ElementRef);\n mediaSrc: any;\n player: any;\n\n constructor(\n private dialogRef: MatDialogRef<CourseSectionLectureVideoDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n this.lecture = data.data;\n }\n ngAfterViewInit(): void {\n this.initPlayer(this.lecture.item.url, this.lecture.item.thumbnail);\n }\n close() {\n this.dialogRef.close();\n }\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 // });\n }\n }\n ngOnInit(): void {}\n ngOnDestroy(): void {\n if (this.player) {\n this.player.destroy();\n }\n }\n onThumbnailUpload(event: any) {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n this.mediaSrc = reader.result;\n const formData = new FormData();\n formData.append('file', file);\n this.courseService.uploadLectureVideoThumbnail(this.lecture.item.id, formData).subscribe({\n next: (res) => {\n this.lecture.item = res.data;\n this.snackBar.open('上传成功');\n this.player.switchVideo({\n url: this.lecture.item.url,\n pic: res.data.thumbnail,\n });\n },\n });\n };\n reader.onerror = (error) => {};\n }\n }\n onPreviewChange(event: any) {\n this.courseSectionService.canBePreviewed(this.lecture.item.id, { canBePreviewed: event.checked }).subscribe({\n next: (res) => {\n this.lecture.item.canBePreviewed = res.data.canBePreviewed;\n // this.lecture = res.data;\n },\n });\n }\n}\n","<div class=\"flex flex-col-reverse md:flex-row justify-between h-full gap-3\">\n <div class=\"w-full md:w-1/2\">\n <div>\n <div class=\"py-3 flex flex-col\">\n <span class=\"text-lg font-bold\"> 封面 </span>\n <span class=\"text-sm\">一个好的封面可以引起更多的关注</span>\n </div>\n\n <div class=\"flex gap-3\">\n <div\n class=\"p-3 w-36 flex flex-col items-center justify-center outline-dashed outline-1 rounded cursor-pointer\"\n (click)=\"fileInput.click()\"\n >\n <mat-icon>upload</mat-icon>\n <span class=\"text-sm\">上传封面</span>\n </div>\n <input type=\"file\" accept=\"image/*\" (change)=\"onThumbnailUpload($event)\" #fileInput style=\"display: none\" />\n @if (lecture.item.thumbnail) {\n <div class=\"aspect-video w-32 h-auto bg-black\">\n <img [src]=\"lecture.item.thumbnail\" class=\"aspect-video object-contain\" />\n </div>\n } @else {\n <div class=\"aspect-video w-32 h-auto\">\n <img [src]=\"mediaSrc\" class=\"aspect-video object-contain\" />\n </div>\n }\n </div>\n </div>\n <div class=\"mt-3\">\n <div class=\"py-3 flex flex-col\">\n <span class=\"text-lg font-bold\"> 试看内容 </span>\n <span class=\"text-sm\">少量的试看内容, 可以增加购买率</span>\n </div>\n <mat-checkbox color=\"primary\" (change)=\"onPreviewChange($event)\" [checked]=\"lecture.item.canBePreviewed\"\n >允许试看</mat-checkbox\n >\n </div>\n </div>\n <div class=\"w-full md:w-1/2\">\n @if (lecture) {\n <div>\n <div id=\"dplayer\" class=\"w-full h-auto aspect-video md:rounded-xl\"></div>\n </div>\n }\n </div>\n</div>\n","import { Component, ElementRef, OnInit, PLATFORM_ID, inject, input, model, output, viewChild } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularComponentsModule, InputComponent } from '@rolatech/angular-components';\nimport { AngularCommonModule, DurationPipe } from '@rolatech/angular-common';\nimport { DialogService } from '@rolatech/angular-services';\nimport { CourseSectionLecture, CourseSectionLectureVideo } from '../../interfaces';\nimport { CourseSectionLectureVideoDialogComponent } from '../course-section-lecture-video-dialog/course-section-lecture-video-dialog.component';\nimport { CourseSectionLectureItem } from '../../interfaces/course';\n\n@Component({\n selector: 'rolatech-course-section-lecture-item',\n templateUrl: './course-section-lecture-item.component.html',\n styleUrls: ['./course-section-lecture-item.component.scss'],\n standalone: true,\n imports: [\n MatIconModule,\n AngularCommonModule,\n FormsModule,\n MatButtonModule,\n MatDividerModule,\n AngularComponentsModule,\n DurationPipe,\n InputComponent,\n ],\n})\nexport class CourseSectionLectureItemComponent implements OnInit {\n platformId = inject(PLATFORM_ID);\n el = inject(ElementRef);\n dialogService = inject(DialogService);\n myVideo = viewChild('video');\n progress = input<number>(0);\n lecture = input.required<CourseSectionLecture>();\n actions = input<boolean>(true);\n hasUnsaved = input<boolean>(false);\n editId = model<any>();\n\n save = output<CourseSectionLecture>();\n cancel = output<CourseSectionLecture>();\n delete = output<CourseSectionLecture>();\n edit = output<CourseSectionLecture>();\n mediaEdit = output<CourseSectionLectureVideo>();\n thumbnailUpload = output<CourseSectionLectureVideo>();\n upload = output<{ id: any; data: FormData | null }>();\n deleteMedia = output<CourseSectionLectureItem>();\n\n editing = false;\n ngOnInit(): void {}\n\n onSave(lecture: CourseSectionLecture) {\n this.editing = false;\n this.editId.set(null);\n this.save.emit(lecture);\n }\n onCancel(lecture: CourseSectionLecture) {\n this.editing = false;\n this.editId.set(null);\n this.cancel.emit(lecture);\n }\n onDelete(lecture: CourseSectionLecture) {\n this.delete.emit(lecture);\n }\n onEdit(lecture: CourseSectionLecture) {\n this.editId.set(lecture.id);\n this.editing = true;\n this.edit.emit(lecture);\n }\n onMediaEdit(lecture: CourseSectionLectureVideo) {\n this.editId.set(lecture.id);\n this.editing = true;\n // this.mediaEdit.emit(lecture);\n const options = {\n title: '编辑视频',\n cancelText: '取消',\n confirmText: '确定',\n data: this.lecture(),\n width: '80vw',\n maxWidth: '80vw',\n height: '100%',\n component: CourseSectionLectureVideoDialogComponent,\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n const data = {\n name: res,\n };\n }\n },\n });\n }\n onVideoThumbnailUpload(video: CourseSectionLectureVideo) {\n this.thumbnailUpload.emit(video);\n }\n onUpload(id: any, data: any) {\n this.lecture().isUploading = true;\n\n this.upload.emit({ id, data });\n }\n onDeleteMedia(data: any) {\n this.deleteMedia.emit(data);\n }\n onLoadedMetadata(event: Event): void {\n if (this.lecture().item.duration) {\n return;\n }\n const videoElement: HTMLVideoElement = event.target as HTMLVideoElement;\n this.lecture().item.duration = videoElement.duration;\n }\n}\n","<div class=\"flex flex-col grow p-2\">\n @if (lecture().id !== editId()) {\n <div class=\"w-full flex gap-3 p-3 items-center\">\n <span>{{ lecture().title }}</span>\n <button mat-icon-button (click)=\"onEdit(lecture()); $event.stopPropagation()\" class=\"max-w-8 max-h-8 !p-1\">\n <mat-icon>edit</mat-icon>\n </button>\n <button mat-icon-button (click)=\"onDelete(lecture()); $event.stopPropagation()\" class=\"max-w-8 max-h-8 !p-1\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n } @else {\n <div class=\"flex flex-col justify-between items-center\">\n <rolatech-input [(title)]=\"lecture().title\" placeholder=\"标题\"></rolatech-input>\n <div class=\"w-full flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onCancel(lecture())\">取消</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(lecture())\">保存</button>\n </div>\n </div>\n }\n\n <div>\n @if (lecture().item) {\n <div class=\"flex flex-row p-2 gap-3\">\n <div class=\"bg-black h-fit\">\n <video\n id=\"video\"\n #video\n [src]=\"lecture().item.url\"\n class=\"w-32 aspect-video\"\n (loadedmetadata)=\"onLoadedMetadata($event)\"\n [poster]=\"lecture().item.thumbnail\"\n ></video>\n </div>\n <div class=\"flex flex-col justify-between w-full\">\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-between items-center w-full px-2\">\n <span>视频内容</span>\n </div>\n @if (lecture().isUploading) {\n <div>\n <span> {{ lecture().item.progress }}%</span>\n </div>\n }\n </div>\n <div class=\"flex justify-between items-center\">\n <div>\n <button mat-button class=\"max-h-8\" (click)=\"onMediaEdit(lecture().item); $event.stopPropagation()\">\n <mat-icon>edit</mat-icon>\n <span>编辑</span>\n </button>\n <button mat-button class=\"max-h-8\" (click)=\"onDeleteMedia(lecture().item); $event.stopPropagation()\">\n <mat-icon>delete</mat-icon>\n <span>删除</span>\n </button>\n </div>\n <div>\n <span>{{ lecture().item.duration | duration }}</span>\n </div>\n </div>\n </div>\n </div>\n @if (lecture().isUploading) {\n <div class=\"p-2\">\n <mat-progress-bar color=\"primary\" mode=\"determinate\" [value]=\"lecture().item.progress\"> </mat-progress-bar>\n </div>\n }\n } @else {\n @if (lecture().id !== editId()) {\n <div class=\"px-3\">\n <input\n class=\"ud-sr-only\"\n type=\"file\"\n accept=\".avi,.mpg,.mpeg,.flv,.mov,.m2v,.m4v,.mp4,.rm,.ram,.vob,.ogv,.webm,.wmv\"\n (change)=\"onUpload(lecture().id, $event)\"\n #fileInput\n />\n <div class=\"flex justify-between items-center\">\n <div>无视频文件</div>\n <button mat-flat-button class=\"max-h-8\" (click)=\"fileInput.click()\">上传视频</button>\n </div>\n </div>\n }\n }\n </div>\n @if (!hasUnsaved) {\n <ng-content></ng-content>\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-course-section-lecture-video-item',\n templateUrl: './course-section-lecture-video-item.component.html',\n styleUrls: ['./course-section-lecture-video-item.component.scss'],\n standalone: true,\n})\nexport class CourseSectionLectureVideoItemComponent {}\n","<p>course-section-lecture-video-item works!</p>\n","import { CommonModule } from '@angular/common';\nimport { Component, booleanAttribute, input } from '@angular/core';\nimport { ImageComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { Course } from '../../interfaces';\nimport { FixedPipe } from '@rolatech/angular-common';\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: [CommonModule, ImageComponent, ThumbnailComponent, FixedPipe],\n})\nexport class CourseItemComponent {\n course = input.required<Course>();\n row = input<boolean>(true);\n inset = input(false, { transform: booleanAttribute });\n}\n","@if (row()) {\n <div class=\"flex w-full flex-row\" [style]=\"inset() ? 'padding: 0 16px' : ''\">\n <div class=\"h-fit w-2/5 md:w-1/4 aspect-video bg-[--rt-10-percent-layer] rounded-lg\">\n @if (course().media) {\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course().media[0].url + '!w400'\" size=\"medium\"></rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-10-percent-layer] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n }\n </div>\n <div class=\"w-3/5 md:w-3/4 ml-3 flex flex-col justify-between\">\n <div>\n <div class=\"md:text-xl font-medium break-words line-clamp-1 md:line-clamp-2 whitespace-normal\">\n {{ course().name }}\n </div>\n <div class=\"invisible h-0 md:h-auto md:visible break-words line-clamp-1 whitespace-normal\">\n {{ course().description }}\n </div>\n </div>\n @if (course().pricing) {\n <div class=\"md:text-lg font-medium py-1\">¥{{ course().pricing[0].total | fixed }}</div>\n }\n </div>\n </div>\n} @else {\n <div>\n <div>\n @if (course().media; as media) {\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course().media[0].url + '!w400'\" size=\"medium\"></rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-10-percent-layer] w-full h-full object-cover aspect-video rounded-lg\"></div>\n }\n }\n </div>\n <div class=\"mt-2\">\n <div class=\"text-md md:text-xl font-medium break-words line-clamp-2\">{{ course().name }}</div>\n @if (course().pricing) {\n <div class=\"text-md md:text-lg font-medium py-1\">¥{{ course().pricing[0].total | fixed }}</div>\n }\n </div>\n </div>\n}\n","import { Component, OnInit, input, model, output } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { NgClass } from '@angular/common';\nimport { Pricing } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-pricing-item',\n templateUrl: './pricing-item.component.html',\n styleUrls: ['./pricing-item.component.scss'],\n standalone: true,\n imports: [NgClass, MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, MatDividerModule],\n})\nexport class PricingItemComponent implements OnInit {\n actions = input<boolean>(false);\n pricing = model.required<Pricing>();\n delete = output<Pricing>();\n save = output<Pricing>();\n\n constructor() {}\n ngOnInit(): void {\n this.pricing().total = this.pricing().total / 100;\n }\n\n onSave(pricing: Pricing) {\n const finalPricing = {\n ...pricing,\n total: pricing.total * 100,\n };\n this.save.emit(finalPricing);\n }\n onDelete(pricing: Pricing) {\n this.delete.emit(pricing);\n }\n setTwoNumberDecimal(e: any) {\n this.pricing().total = e;\n }\n}\n","<div class=\"flex flex-col py-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 最少人数 </mat-label>\n <input matInput type=\"number\" [(ngModel)]=\"pricing().min\" name=\"min\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 最多人数 </mat-label>\n <input matInput type=\"number\" [(ngModel)]=\"pricing().max\" name=\"max\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 价格 </mat-label>\n <!-- <input matInput type=\"number\" step=\"0.01\" [ngModel]=\"pricing().total\"\n (ngModelChange)=\"setTwoNumberDecimal($event)\" name=\"total\" required placeholder=\"20.23\" /> -->\n <input matInput rolatechDecimal type=\"text\" [(ngModel)]=\"pricing().total\" name=\"total\" required />\n </mat-form-field>\n</div>\n@if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onDelete(pricing())\">删除</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(pricing())\">保存</button>\n </div>\n}\n<mat-divider></mat-divider>\n","import { Component, DoCheck, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PricingItemComponent } from '../pricing-item/pricing-item.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Pricing } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-pricing-add-dialog',\n templateUrl: './course-pricing-add-dialog.component.html',\n styleUrls: ['./course-pricing-add-dialog.component.scss'],\n standalone: true,\n imports: [MatIconModule, PricingItemComponent, MatButtonModule],\n})\nexport class CoursePricingAddDialogComponent implements DoCheck {\n output = output<any>();\n pricing: Pricing = {\n min: 0,\n max: 0,\n total: 0,\n };\n ngDoCheck(): void {\n this.output.emit(this.pricing);\n }\n}\n","<rolatech-pricing-item [pricing]=\"pricing\"></rolatech-pricing-item>\n","import { Component, DoCheck, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScheduleItemComponent } from '../schedule-item/schedule-item.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Schedule } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-schedule-add-dialog',\n templateUrl: './course-schedule-add-dialog.component.html',\n styleUrls: ['./course-schedule-add-dialog.component.scss'],\n standalone: true,\n imports: [MatIconModule, ScheduleItemComponent, MatButtonModule],\n})\nexport class CourseScheduleAddDialogComponent implements DoCheck {\n output = output<any>();\n schedule: Schedule = {\n title: '',\n content: '',\n startAt: '',\n endAt: '',\n };\n ngDoCheck(): void {\n this.output.emit(this.schedule);\n }\n}\n","<rolatech-schedule-item [value]=\"schedule\"></rolatech-schedule-item>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA, MatDialogClose } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PricingItemComponent } from '../pricing-item/pricing-item.component';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Pricing } from '../../interfaces';\nimport { CourseService } from '../../services';\n\n@Component({\n selector: 'rolatech-course-pricing-dialog',\n templateUrl: './course-pricing-dialog.component.html',\n styleUrls: ['./course-pricing-dialog.component.scss'],\n standalone: true,\n imports: [\n MatIconModule,\n MatDividerModule,\n FormsModule,\n MatStepperModule,\n PricingItemComponent,\n MatButtonModule,\n MatDialogClose,\n ],\n})\nexport class CoursePricingDialogComponent {\n courseId!: string;\n pricing: Pricing[] = [];\n constructor(\n private dialogRef: MatDialogRef<CoursePricingDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private courseService: CourseService,\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n ) {\n this.courseId = data.courseId;\n this.pricing = data.pricing;\n }\n close() {\n this.dialogRef.close();\n }\n addPricing() {\n this.pricing.push({\n min: 0,\n max: 0,\n total: 0,\n });\n }\n}\n","<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden mt-3 overflow-y-auto w-2/3 max-h-[55vh]\">\n <form #detailForm=\"ngForm\" class=\"p-3\">\n <ng-template matStepLabel>详情</ng-template>\n @for (item of pricing; track item) {\n <rolatech-pricing-item [pricing]=\"item\"> </rolatech-pricing-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addPricing()\">\n <mat-icon>add</mat-icon>\n <span>增加价格</span>\n </button>\n </div>\n </form>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-end items-center px-5\">\n <button mat-button [mat-dialog-close]=\"pricing\" cdkFocusInitial>保存</button>\n </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogClose } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScheduleItemComponent } from '../schedule-item/schedule-item.component';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Schedule } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-schedule-dialog',\n templateUrl: './course-schedule-dialog.component.html',\n styleUrls: ['./course-schedule-dialog.component.scss'],\n standalone: true,\n imports: [\n MatIconModule,\n MatDividerModule,\n FormsModule,\n MatStepperModule,\n ScheduleItemComponent,\n MatButtonModule,\n MatDialogClose,\n ],\n})\nexport class CourseScheduleDialogComponent {\n courseId!: string;\n schedule: Schedule[] = [];\n constructor(\n private dialogRef: MatDialogRef<CourseScheduleDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n this.courseId = data.courseId;\n this.schedule = data.schedule;\n }\n close() {\n this.dialogRef.close();\n }\n addSchedule() {\n if (!this.schedule) {\n this.schedule = [];\n }\n this.schedule.push({\n title: '',\n content: '',\n startAt: '',\n endAt: '',\n });\n }\n}\n","<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden mt-3 overflow-y-auto\">\n <form #detailForm=\"ngForm\" class=\"p-3\">\n <ng-template matStepLabel>详情</ng-template>\n @for (item of schedule; track item) {\n <rolatech-schedule-item [value]=\"item\"></rolatech-schedule-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addSchedule()\">\n <mat-icon>add</mat-icon>\n <span>增加课表</span>\n </button>\n </div>\n </form>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-end items-center px-5\">\n <button mat-button [mat-dialog-close]=\"schedule\" cdkFocusInitial>保存</button>\n </div>\n</div>\n","import { Component, OnInit, input, output } from '@angular/core';\nimport { first } from 'lodash';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { NgClass } from '@angular/common';\nimport { CourseDetail, Media } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-detail-item',\n templateUrl: './detail-item.component.html',\n styleUrls: ['./detail-item.component.scss'],\n standalone: true,\n imports: [\n NgClass,\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n TextFieldModule,\n MatButtonModule,\n MatIconModule,\n MatProgressBarModule,\n MatDividerModule,\n ],\n})\nexport class DetailItemComponent implements OnInit {\n isUploading = input<boolean>();\n detail = input.required<CourseDetail>();\n actions = input<boolean>(false);\n selectMedia = input<any>();\n\n upload = output<{ id: string; data: FormData | null }>();\n delete = output<CourseDetail>();\n save = output<CourseDetail>();\n deleteMedia = output<{ id: string; media: Media }>();\n selectedImg!: Media | any;\n\n constructor() {}\n\n ngOnInit(): void {\n this.selectedImg = this.detail().media ? this.detail().media[0] : null;\n }\n onUpload(id: string, data: any) {\n this.upload.emit({ id, data });\n }\n onMediaItemClick(image: Media) {\n this.selectedImg = image;\n }\n\n select(item: any) {\n this.selectedImg = item;\n }\n deleteImage() {}\n onSave(detail: CourseDetail) {\n this.save.emit(detail);\n }\n onDelete(detail: CourseDetail) {\n this.delete.emit(detail);\n }\n onDeleteMedia(id: string, media: Media) {\n this.deleteMedia.emit({ id, media });\n this.selectedImg = this.detail().media ? first(this.detail().media) : null;\n }\n}\n","<div class=\"mb-8\">\n <div class=\"flex flex-col lg:flex-row\">\n <div class=\"flex flex-col grow\">\n <mat-form-field appearance=\"fill\">\n <mat-label>标题</mat-label>\n <input matInput placeholder=\"标题\" [(ngModel)]=\"detail().title\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\" [hideRequiredMarker]=\"true\">\n <mat-label>描述</mat-label>\n <input matInput placeholder=\"描述\" [(ngModel)]=\"detail().description\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\" [hideRequiredMarker]=\"true\">\n <mat-label>内容</mat-label>\n <textarea\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n placeholder=\"内容\"\n [(ngModel)]=\"detail().content\"\n ></textarea>\n </mat-form-field>\n </div>\n <!-- image -->\n <div class=\"lg:basis-1/2 px-3\">\n <div class=\"flex flex-row justify-center pb-4 p-1\">\n @if (selectedImg) {\n <img class=\"object-contain w-80 h-80\" [src]=\"selectedImg.url\" [alt]=\"selectedImg.alt\" />\n }\n @if (selectedImg) {\n <button mat-icon-button (click)=\"onDeleteMedia(detail().id, selectedImg)\">\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n <!-- media -->\n <div>\n <div class=\"flex flex-row flex-wrap cursor-pointer relative box-border\" fxLayout=\"row\">\n <div class=\"progress-bar\">\n @if (detail().isUploading) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </div>\n @for (media of detail().media; track media) {\n <div class=\"media-list-item\">\n <img class=\"tile-media\" (click)=\"onMediaItemClick(media)\" [src]=\"media.url\" [alt]=\"media.alt\" />\n </div>\n }\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload(detail().id, $event)\" #fileInput />\n <div class=\"add-button\">\n <div (click)=\"fileInput.click()\" class=\"tile-media flex justify-center items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48px\" viewBox=\"0 -960 960 960\" width=\"48px\" fill=\"#5f6368\">\n <path d=\"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z\" />\n </svg>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n@if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onDelete(detail())\">删除</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(detail())\">保存</button>\n </div>\n}\n<mat-divider></mat-divider>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogClose } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { last, remove } from 'lodash';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DetailItemComponent } from '../detail-item/detail-item.component';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CourseDetail } from '../../interfaces';\nimport { CourseService } from '../../services';\n\n@Component({\n selector: 'rolatech-course-details-dialog',\n templateUrl: './course-details-dialog.component.html',\n styleUrls: ['./course-details-dialog.component.scss'],\n standalone: true,\n imports: [\n MatIconModule,\n MatDividerModule,\n FormsModule,\n MatStepperModule,\n DetailItemComponent,\n MatButtonModule,\n MatDialogClose,\n ],\n})\nexport class CourseDetailsDialogComponent {\n courseId!: string;\n details: CourseDetail[] = [];\n constructor(\n private dialogRef: MatDialogRef<CourseDetailsDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private courseService: CourseService,\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n ) {\n this.courseId = data.courseId;\n }\n close() {\n this.dialogRef.close();\n }\n addDetail() {\n this.courseService\n .addDetail(this.courseId, {\n title: '',\n description: '',\n content: '',\n media: [],\n })\n .subscribe({\n next: (res: any) => {\n const detail = res.data;\n this.details.push({\n id: detail.id,\n title: '',\n description: '',\n content: '',\n media: [],\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onDetailMediaUpload(event: any) {}\n onDetailMediaDelete(event: any) {}\n onDetailSave(event: any) {}\n onDetailDelete(detail: CourseDetail) {\n this.courseService.deleteDetail(this.courseId, detail.id).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.data);\n remove(this.details, {\n id: detail.id,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n}\n","<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden mt-3 overflow-y-auto\">\n <form #detailForm=\"ngForm\" class=\"p-3\">\n <ng-template matStepLabel>详情</ng-template>\n @for (item of details; track item) {\n <rolatech-detail-item\n [detail]=\"item\"\n (upload)=\"onDetailMediaUpload($event)\"\n (deleteMedia)=\"onDetailMediaDelete($event)\"\n (save)=\"onDetailSave($event)\"\n (delete)=\"onDetailDelete($event)\"\n ></rolatech-detail-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addDetail()\">\n <mat-icon>add</mat-icon>\n <span>增加详情</span>\n </button>\n </div>\n </form>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-end items-center px-5\">\n <button mat-button [mat-dialog-close]=\"true\" cdkFocusInitial>保存</button>\n </div>\n</div>\n","import { Component, Inject, OnInit, viewChild } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA, MatDialogClose } from '@angular/material/dialog';\nimport { MatStepper, MatStepperModule } from '@angular/material/stepper';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { findLastIndex, remove } from 'lodash';\nimport { ScheduleItemComponent } from '../schedule-item/schedule-item.component';\nimport { PricingItemComponent } from '../pricing-item/pricing-item.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DetailItemComponent } from '../detail-item/detail-item.component';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { ImagePreviewDialogComponent, MediaListComponent, MediaListItemComponent } from '@rolatech/angular-components';\nimport { ScheduleDate, CourseDetail, CourseCategory } from '../../interfaces';\nimport { CategoryService, CourseService } from '../../services';\n\n@Component({\n selector: 'rolatech-course-edit-dialog',\n templateUrl: './course-edit-dialog.component.html',\n styleUrls: ['./course-edit-dialog.component.scss'],\n standalone: true,\n imports: [\n MatIconModule,\n MatDividerModule,\n MatStepperModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n MatSelectModule,\n MatOptionModule,\n MediaListComponent,\n MediaListItemComponent,\n DetailItemComponent,\n MatButtonModule,\n PricingItemComponent,\n ScheduleItemComponent,\n MatDialogClose,\n ],\n})\nexport class CourseEditDialogComponent implements OnInit {\n course: any;\n isUploading = false;\n details: any;\n pricing: any;\n schedule: any;\n courseType = [\n {\n key: 'ONLINE',\n value: '线上',\n },\n {\n key: 'OFFLINE',\n value: '线下',\n },\n {\n key: 'MIXED',\n value: '混合',\n },\n ];\n selectedCategoyIds!: string[];\n categories!: CourseCategory[];\n selectedCategory!: CourseCategory;\n classrooms: any;\n date = ScheduleDate;\n lastStepper = false;\n firstStepper = true;\n stepper = viewChild.required(MatStepper);\n\n constructor(\n private dialogRef: MatDialogRef<CourseEditDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private categoryService: CategoryService,\n private courseService: CourseService,\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n ) {\n this.course = data.course;\n this.classrooms = data.classrooms;\n }\n\n ngOnInit(): void {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n close() {\n this.dialogRef.close();\n }\n compareFn(o1: any, o2: any) {\n return o1.id === o2.id;\n }\n addDetail() {\n if (!this.course.details) {\n this.course.details = [];\n }\n this.courseService\n .addDetail(this.course.id, {\n title: '',\n description: '',\n content: '',\n media: [],\n })\n .subscribe({\n next: (res: any) => {\n const detail = res.data;\n this.course.details.push({\n id: detail.id,\n title: '',\n description: '',\n content: '',\n media: [],\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n addSchedule() {\n if (!this.course.schedule) {\n this.course.schedule = [];\n }\n this.course.schedule.push({\n title: '',\n content: '',\n });\n }\n addPricing() {\n if (!this.course.pricing) {\n this.course.pricing = [];\n }\n this.course.pricing.push({\n min: 0,\n max: 0,\n total: 0,\n });\n }\n onSelectionChange(event: any) {\n this.selectedCategoyIds = event.value;\n }\n onStepperChange(event: any) {\n this.lastStepper = event.selectedIndex === 3;\n this.firstStepper = event.selectedIndex === 0;\n }\n previous() {\n this.stepper().previous();\n }\n next() {\n this.stepper().next();\n }\n onDetailMediaUpload(event: any) {}\n onDetailMediaDelete(event: any) {}\n onDetailSave(event: any) {}\n onDetailDelete(detail: CourseDetail) {\n this.courseService.deleteDetail(this.course.id, detail.id).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.message);\n remove(this.details, {\n id: detail.id,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.course.media,\n selected: i,\n },\n });\n }\n onUpload(event: any) {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n if (this.course.media) {\n (this.course.media as any).push({\n url: reader.result,\n alt: 'upload image',\n });\n } else {\n this.course.media = [];\n (this.course.media as any).push({\n url: reader.result,\n alt: 'upload image',\n });\n }\n\n this.isUploading = true;\n const formData = new FormData();\n formData.append('file', file);\n\n this.courseService.upload(formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n const index = findLastIndex(this.course.media);\n // Replace item at index using native splice\n this.course.media.splice(index, 1, res.data);\n },\n error: (e: any) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n };\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n}\n","<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden mt-3 overflow-y-auto\">\n <mat-stepper #stepper (selectionChange)=\"onStepperChange($event)\">\n <mat-step [editable]=\"true\">\n <form #infoForm=\"ngForm\" class=\"py-3\">\n <ng-template matStepLabel>基本信息</ng-template>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 课程名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"course.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 课程描述 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"course.description\"\n name=\"description\"\n required\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" ngModelGroup=\"categories\">\n <mat-label>分类</mat-label>\n <mat-select\n multiple\n name=\"id\"\n [compareWith]=\"compareFn\"\n [(ngModel)]=\"course.categories\"\n #select=\"matSelect\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @for (item of categories; track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>类型</mat-label>\n <mat-select name=\"type\" [(ngModel)]=\"course.type\">\n @for (item of courseType; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.value }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (course.type.toString() !== 'ONLINE') {\n <mat-form-field appearance=\"fill\" ngModelGroup=\"classroom\">\n <mat-label>教室</mat-label>\n <mat-select [(ngModel)]=\"course.classroom\" name=\"id\">\n @for (classroom of classrooms; track classroom) {\n <mat-option [value]=\"classroom.id\">\n <div class=\"flex gap-3\">\n <span>{{ classroom.name }}</span>\n <span> {{ classroom.address }}</span>\n </div>\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n </div>\n <div>\n <div class=\"py-3\">\n <h2>图片信息</h2>\n </div>\n <rolatech-media-list (upload)=\"onUpload($event)\" [isUploading]=\"isUploading\">\n @for (item of course.media; track item; let i = $index) {\n <rolatech-media-list-item [media]=\"item\" (mediaItemClick)=\"onImageClick(i)\"></rolatech-media-list-item>\n }\n </rolatech-media-list>\n </div>\n </form>\n </mat-step>\n <mat-step [editable]=\"true\">\n <form #detailForm=\"ngForm\" class=\"py-3\">\n <ng-template matStepLabel>详情</ng-template>\n @for (item of course.details; track item) {\n <rolatech-detail-item\n [detail]=\"item\"\n (upload)=\"onDetailMediaUpload($event)\"\n (deleteMedia)=\"onDetailMediaDelete($event)\"\n (save)=\"onDetailSave($event)\"\n (delete)=\"onDetailDelete($event)\"\n ></rolatech-detail-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addDetail()\">\n <mat-icon>add</mat-icon>\n <span>增加详情</span>\n </button>\n </div>\n </form>\n </mat-step>\n <mat-step [editable]=\"true\">\n <form #pricingForm=\"ngForm\" class=\"py-3\">\n <ng-template matStepLabel>价格</ng-template>\n <div>\n @for (item of course.pricing; track item) {\n <rolatech-pricing-item [pricing]=\"item\"> </rolatech-pricing-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addPricing()\">\n <mat-icon>add</mat-icon>\n <span>增加价格</span>\n </button>\n </div>\n </div>\n </form>\n </mat-step>\n <mat-step>\n <form #scheduleForm=\"ngForm\">\n <ng-template matStepLabel>课表</ng-template>\n <div class=\"flex flex-col\">\n @for (item of course.schedule; track item) {\n <rolatech-schedule-item [value]=\"item\"></rolatech-schedule-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addSchedule()\">\n <mat-icon>add</mat-icon>\n <span>增加课表</span>\n </button>\n </div>\n </div>\n </form>\n </mat-step>\n </mat-stepper>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-end items-center px-5\">\n @if (!firstStepper) {\n <button mat-button mat-button (click)=\"previous()\">上一步</button>\n }\n @if (!lastStepper) {\n <button mat-button (click)=\"next()\">下一步</button>\n }\n @if (lastStepper) {\n <button mat-button [mat-dialog-close]=\"course\" cdkFocusInitial>保存</button>\n }\n </div>\n</div>\n","import { ViewportScroller } from '@angular/common';\nimport { Component, ElementRef, inject, input, OnInit, PLATFORM_ID } from '@angular/core';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\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: [ThumbnailComponent],\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-[--rt-brand-color] 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 <rolatech-thumbnail\n [src]=\"item.url\"\n size=\"small\"\n mode=\"full\"\n [width]=\"item.width\"\n [height]=\"item.height\"\n ></rolatech-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\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]=\"['/', '@' + 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-[--rt-brand-color]\"></div>\n }\n <div class=\"flex items-center text-lg font-bold cursor-pointer\">\n <a [routerLink]=\"['/', '@' + username()]\">\n <span>{{ name() }}</span>\n </a>\n <mat-icon color=\"primary\">verified</mat-icon>\n </div>\n </div>\n</div>\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, RichItemComponent, RichViewComponent } from '@rolatech/angular-components';\nimport { CourseItemComponent } from '../../../components/course-item/course-item.component';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, CourseItemComponent, RichViewComponent, RichItemComponent],\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 md: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-[--rt-base-background] 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 md:w-1/4 aspect-video bg-[--rt-base-background] rounded-lg\"></div>\n <div class=\"w-3/5 md:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n <rolatech-rich-view list>\n @for (item of courses; track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['../../', item.id]\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"item.pricing[0].total / 100\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n }\n</div>\n","import { Component, effect, 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, ContainerComponent, 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 ContainerComponent,\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 authenticated = this.authService.authenticated;\n instructorName = '';\n username = '';\n inWishList = false;\n purchased = false;\n sections: CourseSection[] = [];\n type = CourseSectionLectureContentType;\n constructor() {\n super();\n effect(() => {\n if (this.authenticated()) {\n this.findPurchasedByCourseId();\n this.findWishlistBy();\n }\n });\n }\n ngOnInit(): void {\n this.findOne();\n this.findSections();\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 if (this.authenticated()) {\n if (this.inWishList) {\n this.removeFromWishlist();\n } else {\n this.addToWishlist();\n }\n } else {\n this.snackBarService.open('请先登录');\n }\n }\n checkout(e: any) {\n if (this.authenticated()) {\n this.router.navigateByUrl(`/cart/checkout/courses/${this.id}`);\n } else {\n this.snackBarService.open('请先登录');\n }\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.courseService.findWishlistBy(this.id).subscribe({\n next: (res: any) => {\n this.inWishList = res.data;\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-container>\n <div class=\"flex flex-col-reverse gap-3 md:flex-row w-full justify-between\">\n <div class=\"md: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 class=\"md:px-3\">\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-container>\n}\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, ContainerComponent, BaseComponent, ListComponent } from '@rolatech/angular-components';\n\n@Component({\n standalone: true,\n imports: [AngularCommonModule, AngularComponentsModule, ContainerComponent, ListComponent],\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-container>\n <div class=\"flex flex-col md:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 md:h-auto min-w-[240px]\">\n <div class=\"hidden md:block text-2xl font-medium py-3 md:px-1 px-3\">分类</div>\n <div\n class=\"flex flex-row md:flex-col md:h-full items-center md:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center md:mb-1 mr-2 md:mr-0\"\n routerLinkActive=\"course-layout-active\"\n routerLink=\"/courses\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">全部</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center mr-2 md:mr-0 md:mb-1\"\n routerLinkActive=\"course-layout-active\"\n [routerLink]=\"['../courses/categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <!-- <rolatech-list>\n <router-outlet></router-outlet>\n </rolatech-list> -->\n </rolatech-container>\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, OnDestroy, OnInit, PLATFORM_ID, effect, 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 authenticated = this.authService.authenticated;\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 constructor() {\n effect(() => {\n if (this.authenticated()) {\n this.findPurchasedByCourseId();\n }\n });\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 });\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 } 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 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(`/cart/checkout/courses/${this.courseId}`);\n }\n}\n","<div class=\"flex lg:flex-row flex-col justify-between w-full mt-2 lg:mt-4\">\n <div class=\"lg:w-[70%] flex flex-col items-start justify-center px-4 lg: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 class=\"hidden lg:block\">\n <rolatech-comments [itemId]=\"lectureId\"></rolatech-comments>\n </div>\n }\n </div>\n </div>\n <div class=\"lg:w-[30%] px-4 lg:px-0 lg: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 class=\"lg:hidden block px-4 lg:px-6\">\n <rolatech-comments [itemId]=\"lectureId\"></rolatech-comments>\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 { 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 loadComponent: () => import('./course-index/course-index.component').then((x) => x.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","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-course-manage-content',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './course-manage-content.component.html',\n styleUrl: './course-manage-content.component.scss',\n})\nexport class CourseManageContentComponent {}\n","<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute } from '@angular/router';\nimport { findIndex, last, remove } from 'lodash';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ConfirmationDialogComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { DetailItemComponent } from '../../../components';\nimport { CourseDetail, CourseStatus, CourseType } from '../../../interfaces';\nimport { CourseService } from '../../../services';\n\n@Component({\n selector: 'rolatech-course-manage-details',\n templateUrl: './course-manage-details.component.html',\n styleUrls: ['./course-manage-details.component.scss'],\n standalone: true,\n imports: [DetailItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, CourseManageContentComponent],\n})\nexport class CourseManageDetailsComponent implements OnInit {\n route = inject(ActivatedRoute);\n courseService = inject(CourseService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n\n id: string;\n isLoading = false;\n isUploading = false;\n details: CourseDetail[] = [];\n status = CourseStatus;\n courseType: any = CourseType;\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.find();\n }\n find() {\n this.courseService.findDetails(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.details = res.data;\n }\n },\n });\n }\n addDetail() {\n if (!this.details) {\n this.details = [];\n }\n this.courseService\n .addDetail(this.id, {\n title: '',\n description: '',\n content: '',\n media: [],\n })\n .subscribe({\n next: (res: any) => {\n const detail = res.data;\n this.details.push({\n id: detail.id,\n title: '',\n description: '',\n content: '',\n media: [],\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onDetailMediaUpload(event: any) {\n const detailId = event.id;\n const index = findIndex(this.details, (item) => item.id === detailId);\n const file = event.data.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n if (!this.details[index].media) {\n this.details[index].media = [];\n }\n (this.details[index].media as any).push({\n url: reader.result,\n alt: 'upload image',\n });\n this.details[index].isUploading = true;\n const formData = new FormData();\n formData.append('file', file);\n this.courseService.uploadDetailMedia(this.id, detailId, formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n this.details[index].isUploading = false;\n const tmp = this.details[index].media as any;\n delete res.data.productDetail;\n this.details[index].media[this.details[index].media.length - 1] = res.data;\n },\n error: (e) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n };\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n onDetailMediaDelete(event: any) {\n const detailId = event.id;\n const mediaId = event.media.id;\n this.courseService.deleteDetailMedia(this.id, detailId, mediaId).subscribe({\n next: (res: any) => {\n const detail: any = this.details.find((item) => item.id === detailId);\n remove(detail.media, {\n id: mediaId,\n });\n },\n });\n }\n onDetailSave(detail: CourseDetail) {\n delete detail.isUploading;\n this.courseService.updateDetail(this.id, detail.id, detail).subscribe({\n next: (res: any) => {\n this.snackBar.open('保存成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onDetailDelete(detail: CourseDetail) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除详情',\n message: '确定删除此详情吗?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.courseService.deleteDetail(this.id, detail.id).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.data);\n remove(this.details, {\n id: detail.id,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"详情\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (detail of details; track detail) {\n <rolatech-detail-item\n [detail]=\"detail\"\n (upload)=\"onDetailMediaUpload($event)\"\n (deleteMedia)=\"onDetailMediaDelete($event)\"\n (save)=\"onDetailSave($event)\"\n (delete)=\"onDetailDelete($event)\"\n [actions]=\"true\"\n ></rolatech-detail-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addDetail()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>添加详情</span>\n </button>\n </div>\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { remove } from 'lodash';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BaseComponent, ConfirmationDialogComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { ScheduleItemComponent, CourseScheduleAddDialogComponent, CourseScheduleDialogComponent } from '../../../components';\nimport { Schedule, CourseStatus, CourseType } from '../../../interfaces';\nimport { CourseService } from '../../../services';\n\n@Component({\n selector: 'rolatech-course-manage-schedule',\n templateUrl: './course-manage-schedule.component.html',\n styleUrls: ['./course-manage-schedule.component.scss'],\n standalone: true,\n imports: [ScheduleItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, CourseManageContentComponent],\n})\nexport class CourseManageScheduleComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n isLoading = false;\n schedule: Schedule[] = [];\n status = CourseStatus;\n courseType: any = CourseType;\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n }\n find() {\n this.courseService.findSchedule(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.schedule = res.data;\n }\n },\n });\n }\n addSchedule() {\n const options = {\n width: '500px',\n title: '添加课表',\n cancelText: '取消',\n confirmText: '确认',\n component: CourseScheduleAddDialogComponent,\n data: {},\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (schedule) => {\n if (schedule) {\n this.courseService.addSchedule(this.id, schedule).subscribe({\n next: (res) => {\n this.schedule.push(res.data);\n this.snackBarService.open('添加成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n editSchedule() {\n const options = {\n width: '500px',\n height: '90%',\n title: '编辑课表',\n cancelText: '取消',\n confirmText: '确认',\n component: ScheduleItemComponent,\n data: {\n courseId: this.id,\n schedule: this.schedule,\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (result) => {\n if (result) {\n this.courseService.addSchedule(this.id, { schedule: result }).subscribe({\n next: (res) => {\n this.snackBarService.open('编辑成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n onScheduleSave(schedule: Schedule | any) {\n this.courseService.updateSchedule(this.id, schedule.id, schedule).subscribe({\n next: (res: any) => {\n this.snackBarService.open('保存成功');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n onScheduleDelete(schedule: Schedule | any) {\n const options = {\n title: '删除课表',\n message: '确定删除此课表吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((result) => {\n if (result) {\n this.courseService.deleteSchedule(this.id, schedule.id).subscribe({\n next: (res: any) => {\n remove(this.schedule, {\n id: schedule.id,\n });\n this.snackBarService.open(res.data);\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"课程表\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (item of schedule; track item) {\n <rolatech-schedule-item\n [value]=\"item\"\n [actions]=\"true\"\n (save)=\"onScheduleSave($event)\"\n (delete)=\"onScheduleDelete($event)\"\n >\n </rolatech-schedule-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addSchedule()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>增加课表</span>\n </button>\n </div>\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { remove } from 'lodash';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BaseComponent, ConfirmationDialogComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { PricingItemComponent, CoursePricingDialogComponent, CoursePricingAddDialogComponent } from '../../../components';\nimport { Pricing, CourseStatus, CourseType } from '../../../interfaces';\nimport { CourseService } from '../../../services';\n\n@Component({\n selector: 'rolatech-course-manage-pricing',\n templateUrl: './course-manage-pricing.component.html',\n styleUrls: ['./course-manage-pricing.component.scss'],\n standalone: true,\n imports: [PricingItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, CourseManageContentComponent],\n})\nexport class CourseManagePricingComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n isLoading = false;\n pricing: Pricing[] = [];\n status = CourseStatus;\n courseType: any = CourseType;\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n }\n find() {\n this.courseService.findPricing(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.pricing = res.data;\n }\n },\n });\n }\n editPricing() {\n const options = {\n width: '500px',\n title: '编辑价格',\n height: '90%',\n cancelText: '取消',\n confirmText: '确认',\n component: CoursePricingAddDialogComponent,\n data: {\n courseId: this.id,\n pricing: this.pricing,\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((result) => {\n if (result) {\n this.courseService.addPricing(this.id, { pricing: result }).subscribe({\n next: (res) => {\n this.snackBarService.open('编辑成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n });\n }\n addPricing() {\n const options = {\n width: '500px',\n title: '添加价格',\n cancelText: '取消',\n confirmText: '确认',\n component: CoursePricingAddDialogComponent,\n data: {},\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((pricing) => {\n if (pricing) {\n this.courseService.addPricing(this.id, { ...pricing, total: pricing.total * 100 }).subscribe({\n next: (res) => {\n this.pricing.push(res.data);\n this.snackBarService.open('添加成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n });\n }\n\n onPricingSave(pricing: Pricing | any) {\n this.courseService.updatePricing(this.id, pricing.id, pricing).subscribe({\n next: (res: any) => {\n this.snackBarService.open('保存成功');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n onPricingDelete(pricing: Pricing | any) {\n const options = {\n title: '删除价格',\n message: '确定删除此价格吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((result) => {\n if (result) {\n this.courseService.deletePricing(this.id, pricing.id).subscribe({\n next: (res: any) => {\n remove(this.pricing, {\n id: pricing.id,\n });\n this.snackBarService.open(res.data);\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"价格\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (item of pricing; track item) {\n <rolatech-pricing-item\n [pricing]=\"item\"\n [actions]=\"true\"\n (save)=\"onPricingSave($event)\"\n (delete)=\"onPricingDelete($event)\"\n >\n </rolatech-pricing-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addPricing()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>添加价格</span>\n </button>\n </div>\n</rolatech-course-manage-content>\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 BookingService extends BaseService {\n override init() {\n this.endpoint = 'partners/bookings';\n super.init();\n }\n items(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/items`, {\n params: options,\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 InstructorService extends BaseService {\n override init() {\n this.endpoint = 'instructors';\n super.init();\n }\n findMyClassrooms(options: any) {\n return this.http.get<any>(`${this.actionUrl}/classrooms/me`, {\n params: options,\n withCredentials: true,\n });\n }\n}\n","import { Component, OnInit, inject } from '@angular/core';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { clone } from 'lodash';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { Course, CourseCategory, CourseStatus } from '../../../interfaces';\nimport { CategoryService, CourseService } from '../../../services';\nimport { BookingService } from '../../../services/booking.service';\nimport { InstructorService } from '../../../services/instructor.service';\n\n@Component({\n selector: 'rolatech-course-manage-info',\n templateUrl: './course-manage-info.component.html',\n styleUrls: ['./course-manage-info.component.scss'],\n standalone: true,\n imports: [\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n ToolbarComponent,\n CourseManageContentComponent,\n ],\n})\nexport class CourseManageInfoComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n categoryService = inject(CategoryService);\n instructorService = inject(InstructorService);\n bookingService = inject(BookingService);\n\n isLoading = false;\n course!: Course;\n status = CourseStatus;\n // courseType: any = CourseType;\n selectedCategoyIds!: string[];\n selectedClassroom: any;\n categories!: CourseCategory[];\n classrooms: any;\n bookedClassrooms: any;\n courseType = [\n {\n key: 'ONLINE',\n value: '线上',\n },\n {\n key: 'OFFLINE',\n value: '线下',\n },\n {\n key: 'MIXED',\n value: '混合',\n },\n ];\n\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n this.findClassrooms();\n this.findBookedClassrooms();\n }\n findBookedClassrooms() {\n this.bookingService.items({ status: 'paid' }).subscribe({\n next: (res: any) => {\n this.bookedClassrooms = res.data;\n },\n });\n }\n\n findClassrooms() {\n this.instructorService.findMyClassrooms({}).subscribe({\n next: (res) => {\n this.classrooms = res.data;\n },\n });\n }\n find() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.course = res.data;\n },\n });\n }\n compareFn(o1: CourseCategory, o2: CourseCategory) {\n return o1.id === o2?.id;\n }\n compareClassroom(o1: any, o2: any) {\n if (o1.room) {\n return (\n o1.latitude === o2?.latitude &&\n o1.longitude === o2?.longitude &&\n o1.room === o2.room &&\n o1.startAt === o2.startAt &&\n o1.endAt === o2.endAt\n );\n } else {\n return o1.latitude === o2?.latitude && o1.longitude === o2?.longitude;\n }\n }\n onSelectionChange(event: any) {\n this.selectedCategoyIds = event.value;\n }\n onClassroomSelected(event: any) {\n this.selectedClassroom = event.value;\n }\n update() {\n const { name, description, categories, type, classroom } = this.course;\n const finalClassroom = clone(classroom);\n finalClassroom.address = classroom.room ? classroom.address + ' ' + classroom.room + '室' : classroom.address;\n const data = {\n name,\n description,\n categories,\n type,\n classroom: finalClassroom,\n };\n this.courseService.update(this.id, data).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n // this.router.navigate([`../${res.data.id}`], { relativeTo: this.route });\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"基本信息\" class=\"hidden md:block\" divider></rolatech-toolbar>\n @if (course) {\n <div class=\"flex flex-col\">\n <form #courseForm=\"ngForm\" (ngSubmit)=\"update()\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 课程名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"course.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 课程描述 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"course.description\"\n name=\"description\"\n required\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" ngModelGroup=\"categories\" required>\n <mat-label>分类</mat-label>\n <mat-select\n multiple\n name=\"id\"\n [compareWith]=\"compareFn\"\n [(ngModel)]=\"course.categories\"\n #select=\"matSelect\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @for (item of categories; track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>类型</mat-label>\n <mat-select name=\"type\" [(ngModel)]=\"course.type\" required>\n @for (item of courseType; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.value }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (course.type && course.type.toString() !== 'ONLINE') {\n <mat-form-field appearance=\"fill\" ngModelGroup=\"classroom\">\n <mat-label>教室</mat-label>\n <mat-select\n name=\"id\"\n [(ngModel)]=\"course.classroom\"\n [compareWith]=\"compareClassroom\"\n (selectionChange)=\"onClassroomSelected($event)\"\n required\n >\n <mat-optgroup label=\"自有教室\">\n @for (classroom of classrooms; track classroom) {\n <mat-option [value]=\"classroom\">\n <div class=\"flex gap-3\">\n <span>{{ classroom.name }}</span>\n <span> {{ classroom.address }}</span>\n </div>\n </mat-option>\n }\n </mat-optgroup>\n <mat-optgroup label=\"已购教室\">\n @for (item of bookedClassrooms; track item) {\n <mat-option [value]=\"item\">\n <div class=\"flex flex-col py-3\">\n <span class=\"font-bold\"> {{ item.address }} {{ item.room }}室</span>\n <span class=\"text-md\"> {{ item.startAt }} - {{ item.endAt }}</span>\n </div>\n </mat-option>\n }\n </mat-optgroup>\n </mat-select>\n </mat-form-field>\n }\n </form>\n </div>\n <div>\n <button mat-flat-button type=\"primary\" (click)=\"update()\">保存</button>\n </div>\n }\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute } from '@angular/router';\nimport { findLastIndex } from 'lodash';\n\nimport {\n ConfirmationDialogComponent,\n ImagePreviewDialogComponent,\n MediaListComponent,\n MediaListItemComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { CourseService } from '../../../services';\nimport { Media, CourseStatus, CourseType } from '../../../interfaces';\n\nconst SIZE = 10 * 1024 * 1024; // file slice size 10MB\n\n@Component({\n selector: 'rolatech-course-manage-media',\n templateUrl: './course-manage-media.component.html',\n styleUrls: ['./course-manage-media.component.scss'],\n standalone: true,\n imports: [MediaListComponent, MediaListItemComponent, ToolbarComponent, CourseManageContentComponent],\n})\nexport class CourseManageMediaComponent implements OnInit {\n route = inject(ActivatedRoute);\n courseService = inject(CourseService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n id: string;\n isUploading = false;\n isLoading = false;\n media: Media[] = [];\n status = CourseStatus;\n courseType: any = CourseType;\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.find();\n }\n find() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.media = res.data.media || [];\n },\n });\n }\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\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 private createFileChunk(file: any, size = SIZE) {\n const fileChunkList: any = [];\n let cur = 0;\n while (cur < file.size) {\n fileChunkList.push({ file: file.slice(cur, cur + size) });\n cur += size;\n }\n return fileChunkList;\n }\n\n onUploadMedia2(event: any) {\n const file = event.target.files[0];\n const reader = new FileReader();\n reader.onload = (e) => {};\n\n const fileChunkList = this.createFileChunk(file);\n fileChunkList.forEach((item) => {});\n }\n onUploadMedia(event: any) {\n const file = event.target.files[0];\n // 5MB * 1024 * 1024 = 5242880\n // if (file?.size > 5242880) {\n // this.snackBar.open('尺寸过大, 请修改后上传');\n // this.isUploading = false;\n // return;\n // }\n\n if (file) {\n const reader = new FileReader();\n const formData = new FormData();\n formData.append('file', file);\n\n reader.readAsDataURL(file);\n reader.onload = () => {\n const img: any = new Image();\n img.onload = () => {\n this.media.push({\n url: img.src,\n alt: 'upload image',\n width: img.width,\n height: img.height,\n });\n\n this.isUploading = true;\n };\n img.src = reader.result; // This is the data URL\n };\n this.courseService.uploadMedia(this.id, formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n const index = findLastIndex(this.media);\n // Replace item at index using native splice\n this.media.splice(index, 1, res.data);\n },\n error: (e: any) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n onMediaDelete(item: any) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除图片',\n message: '确定删除这张课程图片吗?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.courseService.deleteMedia(this.id, item.id).subscribe({\n next: (res) => {\n this.media = this.media.filter((m) => m.id !== item.id);\n this.snackBar.open('删除成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"图片信息\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div>\n <p>*图片文件大小限制在5MB以下*</p>\n <rolatech-media-list (upload)=\"onUploadMedia($event)\" [isUploading]=\"isUploading\">\n @for (item of media; track item; let i = $index) {\n <rolatech-media-list-item\n [media]=\"item\"\n (mediaItemClick)=\"onImageClick(i)\"\n (deleteMedia)=\"onMediaDelete(item)\"\n ></rolatech-media-list-item>\n }\n </rolatech-media-list>\n </div>\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { Observable, Observer, concatMap, from, map, take } from 'rxjs';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { CourseService } from '../../../services';\nimport {\n CourseSectionItemComponent,\n CourseSectionLectureItemComponent,\n CourseSectionLectureVideoDialogComponent,\n} from '../../../components';\nimport { CourseSection } from '../../../interfaces';\n\n@Component({\n selector: 'rolatech-course-manage-section',\n templateUrl: './course-manage-section.component.html',\n styleUrls: ['./course-manage-section.component.scss'],\n standalone: true,\n imports: [\n CourseSectionItemComponent,\n CourseSectionLectureItemComponent,\n MatButtonModule,\n MatIconModule,\n MatProgressBarModule,\n ToolbarComponent,\n CourseManageContentComponent,\n ],\n})\nexport class CourseManageSectionComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n sections: CourseSection[] = [];\n hasUnsaved = false;\n editId = '';\n lectureEditId = '';\n chunkSize = 5 * 1024 * 1024; // 切片大小\n fileIndex = 0; // 当前正在被遍历的文件下标\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n }\n find() {\n this.courseService.getCourseSection(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.sections = res.data;\n }\n },\n });\n }\n addSection() {\n const section = {\n title: '',\n description: '',\n };\n this.courseService.addCourseSection(this.id, section).subscribe({\n next: (res: any) => {\n this.sections.push(res.data);\n this.editId = res.data.id;\n },\n });\n this.hasUnsaved = false;\n }\n onCancel(event: any) {\n this.sections.pop();\n this.hasUnsaved = false;\n }\n onSectionSave(event: any) {\n const { id } = event;\n this.courseService.updateCourseSection(id, event).subscribe({\n next: (res) => {\n this.hasUnsaved = false;\n this.snackBarService.open('保存成功');\n },\n });\n this.hasUnsaved = false;\n }\n onSectionEdit(event: any) {\n this.editId = event.id;\n // this.editIndex = this.sections.find((item: any) => item.id === event.id);\n }\n onSectionDelete(event: any) {\n const { id } = event;\n\n const options = {\n title: '确认删除吗',\n message: '删除这个章节吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n const data = {\n name: res,\n };\n this.courseService.deleteCourseSection(id).subscribe({\n next: (res) => {\n this.sections.pop();\n\n this.hasUnsaved = false;\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n addLecture(section: any) {\n const lecture = {\n title: '',\n type: 'VIDEO',\n };\n this.courseService.addLecture(section.id, lecture).subscribe({\n next: (res: any) => {\n this.lectureEditId = res.data.id;\n if (section.lectures) {\n section.lectures.push(res.data);\n } else {\n const lectures: any = [];\n lectures.push(res.data);\n section.lectures = lectures;\n }\n },\n });\n }\n onAddLecture(event: any) {}\n onLectureSave(lecture: any) {\n this.courseService.updateLecture(lecture.id, lecture).subscribe({\n next: (res: any) => {\n this.snackBarService.open('保存成功');\n },\n });\n }\n onLectureEdit(lecture: any) {}\n onMediaEdit(lecture: any, video: any) {\n const { id } = lecture;\n const options = {\n title: lecture.title,\n cancelText: '取消',\n confirmText: '保存',\n data: lecture,\n width: '80vw',\n height: '100%',\n component: CourseSectionLectureVideoDialogComponent,\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n // this.courseService.deleteLecture(id).subscribe({\n // next: (res) => {},\n // error: (error) => {\n // this.snackBarService.open(error.message);\n // },\n // });\n }\n },\n });\n }\n onLectureDelete(section: any, lecture: any) {\n const { id } = lecture;\n const options = {\n title: '确认删除吗',\n message: '删除这一小节吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.courseService.deleteLecture(id).subscribe({\n next: (res) => {\n const index = section.lectures.findIndex((item: any) => item.id === id);\n section.lectures.splice(index, 1);\n this.hasUnsaved = false;\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n onMediaUploadInit(lecture: any, event: any) {\n const file = event.data.target.files[0];\n\n if (!file) {\n return;\n }\n const item = {\n url: URL.createObjectURL(file),\n };\n lecture.item = item;\n lecture.isUploading = true;\n lecture.item.progress = 0;\n\n const reader = new FileReader();\n if (reader.readyState === FileReader.EMPTY) {\n reader.onload = async (e: any) => {\n const fileBuffer = e.target.result;\n crypto.subtle.digest('SHA-256', fileBuffer).then((res) => {\n const hashArray = Array.from(new Uint8Array(res));\n const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');\n const data: any = { hash: hashHex, filename: file.name, fileType: file.type };\n this.courseService.uploadVideoInit(lecture.id, data).subscribe({\n next: (res: any) => {\n this.uploadPart(lecture, res.data.uploadId, file);\n },\n error: (e) => {},\n });\n });\n };\n reader.onerror = (error) => {};\n reader.readAsArrayBuffer(file);\n }\n }\n uploadFile(lecture: any, file: any, index: number, uploadId: string) {\n const reader = new FileReader();\n return new Observable((observer: Observer<FormData>) => {\n reader.readAsArrayBuffer(file);\n reader.onload = (e: any) => {\n const fileBuffer = e.target.result;\n crypto.subtle.digest('SHA-256', fileBuffer).then((res) => {\n const hashArray = Array.from(new Uint8Array(res));\n const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');\n const formData: any = new FormData();\n formData.append('file', file);\n formData.append('uploadId', uploadId);\n formData.append('number', index + 1);\n formData.append('hash', hashHex);\n\n this.courseService.uploadVideoPartsToLecture(lecture.id, formData).subscribe({\n next: (res: any) => {\n observer.next(res);\n observer.complete();\n },\n error: (e) => {\n this.snackBarService.open('上传失败: ' + e.message);\n },\n });\n });\n };\n reader.onerror = (error) => {\n this.snackBarService.open('上传失败: ' + error);\n };\n });\n }\n uploadPart(lecture: any, uploadId: string, file: any) {\n let uploadedCount = 0;\n const fileChunkList = this.createFileChunk(file);\n const numberOfChunks = fileChunkList.length;\n from(fileChunkList)\n .pipe(\n concatMap((val: any, index) => this.uploadFile(lecture, val.file, index, uploadId)),\n take(numberOfChunks),\n )\n .subscribe((res) => {\n uploadedCount++;\n const p = ((uploadedCount / numberOfChunks) * 100).toFixed(0);\n lecture.item.progress = parseFloat(p);\n if (uploadedCount === numberOfChunks) {\n this.completePartUpload(lecture, { uploadId });\n }\n });\n }\n completePartUpload(lecture: any, data: any) {\n data.duration = lecture.item.duration;\n this.courseService.completePartUpload(lecture.id, data).subscribe({\n next: (res: any) => {\n lecture.isUploading = false;\n lecture.item.id = res.data.id;\n },\n error: (e) => {\n this.snackBarService.open('上传失败: ' + e.message);\n },\n });\n }\n\n onMediaUpload(lecture: any, event: any) {\n const lectureId = event.id;\n const file = event.data.target.files[0];\n if (!file) {\n return;\n }\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n const formData = new FormData();\n formData.append('file', file);\n this.courseService.uploadVideoToLecture(lectureId, formData).subscribe({\n next: (res: any) => {\n lecture.isUploading = false;\n lecture.item = res.data;\n },\n error: (e) => {\n lecture.isUploading = false;\n this.snackBarService.open('上传失败: ' + e.message);\n },\n });\n };\n reader.onerror = (error) => {};\n }\n onMediaDelete(lecture: any, event: any) {\n // lecture.item = null;\n const { id } = event;\n const options = {\n title: '确认删除吗',\n message: '删除这个视频吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.courseService.deleteLectureVideo(id).subscribe({\n next: (res) => {\n lecture.item = null;\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n createFileChunk(file: any, size = this.chunkSize) {\n const fileChunkList: any = [];\n let count = 0;\n while (count < file.size) {\n fileChunkList.push({\n file: file.slice(count, count + size),\n });\n count += size;\n }\n return fileChunkList;\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"章节\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (section of sections; track $index) {\n <div class=\"bg-[--rt-raised-background] p-2 mb-2 rounded-lg\">\n <rolatech-course-section-item\n [section]=\"section\"\n (edit)=\"onSectionEdit($event)\"\n (save)=\"onSectionSave($event)\"\n (delete)=\"onSectionDelete($event)\"\n [editId]=\"editId\"\n >\n <div class=\"bg-[--rt-base-background] md:ml-8 mt-3 rounded-md divide-y divide-dashed\">\n @if (section?.lectures) {\n @for (lecture of section.lectures; track $index) {\n <div>\n <rolatech-course-section-lecture-item\n [lecture]=\"lecture\"\n (save)=\"onLectureSave($event)\"\n (delete)=\"onLectureDelete(section, $event)\"\n (edit)=\"onLectureEdit($event)\"\n (upload)=\"onMediaUploadInit(lecture, $event)\"\n (mediaEdit)=\"onMediaEdit(lecture, $event)\"\n (deleteMedia)=\"onMediaDelete(lecture, $event)\"\n [editId]=\"lectureEditId\"\n ></rolatech-course-section-lecture-item>\n </div>\n }\n }\n <div class=\"p-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"addLecture(section)\">\n <mat-icon>add</mat-icon>\n <span>增加小节</span>\n </button>\n </div>\n </div>\n </rolatech-course-section-item>\n </div>\n }\n </div>\n @if (!hasUnsaved) {\n <button mat-stroked-button (click)=\"addSection()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>增加章节</span>\n </button>\n }\n </div>\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { RouterLink, RouterLinkActive, RouterOutlet, ActivatedRoute } from '@angular/router';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { CourseService } from '../../../services';\nimport { Course, CourseStatus } from '../../../interfaces';\n\n@Component({\n selector: 'rolatech-course-manage-layout',\n standalone: true,\n templateUrl: './course-manage-layout.component.html',\n styleUrl: './course-manage-layout.component.scss',\n imports: [RouterLink, RouterLinkActive, MatButtonModule, RouterOutlet, CourseManageContentComponent],\n})\nexport class CourseManageLayoutComponent implements OnInit {\n id: string;\n course!: Course;\n submitted = false;\n accepted = false;\n isDraft = false;\n route = inject(ActivatedRoute);\n courseService = inject(CourseService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.course = res.data;\n this.updateStatus();\n },\n });\n }\n updateStatus() {\n this.isDraft = this.course.status.toString() === 'DRAFT' || this.course.status.toString() === 'PENDING';\n this.accepted = this.course.status.toString() === 'ACCEPTED';\n }\n submitForReview() {\n this.courseService.review(this.id).subscribe({\n next: (res) => {\n this.snackBar.open('提交成功, 等待审核');\n\n this.course.status = CourseStatus['审核中' as keyof typeof CourseStatus];\n this.updateStatus();\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n publish() {\n this.courseService.publish(this.id).subscribe({\n next: (res) => {\n this.snackBar.open('发布成功');\n this.course.status = CourseStatus['已发布' as keyof typeof CourseStatus];\n this.updateStatus();\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n}\n","<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">课程信息</div>\n <a routerLink=\"./info\" routerLinkActive=\"manage-active\" class=\"p-2\">基本信息</a>\n <a routerLink=\"./media\" routerLinkActive=\"manage-active\" class=\"p-2\">图片</a>\n <a routerLink=\"./details\" routerLinkActive=\"manage-active\" class=\"p-2\">详情</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">课程内容</div>\n <a routerLink=\"./section\" routerLinkActive=\"manage-active\" class=\"p-2\">章节</a>\n <a routerLink=\"./schedule\" routerLinkActive=\"manage-active\" class=\"p-2\">课表</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">其他信息</div>\n <a routerLink=\"./pricing\" routerLinkActive=\"manage-active\" class=\"p-2\">价格</a>\n </div>\n\n @if (isDraft) {\n <div class=\"md:mt-6 ml-3 md:ml-2\">\n <!-- <button mat-stroked-button (click)=\"publish()\">预览</button> -->\n <button mat-flat-button (click)=\"submitForReview()\">提交审核</button>\n </div>\n }\n\n @if (accepted) {\n <div class=\"md:mt-6 md:ml-2\">\n <button mat-flat-button color=\"primary\" (click)=\"publish()\">发布课程</button>\n </div>\n }\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { CourseManageDetailsComponent } from './course-manage-details/course-manage-details.component';\nimport { CourseManageScheduleComponent } from './course-manage-schedule/course-manage-schedule.component';\nimport { CourseManagePricingComponent } from './course-manage-pricing/course-manage-pricing.component';\nimport { CourseManageInfoComponent } from './course-manage-info/course-manage-info.component';\nimport { CourseManageMediaComponent } from './course-manage-media/course-manage-media.component';\nimport { Routes } from '@angular/router';\nimport { CourseManageSectionComponent } from './course-manage-section/course-manage-section.component';\nimport { CourseManageLayoutComponent } from './course-manage-layout/course-manage-layout.component';\n\nexport const courseManageRoutes: Routes = [\n {\n path: '',\n component: CourseManageLayoutComponent,\n children: [\n {\n path: 'info',\n component: CourseManageInfoComponent,\n },\n {\n path: 'media',\n component: CourseManageMediaComponent,\n },\n {\n path: 'details',\n component: CourseManageDetailsComponent,\n },\n {\n path: 'pricing',\n component: CourseManagePricingComponent,\n },\n {\n path: 'schedule',\n component: CourseManageScheduleComponent,\n },\n {\n path: 'section',\n component: CourseManageSectionComponent,\n },\n ],\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["fromServices.services","i2","i1","i7","i9","i3","i4","i5","i2.CourseService","i6","i8","i2.CategoryService","i10","i11","i12","i13"],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-course.mjs","sources":["../../../../packages/angular-course/src/lib/interfaces/course.ts","../../../../packages/angular-course/src/lib/services/course.service.ts","../../../../packages/angular-course/src/lib/services/course-section.service.ts","../../../../packages/angular-course/src/lib/services/category.service.ts","../../../../packages/angular-course/src/lib/services/index.ts","../../../../packages/angular-course/src/provider.ts","../../../../packages/angular-course/src/lib/components/course-preview/course-preview.component.ts","../../../../packages/angular-course/src/lib/components/course-preview/course-preview.component.html","../../../../packages/angular-course/src/lib/components/course-info/course-info.component.ts","../../../../packages/angular-course/src/lib/components/course-info/course-info.component.html","../../../../packages/angular-course/src/lib/components/course-media/course-media.component.ts","../../../../packages/angular-course/src/lib/components/course-media/course-media.component.html","../../../../packages/angular-course/src/lib/components/course-pricing/course-pricing.component.ts","../../../../packages/angular-course/src/lib/components/course-pricing/course-pricing.component.html","../../../../packages/angular-course/src/lib/components/course-action/course-action.component.ts","../../../../packages/angular-course/src/lib/components/course-action/course-action.component.html","../../../../packages/angular-course/src/lib/components/course-schedule/course-schedule.component.ts","../../../../packages/angular-course/src/lib/components/course-schedule/course-schedule.component.html","../../../../packages/angular-course/src/lib/components/course-sections/course-sections.component.ts","../../../../packages/angular-course/src/lib/components/course-sections/course-sections.component.html","../../../../packages/angular-course/src/lib/components/course-section-item/course-section-item.component.ts","../../../../packages/angular-course/src/lib/components/course-section-item/course-section-item.component.html","../../../../packages/angular-course/src/lib/components/course-section-lecture-video-dialog/course-section-lecture-video-dialog.component.ts","../../../../packages/angular-course/src/lib/components/course-section-lecture-video-dialog/course-section-lecture-video-dialog.component.html","../../../../packages/angular-course/src/lib/components/course-section-lecture-item/course-section-lecture-item.component.ts","../../../../packages/angular-course/src/lib/components/course-section-lecture-item/course-section-lecture-item.component.html","../../../../packages/angular-course/src/lib/components/course-section-lecture-video-item/course-section-lecture-video-item.component.ts","../../../../packages/angular-course/src/lib/components/course-section-lecture-video-item/course-section-lecture-video-item.component.html","../../../../packages/angular-course/src/lib/components/pricing-item/pricing-item.component.ts","../../../../packages/angular-course/src/lib/components/pricing-item/pricing-item.component.html","../../../../packages/angular-course/src/lib/components/course-pricing-add-dialog/course-pricing-add-dialog.component.ts","../../../../packages/angular-course/src/lib/components/course-pricing-add-dialog/course-pricing-add-dialog.component.html","../../../../packages/angular-course/src/lib/components/schedule-item/schedule-item.component.ts","../../../../packages/angular-course/src/lib/components/schedule-item/schedule-item.component.html","../../../../packages/angular-course/src/lib/components/course-schedule-add-dialog/course-schedule-add-dialog.component.ts","../../../../packages/angular-course/src/lib/components/course-schedule-add-dialog/course-schedule-add-dialog.component.html","../../../../packages/angular-course/src/lib/components/course-pricing-dialog/course-pricing-dialog.component.ts","../../../../packages/angular-course/src/lib/components/course-pricing-dialog/course-pricing-dialog.component.html","../../../../packages/angular-course/src/lib/components/course-schedule-dialog/course-schedule-dialog.component.ts","../../../../packages/angular-course/src/lib/components/course-schedule-dialog/course-schedule-dialog.component.html","../../../../packages/angular-course/src/lib/components/detail-item/detail-item.component.ts","../../../../packages/angular-course/src/lib/components/detail-item/detail-item.component.html","../../../../packages/angular-course/src/lib/components/course-details-dialog/course-details-dialog.component.ts","../../../../packages/angular-course/src/lib/components/course-details-dialog/course-details-dialog.component.html","../../../../packages/angular-course/src/lib/components/course-edit-dialog/course-edit-dialog.component.ts","../../../../packages/angular-course/src/lib/components/course-edit-dialog/course-edit-dialog.component.html","../../../../packages/angular-course/src/lib/components/course-details/course-details.component.ts","../../../../packages/angular-course/src/lib/components/course-details/course-details.component.html","../../../../packages/angular-course/src/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.ts","../../../../packages/angular-course/src/lib/components/course-media-owner-renderer/course-media-owner-renderer.component.html","../../../../packages/angular-course/src/lib/pages/course/course-category/course-category.component.ts","../../../../packages/angular-course/src/lib/pages/course/course-category/course-category.component.html","../../../../packages/angular-course/src/lib/pages/course/course-detail/course-detail.component.ts","../../../../packages/angular-course/src/lib/pages/course/course-detail/course-detail.component.html","../../../../packages/angular-course/src/lib/pages/course/course-layout/course-layout.component.ts","../../../../packages/angular-course/src/lib/pages/course/course-layout/course-layout.component.html","../../../../packages/angular-course/src/lib/pages/course/course-section-content/course-section-content.component.ts","../../../../packages/angular-course/src/lib/pages/course/course-section-content/course-section-content.component.html","../../../../packages/angular-course/src/lib/pages/course/course.routes.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-content/course-manage-content.component.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-content/course-manage-content.component.html","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-details/course-manage-details.component.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-details/course-manage-details.component.html","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-schedule/course-manage-schedule.component.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-schedule/course-manage-schedule.component.html","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-pricing/course-manage-pricing.component.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-pricing/course-manage-pricing.component.html","../../../../packages/angular-course/src/lib/services/booking.service.ts","../../../../packages/angular-course/src/lib/services/instructor.service.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-info/course-manage-info.component.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-info/course-manage-info.component.html","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-media/course-manage-media.component.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-media/course-manage-media.component.html","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-section/course-manage-section.component.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-section/course-manage-section.component.html","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-layout/course-manage-layout.component.ts","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage-layout/course-manage-layout.component.html","../../../../packages/angular-course/src/lib/pages/course-manage/course-manage.routes.ts","../../../../packages/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 { 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 provideAngularCourse(): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n ...fromServices.services,\n importProvidersFrom(CommonModule, ReactiveFormsModule, FormsModule, RouterModule),\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-course-preview',\n imports: [],\n templateUrl: './course-preview.component.html',\n styleUrls: ['./course-preview.component.scss'],\n})\nexport class CoursePreviewComponent {}\n","<p>course-preview works!</p>\n","import { Component, Signal, computed, effect, input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Course } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-info',\n templateUrl: './course-info.component.html',\n styleUrls: ['./course-info.component.scss'],\n imports: [MatIconModule, RouterModule],\n})\nexport class CourseInfoComponent {\n course = input.required<Course>();\n instructor = input<string>();\n username = input<string>();\n dataToDisplay = effect(() => {\n return this.course();\n });\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 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-[--rt-brand-color] text-[0.9rem]\" [routerLink]=\"['/@' + 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 { MatDialog } from '@angular/material/dialog';\nimport { NgClass } from '@angular/common';\nimport { ImagePreviewDialogComponent, ThumbnailComponent } from '@rolatech/angular-components';\nimport { Media } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-media',\n templateUrl: './course-media.component.html',\n styleUrls: ['./course-media.component.scss'],\n imports: [NgClass, ThumbnailComponent],\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(ImagePreviewDialogComponent, {\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=\"md:w-80 object-cover aspect-video bg-[--rt-10-percent-layer] rounded-lg\">\n @if (media()) {\n <rolatech-thumbnail [src]=\"media()[0].url\" size=\"small\"></rolatech-thumbnail>\n }\n </div>\n } @else {\n <div>\n <div class=\"object-cover aspect-video bg-[--rt-10-percent-layer]\">\n <rolatech-thumbnail [src]=\"media()[mediaIndex].url\" size=\"small\"></rolatech-thumbnail>\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 <rolatech-thumbnail [src]=\"item.url\" size=\"small\"></rolatech-thumbnail>\n </div>\n }\n </div>\n }\n}\n","import { Component, input } from '@angular/core';\nimport { CoursePricing } from '../../interfaces';\nimport { FixedPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-course-pricing',\n templateUrl: './course-pricing.component.html',\n styleUrls: ['./course-pricing.component.scss'],\n imports: [FixedPipe],\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 | fixed }}元</span>\n </div>\n }\n </div>\n}\n","import { Component, input, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\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 imports: [MatButtonModule],\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-[--rt-brand-color] text-center mt-3\" target=\"_blank\" (click)=\"onCart(course)\">加入购物车</a> -->\n <a mat-flat-button class=\"mt-3 min-h-11\" target=\"_blank\" (click)=\"onCheckout(course())\">立即购买</a>\n <a mat-stroked-button class=\"mt-3 min-h-11\" target=\"_blank\" (click)=\"onWish(course())\">{{\n inWishList() ? '移除收藏' : '加入收藏'\n }}</a>\n</div>\n","import { Component, OnInit, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CourseSchedule } from '../../interfaces';\nimport { AccordionComponent, PanelComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-course-schedule',\n templateUrl: './course-schedule.component.html',\n styleUrls: ['./course-schedule.component.scss'],\n imports: [MatIconModule, AccordionComponent, PanelComponent],\n})\nexport class CourseScheduleComponent implements OnInit {\n schedule = input<CourseSchedule[]>([]);\n\n ngOnInit(): void {\n // this.formatSchedule();\n }\n formatSchedule() {}\n}\n","@if (schedule()) {\n <div class=\"py-3\" id=\"schedule\">\n <div class=\"text-xl font-medium py-2\">课表</div>\n <rolatech-accordion>\n @for (item of schedule(); track $index) {\n <rolatech-panel [title]=\"item.title\" [expanded]=\"$index === 0\">\n <div>\n <div class=\"text-[--rt-text-secondary]pt-2 text-sm\">\n <span>{{ item.startAt }} - {{ item.endAt }}</span>\n </div>\n <div class=\"py-3\">\n <div>{{ item.content }}</div>\n </div>\n </div>\n </rolatech-panel>\n }\n </rolatech-accordion>\n </div>\n}\n","import { Component, ViewEncapsulation, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DurationPipe } from '@rolatech/angular-common';\nimport { CourseSection, CourseSectionLecture } from '../../interfaces';\nimport { AccordionComponent, PanelComponent } from '@rolatech/angular-components';\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 imports: [MatIconModule, DurationPipe, MatCheckboxModule, AccordionComponent, PanelComponent],\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 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-2xl font-medium py-3 lg:pt-0\">课程内容</div>\n <rolatech-accordion>\n @for (item of sections(); track $index) {\n <rolatech-panel [expanded]=\"$index === 0\" [title]=\"item.title\">\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-[--rt-brand-color]\"\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-[--rt-brand-color]\"\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-[--rt-brand-color]\"\n (click)=\"onCheckout(item, lecture)\"\n >购买</a\n >\n }\n }\n\n <a class=\"text-[--rt-text-secondary] inline-block w-[60px] text-right\">{{\n lecture.item.duration | duration\n }}</a>\n </div>\n }\n </div>\n }\n </rolatech-panel>\n }\n </rolatech-accordion>\n </div>\n}\n","import { Component, OnInit, input, model, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { InputComponent } from '@rolatech/angular-components';\nimport { CourseSection } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-section-item',\n templateUrl: './course-section-item.component.html',\n styleUrls: ['./course-section-item.component.scss'],\n imports: [MatIconModule, FormsModule, MatButtonModule, InputComponent],\n})\nexport class CourseSectionItemComponent implements OnInit {\n section = model.required<CourseSection>();\n actions = model<boolean>();\n hasUnsaved = model<boolean[]>();\n editId = model<any>();\n save = output<CourseSection>();\n cancel = output<CourseSection>();\n delete = output<CourseSection>();\n edit = output<CourseSection>();\n addLecture = output<CourseSection>();\n editing = false;\n isExpand = false;\n\n ngOnInit(): void {}\n\n onSave(section: CourseSection) {\n this.editing = false;\n this.editId.set(null);\n this.save.emit(section);\n }\n onCancel(section: CourseSection) {\n this.editing = false;\n this.editId.set(null);\n this.cancel.emit(section);\n }\n onDelete(section: CourseSection) {\n this.delete.emit(section);\n }\n onEdit(section: CourseSection) {\n this.editId.set(null);\n this.editing = true;\n this.edit.emit(section);\n }\n onAddLecture(section: CourseSection) {\n this.addLecture.emit(section);\n }\n}\n","<div class=\"flex flex-col grow\">\n @if (section().id !== editId()) {\n <div>\n <div class=\"flex justify-between items-center cursor-pointer\" (click)=\"isExpand = !isExpand\">\n <div class=\"w-full flex items-center gap-3 pl-3\">\n <span>{{ section().title }}</span>\n <button mat-icon-button class=\"max-w-8 max-h-8 !p-1\" (click)=\"onEdit(section()); $event.stopPropagation()\">\n <mat-icon>edit</mat-icon>\n </button>\n <button mat-icon-button class=\"max-w-8 max-h-8 !p-1\" (click)=\"onDelete(section()); $event.stopPropagation()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <button mat-icon-button class=\"max-w-8 max-h-8 !p-1\">\n <mat-icon>{{ isExpand ? 'expand_less' : 'expand_more' }}</mat-icon>\n </button>\n </div>\n @if (isExpand) {\n <div>\n <ng-content></ng-content>\n </div>\n }\n </div>\n } @else {\n <div class=\"flex flex-col justify-between items-center\">\n <rolatech-input [(title)]=\"section().title\" placeholder=\"标题\"></rolatech-input>\n <div class=\"w-full flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onCancel(section())\">取消</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(section())\">保存</button>\n </div>\n </div>\n }\n</div>\n","import { AfterViewInit, Component, ElementRef, Inject, OnDestroy, OnInit, PLATFORM_ID, inject, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { CourseSectionLecture } from '../../interfaces';\nimport { CourseSectionService, CourseService } from '../../services';\ndeclare const DPlayer: any;\n\n@Component({\n selector: 'rolatech-course-section-lecture-video-dialog',\n imports: [MatIconModule, MatDividerModule, FormsModule, MatStepperModule, MatButtonModule, MatCheckboxModule],\n templateUrl: './course-section-lecture-video-dialog.component.html',\n styleUrl: './course-section-lecture-video-dialog.component.scss',\n})\nexport class CourseSectionLectureVideoDialogComponent implements OnInit, AfterViewInit, OnDestroy {\n lecture!: CourseSectionLecture;\n thumbnailUpload = output<any>();\n courseService = inject(CourseService);\n courseSectionService = inject(CourseSectionService);\n\n snackBar = inject(MatSnackBar);\n platformId = inject(PLATFORM_ID);\n el = inject(ElementRef);\n mediaSrc: any;\n player: any;\n\n constructor(\n private dialogRef: MatDialogRef<CourseSectionLectureVideoDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n this.lecture = data.data;\n }\n ngAfterViewInit(): void {\n this.initPlayer(this.lecture.item.url, this.lecture.item.thumbnail);\n }\n close() {\n this.dialogRef.close();\n }\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 // });\n }\n }\n ngOnInit(): void {}\n ngOnDestroy(): void {\n if (this.player) {\n this.player.destroy();\n }\n }\n onThumbnailUpload(event: any) {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n this.mediaSrc = reader.result;\n const formData = new FormData();\n formData.append('file', file);\n this.courseService.uploadLectureVideoThumbnail(this.lecture.item.id, formData).subscribe({\n next: (res) => {\n this.lecture.item = res.data;\n this.snackBar.open('上传成功');\n this.player.switchVideo({\n url: this.lecture.item.url,\n pic: res.data.thumbnail,\n });\n },\n });\n };\n reader.onerror = (error) => {};\n }\n }\n onPreviewChange(event: any) {\n this.courseSectionService.canBePreviewed(this.lecture.item.id, { canBePreviewed: event.checked }).subscribe({\n next: (res) => {\n this.lecture.item.canBePreviewed = res.data.canBePreviewed;\n // this.lecture = res.data;\n },\n });\n }\n}\n","<div class=\"flex flex-col-reverse md:flex-row justify-between h-full gap-3\">\n <div class=\"w-full md:w-1/2\">\n <div>\n <div class=\"py-3 flex flex-col\">\n <span class=\"text-lg font-bold\"> 封面 </span>\n <span class=\"text-sm\">一个好的封面可以引起更多的关注</span>\n </div>\n\n <div class=\"flex gap-3\">\n <div\n class=\"p-3 w-36 flex flex-col items-center justify-center outline-dashed outline-1 rounded cursor-pointer\"\n (click)=\"fileInput.click()\"\n >\n <mat-icon>upload</mat-icon>\n <span class=\"text-sm\">上传封面</span>\n </div>\n <input type=\"file\" accept=\"image/*\" (change)=\"onThumbnailUpload($event)\" #fileInput style=\"display: none\" />\n @if (lecture.item.thumbnail) {\n <div class=\"aspect-video w-32 h-auto bg-black\">\n <img [src]=\"lecture.item.thumbnail\" class=\"aspect-video object-contain\" alt />\n </div>\n } @else {\n <div class=\"aspect-video w-32 h-auto\">\n <img [src]=\"mediaSrc\" class=\"aspect-video object-contain\" alt />\n </div>\n }\n </div>\n </div>\n <div class=\"mt-3\">\n <div class=\"py-3 flex flex-col\">\n <span class=\"text-lg font-bold\"> 试看内容 </span>\n <span class=\"text-sm\">少量的试看内容, 可以增加购买率</span>\n </div>\n <mat-checkbox color=\"primary\" (change)=\"onPreviewChange($event)\" [checked]=\"lecture.item.canBePreviewed\"\n >允许试看</mat-checkbox\n >\n </div>\n </div>\n <div class=\"w-full md:w-1/2\">\n @if (lecture) {\n <div>\n <div id=\"dplayer\" class=\"w-full h-auto aspect-video md:rounded-xl\"></div>\n </div>\n }\n </div>\n</div>\n","import { Component, ElementRef, OnInit, PLATFORM_ID, inject, input, model, output, viewChild } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularComponentsModule, InputComponent } from '@rolatech/angular-components';\nimport { AngularCommonModule, DurationPipe } from '@rolatech/angular-common';\nimport { DialogService } from '@rolatech/angular-services';\nimport { CourseSectionLecture, CourseSectionLectureVideo } from '../../interfaces';\nimport { CourseSectionLectureVideoDialogComponent } from '../course-section-lecture-video-dialog/course-section-lecture-video-dialog.component';\nimport { CourseSectionLectureItem } from '../../interfaces/course';\n\n@Component({\n selector: 'rolatech-course-section-lecture-item',\n templateUrl: './course-section-lecture-item.component.html',\n styleUrls: ['./course-section-lecture-item.component.scss'],\n imports: [\n MatIconModule,\n AngularCommonModule,\n FormsModule,\n MatButtonModule,\n MatDividerModule,\n AngularComponentsModule,\n DurationPipe,\n InputComponent,\n ],\n})\nexport class CourseSectionLectureItemComponent implements OnInit {\n platformId = inject(PLATFORM_ID);\n el = inject(ElementRef);\n dialogService = inject(DialogService);\n myVideo = viewChild('video');\n progress = input<number>(0);\n lecture = input.required<CourseSectionLecture>();\n actions = input<boolean>(true);\n hasUnsaved = input<boolean>(false);\n editId = model<any>();\n\n save = output<CourseSectionLecture>();\n cancel = output<CourseSectionLecture>();\n delete = output<CourseSectionLecture>();\n edit = output<CourseSectionLecture>();\n mediaEdit = output<CourseSectionLectureVideo>();\n thumbnailUpload = output<CourseSectionLectureVideo>();\n upload = output<{ id: any; data: FormData | null }>();\n deleteMedia = output<CourseSectionLectureItem>();\n\n editing = false;\n ngOnInit(): void {}\n\n onSave(lecture: CourseSectionLecture) {\n this.editing = false;\n this.editId.set(null);\n this.save.emit(lecture);\n }\n onCancel(lecture: CourseSectionLecture) {\n this.editing = false;\n this.editId.set(null);\n this.cancel.emit(lecture);\n }\n onDelete(lecture: CourseSectionLecture) {\n this.delete.emit(lecture);\n }\n onEdit(lecture: CourseSectionLecture) {\n this.editId.set(lecture.id);\n this.editing = true;\n this.edit.emit(lecture);\n }\n onMediaEdit(lecture: CourseSectionLectureVideo) {\n this.editId.set(lecture.id);\n this.editing = true;\n // this.mediaEdit.emit(lecture);\n const options = {\n title: '编辑视频',\n cancelText: '取消',\n confirmText: '确定',\n data: this.lecture(),\n width: '80vw',\n maxWidth: '80vw',\n height: '100%',\n component: CourseSectionLectureVideoDialogComponent,\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n const data = {\n name: res,\n };\n }\n },\n });\n }\n onVideoThumbnailUpload(video: CourseSectionLectureVideo) {\n this.thumbnailUpload.emit(video);\n }\n onUpload(id: any, data: any) {\n this.lecture().isUploading = true;\n\n this.upload.emit({ id, data });\n }\n onDeleteMedia(data: any) {\n this.deleteMedia.emit(data);\n }\n onLoadedMetadata(event: Event): void {\n if (this.lecture().item.duration) {\n return;\n }\n const videoElement: HTMLVideoElement = event.target as HTMLVideoElement;\n this.lecture().item.duration = videoElement.duration;\n }\n}\n","<div class=\"flex flex-col grow p-2\">\n @if (lecture().id !== editId()) {\n <div class=\"w-full flex gap-3 p-3 items-center\">\n <span>{{ lecture().title }}</span>\n <button mat-icon-button (click)=\"onEdit(lecture()); $event.stopPropagation()\" class=\"max-w-8 max-h-8 !p-1\">\n <mat-icon>edit</mat-icon>\n </button>\n <button mat-icon-button (click)=\"onDelete(lecture()); $event.stopPropagation()\" class=\"max-w-8 max-h-8 !p-1\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n } @else {\n <div class=\"flex flex-col justify-between items-center\">\n <rolatech-input [(title)]=\"lecture().title\" placeholder=\"标题\"></rolatech-input>\n <div class=\"w-full flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onCancel(lecture())\">取消</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(lecture())\">保存</button>\n </div>\n </div>\n }\n\n <div>\n @if (lecture().item) {\n <div class=\"flex flex-row p-2 gap-3\">\n <div class=\"bg-black h-fit\">\n <video\n id=\"video\"\n #video\n [src]=\"lecture().item.url\"\n class=\"w-32 aspect-video\"\n (loadedmetadata)=\"onLoadedMetadata($event)\"\n [poster]=\"lecture().item.thumbnail\"\n ></video>\n </div>\n <div class=\"flex flex-col justify-between w-full\">\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-between items-center w-full px-2\">\n <span>视频内容</span>\n </div>\n @if (lecture().isUploading) {\n <div>\n <span> {{ lecture().item.progress }}%</span>\n </div>\n }\n </div>\n <div class=\"flex justify-between items-center\">\n <div>\n <button mat-button class=\"max-h-8\" (click)=\"onMediaEdit(lecture().item); $event.stopPropagation()\">\n <mat-icon>edit</mat-icon>\n <span>编辑</span>\n </button>\n <button mat-button class=\"max-h-8\" (click)=\"onDeleteMedia(lecture().item); $event.stopPropagation()\">\n <mat-icon>delete</mat-icon>\n <span>删除</span>\n </button>\n </div>\n <div>\n <span>{{ lecture().item.duration | duration }}</span>\n </div>\n </div>\n </div>\n </div>\n @if (lecture().isUploading) {\n <div class=\"p-2\">\n <mat-progress-bar color=\"primary\" mode=\"determinate\" [value]=\"lecture().item.progress\"> </mat-progress-bar>\n </div>\n }\n } @else {\n @if (lecture().id !== editId()) {\n <div class=\"px-3\">\n <input\n class=\"ud-sr-only\"\n type=\"file\"\n accept=\".avi,.mpg,.mpeg,.flv,.mov,.m2v,.m4v,.mp4,.rm,.ram,.vob,.ogv,.webm,.wmv\"\n (change)=\"onUpload(lecture().id, $event)\"\n #fileInput\n />\n <div class=\"flex justify-between items-center\">\n <div>无视频文件</div>\n <button mat-flat-button class=\"max-h-8\" (click)=\"fileInput.click()\">上传视频</button>\n </div>\n </div>\n }\n }\n </div>\n @if (!hasUnsaved) {\n <ng-content></ng-content>\n }\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-course-section-lecture-video-item',\n templateUrl: './course-section-lecture-video-item.component.html',\n styleUrls: ['./course-section-lecture-video-item.component.scss'],\n})\nexport class CourseSectionLectureVideoItemComponent {}\n","<p>course-section-lecture-video-item works!</p>\n","import { Component, OnInit, input, model, output } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { Pricing } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-pricing-item',\n templateUrl: './pricing-item.component.html',\n styleUrls: ['./pricing-item.component.scss'],\n imports: [MatFormFieldModule, MatInputModule, FormsModule, MatButtonModule, MatDividerModule],\n})\nexport class PricingItemComponent implements OnInit {\n actions = input<boolean>(false);\n pricing = model.required<Pricing>();\n delete = output<Pricing>();\n save = output<Pricing>();\n\n constructor() {}\n ngOnInit(): void {\n this.pricing().total = this.pricing().total / 100;\n }\n\n onSave(pricing: Pricing) {\n const finalPricing = {\n ...pricing,\n total: pricing.total * 100,\n };\n this.save.emit(finalPricing);\n }\n onDelete(pricing: Pricing) {\n this.delete.emit(pricing);\n }\n setTwoNumberDecimal(e: any) {\n this.pricing().total = e;\n }\n}\n","<div class=\"flex flex-col py-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 最少人数 </mat-label>\n <input matInput type=\"number\" [(ngModel)]=\"pricing().min\" name=\"min\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 最多人数 </mat-label>\n <input matInput type=\"number\" [(ngModel)]=\"pricing().max\" name=\"max\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 价格 </mat-label>\n <!-- <input matInput type=\"number\" step=\"0.01\" [ngModel]=\"pricing().total\"\n (ngModelChange)=\"setTwoNumberDecimal($event)\" name=\"total\" required placeholder=\"20.23\" /> -->\n <input matInput rolatechDecimal type=\"text\" [(ngModel)]=\"pricing().total\" name=\"total\" required />\n </mat-form-field>\n</div>\n@if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onDelete(pricing())\">删除</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(pricing())\">保存</button>\n </div>\n}\n<mat-divider></mat-divider>\n","import { Component, DoCheck, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PricingItemComponent } from '../pricing-item/pricing-item.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Pricing } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-pricing-add-dialog',\n templateUrl: './course-pricing-add-dialog.component.html',\n styleUrls: ['./course-pricing-add-dialog.component.scss'],\n imports: [MatIconModule, PricingItemComponent, MatButtonModule],\n})\nexport class CoursePricingAddDialogComponent implements DoCheck {\n output = output<any>();\n pricing: Pricing = {\n min: 0,\n max: 0,\n total: 0,\n };\n ngDoCheck(): void {\n this.output.emit(this.pricing);\n }\n}\n","<rolatech-pricing-item [pricing]=\"pricing\"></rolatech-pricing-item>\n","import { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { Component, OnInit, OnDestroy, output, model, input, effect, computed } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatOptionModule } from '@angular/material/core';\nimport moment from 'moment';\nimport { DatePipe } from '@angular/common';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { Schedule, ScheduleDate } from '../../interfaces';\nexport const COURSE_SCHEDULE_DATE_FORMATS = {\n parse: {\n dateInput: 'YYYY-MM-DD',\n },\n display: {\n dateInput: 'YYYY-MM-DD',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'YYYY-MM-DD',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n\n@Component({\n selector: 'rolatech-schedule-item',\n templateUrl: './schedule-item.component.html',\n styleUrls: ['./schedule-item.component.scss'],\n providers: [\n {\n provide: DateAdapter,\n useClass: MomentDateAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n { provide: MAT_DATE_FORMATS, useValue: COURSE_SCHEDULE_DATE_FORMATS },\n DatePipe,\n ],\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n TextFieldModule,\n MatDatepickerModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n MatDividerModule,\n ],\n})\nexport class ScheduleItemComponent implements OnInit, OnDestroy {\n value = input<Schedule | undefined>();\n actions = input<boolean>(false);\n delete = output<Schedule>();\n save = output<Schedule>();\n date = ScheduleDate;\n schedule: any = effect(() => {\n this.schedule = this.value() || {\n title: '',\n content: '',\n startAt: '',\n endAt: '',\n };\n this.schedule.startDate = moment(this.schedule.startAt).format('YYYY-MM-DD');\n this.schedule.startTime = moment(this.schedule.startAt).format('HH:mm');\n this.schedule.endDate = moment(this.schedule.endAt).format('YYYY-MM-DD');\n this.schedule.endTime = moment(this.schedule.endAt).format('HH:mm');\n });\n // constructor() {\n // this.schedule = this.value();\n // }\n\n ngOnInit(): void {\n // this.schedule = computed(() => {\n // return this.value();\n // })();\n // this.schedule = this.value();\n // this.schedule.startDate = moment(this.schedule.startAt).format('YYYY-MM-DD');\n // this.schedule.startTime = moment(this.schedule.startAt).format('HH:mm');\n // this.schedule.endDate = moment(this.schedule.endAt).format('YYYY-MM-DD');\n // this.schedule.endTime = moment(this.schedule.endAt).format('HH:mm');\n }\n ngOnDestroy(): void {\n const { startAt, endAt, startTime, startDate, endDate, endTime } = this.schedule;\n this.schedule.startAt = this.schedule.startDate + ' ' + this.schedule.startTime;\n this.schedule.endAt = this.schedule.endDate + ' ' + this.schedule.endTime;\n delete this.schedule.startDate;\n delete this.schedule.startTime;\n delete this.schedule.endDate;\n delete this.schedule.endTime;\n }\n startDateChanged(event: any) {}\n startTimeChanged(event: any) {}\n\n endDateChanged(event: any) {}\n endTimeChanged(event: any) {}\n\n onSave(schedule: Schedule) {\n this.format();\n this.save.emit(schedule);\n }\n onDelete(schedule: Schedule) {\n this.delete.emit(schedule);\n }\n private format() {\n this.schedule.startAt = this.schedule.startDate + ' ' + this.schedule.startTime;\n this.schedule.endAt = this.schedule.endDate + ' ' + this.schedule.endTime;\n }\n}\n","<div class=\"flex flex-col py-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 标题 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"schedule.title\" name=\"title\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 内容 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"schedule.content\"\n name=\"content\"\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>开始日期</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker\"\n (focus)=\"picker.open()\"\n name=\"startAt\"\n [(ngModel)]=\"schedule.startDate\"\n (ngModelChange)=\"startDateChanged($event)\"\n (dateInput)=\"schedule.startDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>开始时间</mat-label>\n <mat-select [(ngModel)]=\"schedule.startTime\" (selectionChange)=\"startTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"flex flex-row gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label>结束日期</mat-label>\n <input\n matInput\n [matDatepicker]=\"picker2\"\n name=\"endAt\"\n (focus)=\"picker2.open()\"\n (ngModelChange)=\"endDateChanged($event)\"\n [(ngModel)]=\"schedule.endDate\"\n (dateInput)=\"schedule.endDate = $event.value.format('YYYY-MM-DD')\"\n readonly\n required\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker2\"></mat-datepicker-toggle>\n <mat-datepicker #picker2></mat-datepicker>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>结束时间</mat-label>\n <mat-select [(ngModel)]=\"schedule.endTime\" (selectionChange)=\"endTimeChanged($event)\" required readonly>\n @for (d of date; track d) {\n <mat-option [value]=\"d\">\n {{ d }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n</div>\n@if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onDelete(schedule)\">删除</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(schedule)\">保存</button>\n </div>\n}\n<mat-divider></mat-divider>\n","import { Component, DoCheck, output } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScheduleItemComponent } from '../schedule-item/schedule-item.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Schedule } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-schedule-add-dialog',\n templateUrl: './course-schedule-add-dialog.component.html',\n styleUrls: ['./course-schedule-add-dialog.component.scss'],\n imports: [MatIconModule, ScheduleItemComponent, MatButtonModule],\n})\nexport class CourseScheduleAddDialogComponent implements DoCheck {\n output = output<any>();\n schedule: Schedule = {\n title: '',\n content: '',\n startAt: '',\n endAt: '',\n };\n ngDoCheck(): void {\n this.output.emit(this.schedule);\n }\n}\n","<rolatech-schedule-item [value]=\"schedule\"></rolatech-schedule-item>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA, MatDialogClose } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { PricingItemComponent } from '../pricing-item/pricing-item.component';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Pricing } from '../../interfaces';\nimport { CourseService } from '../../services';\n\n@Component({\n selector: 'rolatech-course-pricing-dialog',\n templateUrl: './course-pricing-dialog.component.html',\n styleUrls: ['./course-pricing-dialog.component.scss'],\n imports: [\n MatIconModule,\n MatDividerModule,\n FormsModule,\n MatStepperModule,\n PricingItemComponent,\n MatButtonModule,\n MatDialogClose,\n ],\n})\nexport class CoursePricingDialogComponent {\n courseId!: string;\n pricing: Pricing[] = [];\n constructor(\n private dialogRef: MatDialogRef<CoursePricingDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private courseService: CourseService,\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n ) {\n this.courseId = data.courseId;\n this.pricing = data.pricing;\n }\n close() {\n this.dialogRef.close();\n }\n addPricing() {\n this.pricing.push({\n min: 0,\n max: 0,\n total: 0,\n });\n }\n}\n","<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden mt-3 overflow-y-auto w-2/3 max-h-[55vh]\">\n <form #detailForm=\"ngForm\" class=\"p-3\">\n <ng-template matStepLabel>详情</ng-template>\n @for (item of pricing; track item) {\n <rolatech-pricing-item [pricing]=\"item\"> </rolatech-pricing-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addPricing()\">\n <mat-icon>add</mat-icon>\n <span>增加价格</span>\n </button>\n </div>\n </form>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-end items-center px-5\">\n <button mat-button [mat-dialog-close]=\"pricing\" cdkFocusInitial>保存</button>\n </div>\n</div>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogClose } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScheduleItemComponent } from '../schedule-item/schedule-item.component';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Schedule } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-course-schedule-dialog',\n templateUrl: './course-schedule-dialog.component.html',\n styleUrls: ['./course-schedule-dialog.component.scss'],\n imports: [\n MatIconModule,\n MatDividerModule,\n FormsModule,\n MatStepperModule,\n ScheduleItemComponent,\n MatButtonModule,\n MatDialogClose,\n ],\n})\nexport class CourseScheduleDialogComponent {\n courseId!: string;\n schedule: Schedule[] = [];\n constructor(\n private dialogRef: MatDialogRef<CourseScheduleDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n this.courseId = data.courseId;\n this.schedule = data.schedule;\n }\n close() {\n this.dialogRef.close();\n }\n addSchedule() {\n if (!this.schedule) {\n this.schedule = [];\n }\n this.schedule.push({\n title: '',\n content: '',\n startAt: '',\n endAt: '',\n });\n }\n}\n","<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden mt-3 overflow-y-auto\">\n <form #detailForm=\"ngForm\" class=\"p-3\">\n <ng-template matStepLabel>详情</ng-template>\n @for (item of schedule; track item) {\n <rolatech-schedule-item [value]=\"item\"></rolatech-schedule-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addSchedule()\">\n <mat-icon>add</mat-icon>\n <span>增加课表</span>\n </button>\n </div>\n </form>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-end items-center px-5\">\n <button mat-button [mat-dialog-close]=\"schedule\" cdkFocusInitial>保存</button>\n </div>\n</div>\n","import { Component, OnInit, input, output } from '@angular/core';\nimport { first } from 'lodash';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CourseDetail, Media } from '../../interfaces';\n\n@Component({\n selector: 'rolatech-detail-item',\n templateUrl: './detail-item.component.html',\n styleUrls: ['./detail-item.component.scss'],\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n TextFieldModule,\n MatButtonModule,\n MatIconModule,\n MatProgressBarModule,\n MatDividerModule,\n ],\n})\nexport class DetailItemComponent implements OnInit {\n isUploading = input<boolean>();\n detail = input.required<CourseDetail>();\n actions = input<boolean>(false);\n selectMedia = input<any>();\n\n upload = output<{ id: string; data: FormData | null }>();\n delete = output<CourseDetail>();\n save = output<CourseDetail>();\n deleteMedia = output<{ id: string; media: Media }>();\n selectedImg!: Media | any;\n\n constructor() {}\n\n ngOnInit(): void {\n this.selectedImg = this.detail().media ? this.detail().media[0] : null;\n }\n onUpload(id: string, data: any) {\n this.upload.emit({ id, data });\n }\n onMediaItemClick(image: Media) {\n this.selectedImg = image;\n }\n\n select(item: any) {\n this.selectedImg = item;\n }\n deleteImage() {}\n onSave(detail: CourseDetail) {\n this.save.emit(detail);\n }\n onDelete(detail: CourseDetail) {\n this.delete.emit(detail);\n }\n onDeleteMedia(id: string, media: Media) {\n this.deleteMedia.emit({ id, media });\n this.selectedImg = this.detail().media ? first(this.detail().media) : null;\n }\n}\n","<div class=\"mb-8\">\n <div class=\"flex flex-col lg:flex-row\">\n <div class=\"flex flex-col grow\">\n <mat-form-field appearance=\"fill\">\n <mat-label>标题</mat-label>\n <input matInput placeholder=\"标题\" [(ngModel)]=\"detail().title\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\" [hideRequiredMarker]=\"true\">\n <mat-label>描述</mat-label>\n <input matInput placeholder=\"描述\" [(ngModel)]=\"detail().description\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\" [hideRequiredMarker]=\"true\">\n <mat-label>内容</mat-label>\n <textarea\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n placeholder=\"内容\"\n [(ngModel)]=\"detail().content\"\n ></textarea>\n </mat-form-field>\n </div>\n <!-- image -->\n <div class=\"lg:basis-1/2 px-3\">\n <div class=\"flex flex-row justify-center pb-4 p-1\">\n @if (selectedImg) {\n <img class=\"object-contain w-80 h-80\" [src]=\"selectedImg.url\" [alt]=\"selectedImg.alt\" />\n }\n @if (selectedImg) {\n <button mat-icon-button (click)=\"onDeleteMedia(detail().id, selectedImg)\">\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n <!-- media -->\n <div>\n <div class=\"flex flex-row flex-wrap cursor-pointer relative box-border\" fxLayout=\"row\">\n <div class=\"progress-bar\">\n @if (detail().isUploading) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n }\n </div>\n @for (media of detail().media; track media) {\n <div class=\"media-list-item\">\n <img class=\"tile-media\" (click)=\"onMediaItemClick(media)\" [src]=\"media.url\" [alt]=\"media.alt\" />\n </div>\n }\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload(detail().id, $event)\" #fileInput />\n <div class=\"add-button\">\n <div (click)=\"fileInput.click()\" class=\"tile-media flex justify-center items-center\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"48px\" viewBox=\"0 -960 960 960\" width=\"48px\" fill=\"#5f6368\">\n <path d=\"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z\" />\n </svg>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n@if (actions()) {\n <div class=\"flex flex-row justify-end p-3 gap-3\">\n <button mat-button class=\"max-h-8\" (click)=\"onDelete(detail())\">删除</button>\n <button mat-flat-button class=\"max-h-8\" (click)=\"onSave(detail())\">保存</button>\n </div>\n}\n<mat-divider></mat-divider>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogClose } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { last, remove } from 'lodash';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DetailItemComponent } from '../detail-item/detail-item.component';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CourseDetail } from '../../interfaces';\nimport { CourseService } from '../../services';\n\n@Component({\n selector: 'rolatech-course-details-dialog',\n templateUrl: './course-details-dialog.component.html',\n styleUrls: ['./course-details-dialog.component.scss'],\n imports: [\n MatIconModule,\n MatDividerModule,\n FormsModule,\n MatStepperModule,\n DetailItemComponent,\n MatButtonModule,\n MatDialogClose,\n ],\n})\nexport class CourseDetailsDialogComponent {\n courseId!: string;\n details: CourseDetail[] = [];\n constructor(\n private dialogRef: MatDialogRef<CourseDetailsDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private courseService: CourseService,\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n ) {\n this.courseId = data.courseId;\n }\n close() {\n this.dialogRef.close();\n }\n addDetail() {\n this.courseService\n .addDetail(this.courseId, {\n title: '',\n description: '',\n content: '',\n media: [],\n })\n .subscribe({\n next: (res: any) => {\n const detail = res.data;\n this.details.push({\n id: detail.id,\n title: '',\n description: '',\n content: '',\n media: [],\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onDetailMediaUpload(event: any) {}\n onDetailMediaDelete(event: any) {}\n onDetailSave(event: any) {}\n onDetailDelete(detail: CourseDetail) {\n this.courseService.deleteDetail(this.courseId, detail.id).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.data);\n remove(this.details, {\n id: detail.id,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n}\n","<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden mt-3 overflow-y-auto\">\n <form #detailForm=\"ngForm\" class=\"p-3\">\n <ng-template matStepLabel>详情</ng-template>\n @for (item of details; track item) {\n <rolatech-detail-item\n [detail]=\"item\"\n (upload)=\"onDetailMediaUpload($event)\"\n (deleteMedia)=\"onDetailMediaDelete($event)\"\n (save)=\"onDetailSave($event)\"\n (delete)=\"onDetailDelete($event)\"\n ></rolatech-detail-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addDetail()\">\n <mat-icon>add</mat-icon>\n <span>增加详情</span>\n </button>\n </div>\n </form>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-end items-center px-5\">\n <button mat-button [mat-dialog-close]=\"true\" cdkFocusInitial>保存</button>\n </div>\n</div>\n","import { Component, Inject, OnInit, viewChild } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA, MatDialogClose } from '@angular/material/dialog';\nimport { MatStepper, MatStepperModule } from '@angular/material/stepper';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { findLastIndex, remove } from 'lodash';\nimport { ScheduleItemComponent } from '../schedule-item/schedule-item.component';\nimport { PricingItemComponent } from '../pricing-item/pricing-item.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DetailItemComponent } from '../detail-item/detail-item.component';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { ImagePreviewDialogComponent, MediaListComponent, MediaListItemComponent } from '@rolatech/angular-components';\nimport { ScheduleDate, CourseDetail, CourseCategory } from '../../interfaces';\nimport { CategoryService, CourseService } from '../../services';\n\n@Component({\n selector: 'rolatech-course-edit-dialog',\n templateUrl: './course-edit-dialog.component.html',\n styleUrls: ['./course-edit-dialog.component.scss'],\n imports: [\n MatIconModule,\n MatDividerModule,\n MatStepperModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n MatSelectModule,\n MatOptionModule,\n MediaListComponent,\n MediaListItemComponent,\n DetailItemComponent,\n MatButtonModule,\n PricingItemComponent,\n ScheduleItemComponent,\n MatDialogClose,\n ],\n})\nexport class CourseEditDialogComponent implements OnInit {\n course: any;\n isUploading = false;\n details: any;\n pricing: any;\n schedule: any;\n courseType = [\n {\n key: 'ONLINE',\n value: '线上',\n },\n {\n key: 'OFFLINE',\n value: '线下',\n },\n {\n key: 'MIXED',\n value: '混合',\n },\n ];\n selectedCategoyIds!: string[];\n categories!: CourseCategory[];\n selectedCategory!: CourseCategory;\n classrooms: any;\n date = ScheduleDate;\n lastStepper = false;\n firstStepper = true;\n stepper = viewChild.required(MatStepper);\n\n constructor(\n private dialogRef: MatDialogRef<CourseEditDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n private categoryService: CategoryService,\n private courseService: CourseService,\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n ) {\n this.course = data.course;\n this.classrooms = data.classrooms;\n }\n\n ngOnInit(): void {\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n }\n close() {\n this.dialogRef.close();\n }\n compareFn(o1: any, o2: any) {\n return o1.id === o2.id;\n }\n addDetail() {\n if (!this.course.details) {\n this.course.details = [];\n }\n this.courseService\n .addDetail(this.course.id, {\n title: '',\n description: '',\n content: '',\n media: [],\n })\n .subscribe({\n next: (res: any) => {\n const detail = res.data;\n this.course.details.push({\n id: detail.id,\n title: '',\n description: '',\n content: '',\n media: [],\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n addSchedule() {\n if (!this.course.schedule) {\n this.course.schedule = [];\n }\n this.course.schedule.push({\n title: '',\n content: '',\n });\n }\n addPricing() {\n if (!this.course.pricing) {\n this.course.pricing = [];\n }\n this.course.pricing.push({\n min: 0,\n max: 0,\n total: 0,\n });\n }\n onSelectionChange(event: any) {\n this.selectedCategoyIds = event.value;\n }\n onStepperChange(event: any) {\n this.lastStepper = event.selectedIndex === 3;\n this.firstStepper = event.selectedIndex === 0;\n }\n previous() {\n this.stepper().previous();\n }\n next() {\n this.stepper().next();\n }\n onDetailMediaUpload(event: any) {}\n onDetailMediaDelete(event: any) {}\n onDetailSave(event: any) {}\n onDetailDelete(detail: CourseDetail) {\n this.courseService.deleteDetail(this.course.id, detail.id).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.message);\n remove(this.details, {\n id: detail.id,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\n maxWidth: '80vw',\n maxHeight: '80vh',\n height: '80%',\n width: '80%',\n panelClass: 'full-screen-modal',\n data: {\n media: this.course.media,\n selected: i,\n },\n });\n }\n onUpload(event: any) {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n if (this.course.media) {\n (this.course.media as any).push({\n url: reader.result,\n alt: 'upload image',\n });\n } else {\n this.course.media = [];\n (this.course.media as any).push({\n url: reader.result,\n alt: 'upload image',\n });\n }\n\n this.isUploading = true;\n const formData = new FormData();\n formData.append('file', file);\n\n this.courseService.upload(formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n const index = findLastIndex(this.course.media);\n // Replace item at index using native splice\n this.course.media.splice(index, 1, res.data);\n },\n error: (e: any) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n };\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n}\n","<div class=\"flex flex-col h-full overflow-hidden\">\n <div class=\"h-16 flex justify-between items-center px-5\">\n @if (data.title) {\n <div class=\"text-md font-medium\">{{ data.title }}</div>\n }\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <mat-icon fontIcon=\"close\"></mat-icon>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"flex-1 overflow-hidden mt-3 overflow-y-auto\">\n <mat-stepper #stepper (selectionChange)=\"onStepperChange($event)\">\n <mat-step [editable]=\"true\">\n <form #infoForm=\"ngForm\" class=\"py-3\">\n <ng-template matStepLabel>基本信息</ng-template>\n <div class=\"flex flex-col\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 课程名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"course.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 课程描述 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"course.description\"\n name=\"description\"\n required\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" ngModelGroup=\"categories\">\n <mat-label>分类</mat-label>\n <mat-select\n multiple\n name=\"id\"\n [compareWith]=\"compareFn\"\n [(ngModel)]=\"course.categories\"\n #select=\"matSelect\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @for (item of categories; track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>类型</mat-label>\n <mat-select name=\"type\" [(ngModel)]=\"course.type\">\n @for (item of courseType; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.value }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (course.type.toString() !== 'ONLINE') {\n <mat-form-field appearance=\"fill\" ngModelGroup=\"classroom\">\n <mat-label>教室</mat-label>\n <mat-select [(ngModel)]=\"course.classroom\" name=\"id\">\n @for (classroom of classrooms; track classroom) {\n <mat-option [value]=\"classroom.id\">\n <div class=\"flex gap-3\">\n <span>{{ classroom.name }}</span>\n <span> {{ classroom.address }}</span>\n </div>\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n </div>\n <div>\n <div class=\"py-3\">\n <h2>图片信息</h2>\n </div>\n <rolatech-media-list (upload)=\"onUpload($event)\" [isUploading]=\"isUploading\">\n @for (item of course.media; track item; let i = $index) {\n <rolatech-media-list-item [media]=\"item\" (mediaItemClick)=\"onImageClick(i)\"></rolatech-media-list-item>\n }\n </rolatech-media-list>\n </div>\n </form>\n </mat-step>\n <mat-step [editable]=\"true\">\n <form #detailForm=\"ngForm\" class=\"py-3\">\n <ng-template matStepLabel>详情</ng-template>\n @for (item of course.details; track item) {\n <rolatech-detail-item\n [detail]=\"item\"\n (upload)=\"onDetailMediaUpload($event)\"\n (deleteMedia)=\"onDetailMediaDelete($event)\"\n (save)=\"onDetailSave($event)\"\n (delete)=\"onDetailDelete($event)\"\n ></rolatech-detail-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addDetail()\">\n <mat-icon>add</mat-icon>\n <span>增加详情</span>\n </button>\n </div>\n </form>\n </mat-step>\n <mat-step [editable]=\"true\">\n <form #pricingForm=\"ngForm\" class=\"py-3\">\n <ng-template matStepLabel>价格</ng-template>\n <div>\n @for (item of course.pricing; track item) {\n <rolatech-pricing-item [pricing]=\"item\"> </rolatech-pricing-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addPricing()\">\n <mat-icon>add</mat-icon>\n <span>增加价格</span>\n </button>\n </div>\n </div>\n </form>\n </mat-step>\n <mat-step>\n <form #scheduleForm=\"ngForm\">\n <ng-template matStepLabel>课表</ng-template>\n <div class=\"flex flex-col\">\n @for (item of course.schedule; track item) {\n <rolatech-schedule-item [value]=\"item\"></rolatech-schedule-item>\n }\n <div class=\"mb-6\">\n <button mat-button (click)=\"addSchedule()\">\n <mat-icon>add</mat-icon>\n <span>增加课表</span>\n </button>\n </div>\n </div>\n </form>\n </mat-step>\n </mat-stepper>\n </div>\n <mat-divider></mat-divider>\n <div class=\"h-16 flex justify-end items-center px-5\">\n @if (!firstStepper) {\n <button mat-button mat-button (click)=\"previous()\">上一步</button>\n }\n @if (!lastStepper) {\n <button mat-button (click)=\"next()\">下一步</button>\n }\n @if (lastStepper) {\n <button mat-button [mat-dialog-close]=\"course\" cdkFocusInitial>保存</button>\n }\n </div>\n</div>\n","import { ViewportScroller } from '@angular/common';\nimport { Component, ElementRef, inject, input, OnInit, PLATFORM_ID } from '@angular/core';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\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 imports: [ThumbnailComponent],\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-[--rt-brand-color] 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 <rolatech-thumbnail\n [src]=\"item.url\"\n size=\"small\"\n mode=\"full\"\n [width]=\"item.width\"\n [height]=\"item.height\"\n ></rolatech-thumbnail>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\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 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]=\"['/', '@' + username()]\">\n <img [src]=\"avatar()\" class=\"w-11 h-11 rounded-full\" alt />\n </div>\n } @else {\n <div class=\"w-11 h-11 rounded-full bg-[--rt-brand-color]\"></div>\n }\n <div class=\"flex items-center text-lg font-bold cursor-pointer\">\n <a [routerLink]=\"['/', '@' + username()]\">\n <span>{{ name() }}</span>\n </a>\n <mat-icon color=\"primary\">verified</mat-icon>\n </div>\n </div>\n</div>\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, RichItemComponent, RichViewComponent } from '@rolatech/angular-components';\n@Component({\n imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent],\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 md: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-[--rt-base-background] 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 md:w-1/4 aspect-video bg-[--rt-base-background] rounded-lg\"></div>\n <div class=\"w-3/5 md:w-3/4 ml-3 py-1 flex flex-col justify-between\">\n <div class=\"space-y-3\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1\"></div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-1 py-1\"></div>\n </div>\n <div>\n <div class=\"h-2 bg-[--rt-base-background] rounded col-span-2 py-1\"></div>\n </div>\n </div>\n </div>\n }\n } @else {\n <rolatech-rich-view list>\n @for (item of courses; track item) {\n @defer {\n <rolatech-rich-item\n [routerLink]=\"['../../', item.id]\"\n [thumbnail]=\"item.media[0].url + '!w400'\"\n [title]=\"item.name\"\n [subtitle]=\"item.description\"\n [price]=\"item.pricing[0].total / 100\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n }\n</div>\n","import { Component, effect, 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, ContainerComponent, 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 imports: [\n AngularCommonModule,\n AngularComponentsModule,\n CourseInfoComponent,\n CourseSectionsComponent,\n CourseScheduleComponent,\n CourseDetailsComponent,\n CourseMediaComponent,\n CoursePricingComponent,\n CourseActionComponent,\n CommentsComponent,\n ContainerComponent,\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 authenticated = this.authService.authenticated;\n instructorName = '';\n username = '';\n inWishList = false;\n purchased = false;\n sections: CourseSection[] = [];\n type = CourseSectionLectureContentType;\n constructor() {\n super();\n effect(() => {\n if (this.authenticated()) {\n this.findPurchasedByCourseId();\n this.findWishlistBy();\n }\n });\n }\n ngOnInit(): void {\n this.findOne();\n this.findSections();\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 if (this.authenticated()) {\n if (this.inWishList) {\n this.removeFromWishlist();\n } else {\n this.addToWishlist();\n }\n } else {\n this.snackBarService.open('请先登录');\n }\n }\n checkout(e: any) {\n if (this.authenticated()) {\n this.router.navigateByUrl(`/cart/checkout/courses/${this.id}`);\n } else {\n this.snackBarService.open('请先登录');\n }\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.courseService.findWishlistBy(this.id).subscribe({\n next: (res: any) => {\n this.inWishList = res.data;\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-container>\n <div class=\"flex flex-col-reverse gap-3 md:flex-row w-full justify-between\">\n <div class=\"md: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 class=\"md:px-3\">\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-container>\n}\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, ContainerComponent, BaseComponent } from '@rolatech/angular-components';\n\n@Component({\n imports: [AngularCommonModule, AngularComponentsModule, ContainerComponent],\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-container>\n <div class=\"flex flex-col md:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 md:h-auto min-w-[240px]\">\n <div class=\"hidden md:block text-2xl font-medium py-3 md:px-1 px-3\">分类</div>\n <div\n class=\"flex flex-row md:flex-col md:h-full items-center md:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center md:mb-1 mr-2 md:mr-0\"\n routerLinkActive=\"course-layout-active\"\n routerLink=\"/courses\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">全部</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center mr-2 md:mr-0 md:mb-1\"\n routerLinkActive=\"course-layout-active\"\n [routerLink]=\"['../courses/categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <!-- <rolatech-list>\n <router-outlet></router-outlet>\n </rolatech-list> -->\n </rolatech-container>\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, OnDestroy, OnInit, PLATFORM_ID, effect, 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 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 authenticated = this.authService.authenticated;\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 constructor() {\n effect(() => {\n if (this.authenticated()) {\n this.findPurchasedByCourseId();\n }\n });\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 });\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 } 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 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(`/cart/checkout/courses/${this.courseId}`);\n }\n}\n","<div class=\"flex lg:flex-row flex-col justify-between w-full mt-2 lg:mt-4\">\n <div class=\"lg:w-[70%] flex flex-col items-start justify-center px-4 lg: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 class=\"hidden lg:block\">\n <rolatech-comments [itemId]=\"lectureId\"></rolatech-comments>\n </div>\n }\n </div>\n </div>\n <div class=\"lg:w-[30%] px-4 lg:px-0 lg: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 class=\"lg:hidden block px-4 lg:px-6\">\n <rolatech-comments [itemId]=\"lectureId\"></rolatech-comments>\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 { 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 loadComponent: () => import('./course-index/course-index.component').then((x) => x.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","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-course-manage-content',\n imports: [CommonModule],\n templateUrl: './course-manage-content.component.html',\n styleUrl: './course-manage-content.component.scss',\n})\nexport class CourseManageContentComponent {}\n","<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute } from '@angular/router';\nimport { findIndex, last, remove } from 'lodash';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ConfirmationDialogComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { DetailItemComponent } from '../../../components';\nimport { CourseDetail, CourseStatus, CourseType } from '../../../interfaces';\nimport { CourseService } from '../../../services';\n\n@Component({\n selector: 'rolatech-course-manage-details',\n templateUrl: './course-manage-details.component.html',\n styleUrls: ['./course-manage-details.component.scss'],\n imports: [DetailItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, CourseManageContentComponent],\n})\nexport class CourseManageDetailsComponent implements OnInit {\n route = inject(ActivatedRoute);\n courseService = inject(CourseService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n\n id: string;\n isLoading = false;\n isUploading = false;\n details: CourseDetail[] = [];\n status = CourseStatus;\n courseType: any = CourseType;\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.find();\n }\n find() {\n this.courseService.findDetails(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.details = res.data;\n }\n },\n });\n }\n addDetail() {\n if (!this.details) {\n this.details = [];\n }\n this.courseService\n .addDetail(this.id, {\n title: '',\n description: '',\n content: '',\n media: [],\n })\n .subscribe({\n next: (res: any) => {\n const detail = res.data;\n this.details.push({\n id: detail.id,\n title: '',\n description: '',\n content: '',\n media: [],\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onDetailMediaUpload(event: any) {\n const detailId = event.id;\n const index = findIndex(this.details, (item) => item.id === detailId);\n const file = event.data.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n if (!this.details[index].media) {\n this.details[index].media = [];\n }\n (this.details[index].media as any).push({\n url: reader.result,\n alt: 'upload image',\n });\n this.details[index].isUploading = true;\n const formData = new FormData();\n formData.append('file', file);\n this.courseService.uploadDetailMedia(this.id, detailId, formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n this.details[index].isUploading = false;\n const tmp = this.details[index].media as any;\n delete res.data.productDetail;\n this.details[index].media[this.details[index].media.length - 1] = res.data;\n },\n error: (e) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n };\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n onDetailMediaDelete(event: any) {\n const detailId = event.id;\n const mediaId = event.media.id;\n this.courseService.deleteDetailMedia(this.id, detailId, mediaId).subscribe({\n next: (res: any) => {\n const detail: any = this.details.find((item) => item.id === detailId);\n remove(detail.media, {\n id: mediaId,\n });\n },\n });\n }\n onDetailSave(detail: CourseDetail) {\n delete detail.isUploading;\n this.courseService.updateDetail(this.id, detail.id, detail).subscribe({\n next: (res: any) => {\n this.snackBar.open('保存成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n onDetailDelete(detail: CourseDetail) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除详情',\n message: '确定删除此详情吗?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.courseService.deleteDetail(this.id, detail.id).subscribe({\n next: (res: any) => {\n this.snackBar.open(res.data);\n remove(this.details, {\n id: detail.id,\n });\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"详情\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (detail of details; track detail) {\n <rolatech-detail-item\n [detail]=\"detail\"\n (upload)=\"onDetailMediaUpload($event)\"\n (deleteMedia)=\"onDetailMediaDelete($event)\"\n (save)=\"onDetailSave($event)\"\n (delete)=\"onDetailDelete($event)\"\n [actions]=\"true\"\n ></rolatech-detail-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addDetail()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>添加详情</span>\n </button>\n </div>\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { remove } from 'lodash';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BaseComponent, ConfirmationDialogComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { ScheduleItemComponent, CourseScheduleAddDialogComponent, CourseScheduleDialogComponent } from '../../../components';\nimport { Schedule, CourseStatus, CourseType } from '../../../interfaces';\nimport { CourseService } from '../../../services';\n\n@Component({\n selector: 'rolatech-course-manage-schedule',\n templateUrl: './course-manage-schedule.component.html',\n styleUrls: ['./course-manage-schedule.component.scss'],\n imports: [ScheduleItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, CourseManageContentComponent],\n})\nexport class CourseManageScheduleComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n isLoading = false;\n schedule: Schedule[] = [];\n status = CourseStatus;\n courseType: any = CourseType;\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n }\n find() {\n this.courseService.findSchedule(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.schedule = res.data;\n }\n },\n });\n }\n addSchedule() {\n const options = {\n width: '500px',\n title: '添加课表',\n cancelText: '取消',\n confirmText: '确认',\n component: CourseScheduleAddDialogComponent,\n data: {},\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (schedule) => {\n if (schedule) {\n this.courseService.addSchedule(this.id, schedule).subscribe({\n next: (res) => {\n this.schedule.push(res.data);\n this.snackBarService.open('添加成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n editSchedule() {\n const options = {\n width: '500px',\n height: '90%',\n title: '编辑课表',\n cancelText: '取消',\n confirmText: '确认',\n component: ScheduleItemComponent,\n data: {\n courseId: this.id,\n schedule: this.schedule,\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (result) => {\n if (result) {\n this.courseService.addSchedule(this.id, { schedule: result }).subscribe({\n next: (res) => {\n this.snackBarService.open('编辑成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n onScheduleSave(schedule: Schedule | any) {\n this.courseService.updateSchedule(this.id, schedule.id, schedule).subscribe({\n next: (res: any) => {\n this.snackBarService.open('保存成功');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n onScheduleDelete(schedule: Schedule | any) {\n const options = {\n title: '删除课表',\n message: '确定删除此课表吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((result) => {\n if (result) {\n this.courseService.deleteSchedule(this.id, schedule.id).subscribe({\n next: (res: any) => {\n remove(this.schedule, {\n id: schedule.id,\n });\n this.snackBarService.open(res.data);\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"课程表\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (item of schedule; track item) {\n <rolatech-schedule-item\n [value]=\"item\"\n [actions]=\"true\"\n (save)=\"onScheduleSave($event)\"\n (delete)=\"onScheduleDelete($event)\"\n >\n </rolatech-schedule-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addSchedule()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>增加课表</span>\n </button>\n </div>\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { remove } from 'lodash';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BaseComponent, ConfirmationDialogComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { PricingItemComponent, CoursePricingDialogComponent, CoursePricingAddDialogComponent } from '../../../components';\nimport { Pricing, CourseStatus, CourseType } from '../../../interfaces';\nimport { CourseService } from '../../../services';\n\n@Component({\n selector: 'rolatech-course-manage-pricing',\n templateUrl: './course-manage-pricing.component.html',\n styleUrls: ['./course-manage-pricing.component.scss'],\n imports: [PricingItemComponent, MatButtonModule, MatIconModule, ToolbarComponent, CourseManageContentComponent],\n})\nexport class CourseManagePricingComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n isLoading = false;\n pricing: Pricing[] = [];\n status = CourseStatus;\n courseType: any = CourseType;\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n }\n find() {\n this.courseService.findPricing(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.pricing = res.data;\n }\n },\n });\n }\n editPricing() {\n const options = {\n width: '500px',\n title: '编辑价格',\n height: '90%',\n cancelText: '取消',\n confirmText: '确认',\n component: CoursePricingAddDialogComponent,\n data: {\n courseId: this.id,\n pricing: this.pricing,\n },\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((result) => {\n if (result) {\n this.courseService.addPricing(this.id, { pricing: result }).subscribe({\n next: (res) => {\n this.snackBarService.open('编辑成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n });\n }\n addPricing() {\n const options = {\n width: '500px',\n title: '添加价格',\n cancelText: '取消',\n confirmText: '确认',\n component: CoursePricingAddDialogComponent,\n data: {},\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((pricing) => {\n if (pricing) {\n this.courseService.addPricing(this.id, { ...pricing, total: pricing.total * 100 }).subscribe({\n next: (res) => {\n this.pricing.push(res.data);\n this.snackBarService.open('添加成功');\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n });\n }\n\n onPricingSave(pricing: Pricing | any) {\n this.courseService.updatePricing(this.id, pricing.id, pricing).subscribe({\n next: (res: any) => {\n this.snackBarService.open('保存成功');\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n onPricingDelete(pricing: Pricing | any) {\n const options = {\n title: '删除价格',\n message: '确定删除此价格吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe((result) => {\n if (result) {\n this.courseService.deletePricing(this.id, pricing.id).subscribe({\n next: (res: any) => {\n remove(this.pricing, {\n id: pricing.id,\n });\n this.snackBarService.open(res.data);\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"价格\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (item of pricing; track item) {\n <rolatech-pricing-item\n [pricing]=\"item\"\n [actions]=\"true\"\n (save)=\"onPricingSave($event)\"\n (delete)=\"onPricingDelete($event)\"\n >\n </rolatech-pricing-item>\n }\n </div>\n <button mat-stroked-button (click)=\"addPricing()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>添加价格</span>\n </button>\n </div>\n</rolatech-course-manage-content>\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 BookingService extends BaseService {\n override init() {\n this.endpoint = 'partners/bookings';\n super.init();\n }\n items(options: any): Observable<any> {\n return this.http.get<any>(`${this.actionUrl}/items`, {\n params: options,\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 InstructorService extends BaseService {\n override init() {\n this.endpoint = 'instructors';\n super.init();\n }\n findMyClassrooms(options: any) {\n return this.http.get<any>(`${this.actionUrl}/classrooms/me`, {\n params: options,\n withCredentials: true,\n });\n }\n}\n","import { Component, OnInit, inject } from '@angular/core';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { clone } from 'lodash';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { Course, CourseCategory, CourseStatus } from '../../../interfaces';\nimport { CategoryService, CourseService } from '../../../services';\nimport { BookingService } from '../../../services/booking.service';\nimport { InstructorService } from '../../../services/instructor.service';\n\n@Component({\n selector: 'rolatech-course-manage-info',\n templateUrl: './course-manage-info.component.html',\n styleUrls: ['./course-manage-info.component.scss'],\n imports: [\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonModule,\n ToolbarComponent,\n CourseManageContentComponent,\n ],\n})\nexport class CourseManageInfoComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n categoryService = inject(CategoryService);\n instructorService = inject(InstructorService);\n bookingService = inject(BookingService);\n\n isLoading = false;\n course!: Course;\n status = CourseStatus;\n // courseType: any = CourseType;\n selectedCategoyIds!: string[];\n selectedClassroom: any;\n categories!: CourseCategory[];\n classrooms: any;\n bookedClassrooms: any;\n courseType = [\n {\n key: 'ONLINE',\n value: '线上',\n },\n {\n key: 'OFFLINE',\n value: '线下',\n },\n {\n key: 'MIXED',\n value: '混合',\n },\n ];\n\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n this.categoryService.find({}).subscribe({\n next: (res: any) => {\n this.categories = res.data;\n },\n });\n this.findClassrooms();\n this.findBookedClassrooms();\n }\n findBookedClassrooms() {\n this.bookingService.items({ status: 'paid' }).subscribe({\n next: (res: any) => {\n this.bookedClassrooms = res.data;\n },\n });\n }\n\n findClassrooms() {\n this.instructorService.findMyClassrooms({}).subscribe({\n next: (res) => {\n this.classrooms = res.data;\n },\n });\n }\n find() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.course = res.data;\n },\n });\n }\n compareFn(o1: CourseCategory, o2: CourseCategory) {\n return o1.id === o2?.id;\n }\n compareClassroom(o1: any, o2: any) {\n if (o1.room) {\n return (\n o1.latitude === o2?.latitude &&\n o1.longitude === o2?.longitude &&\n o1.room === o2.room &&\n o1.startAt === o2.startAt &&\n o1.endAt === o2.endAt\n );\n } else {\n return o1.latitude === o2?.latitude && o1.longitude === o2?.longitude;\n }\n }\n onSelectionChange(event: any) {\n this.selectedCategoyIds = event.value;\n }\n onClassroomSelected(event: any) {\n this.selectedClassroom = event.value;\n }\n update() {\n const { name, description, categories, type, classroom } = this.course;\n const finalClassroom = clone(classroom);\n finalClassroom.address = classroom.room ? classroom.address + ' ' + classroom.room + '室' : classroom.address;\n const data = {\n name,\n description,\n categories,\n type,\n classroom: finalClassroom,\n };\n this.courseService.update(this.id, data).subscribe({\n next: (res) => {\n this.snackBarService.open('保存成功');\n // this.router.navigate([`../${res.data.id}`], { relativeTo: this.route });\n },\n error: (e) => {\n this.snackBarService.open(e.message);\n },\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"基本信息\" class=\"hidden md:block\" divider></rolatech-toolbar>\n @if (course) {\n <div class=\"flex flex-col\">\n <form #courseForm=\"ngForm\" (ngSubmit)=\"update()\">\n <mat-form-field appearance=\"fill\">\n <mat-label> 课程名称 </mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"course.name\" name=\"name\" required />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> 课程描述 </mat-label>\n <textarea\n matInput\n type=\"text\"\n [(ngModel)]=\"course.description\"\n name=\"description\"\n required\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"3\"\n ></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" ngModelGroup=\"categories\" required>\n <mat-label>分类</mat-label>\n <mat-select\n multiple\n name=\"id\"\n [compareWith]=\"compareFn\"\n [(ngModel)]=\"course.categories\"\n #select=\"matSelect\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @for (item of categories; track item) {\n <mat-option [value]=\"item\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>类型</mat-label>\n <mat-select name=\"type\" [(ngModel)]=\"course.type\" required>\n @for (item of courseType; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.value }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n @if (course.type && course.type.toString() !== 'ONLINE') {\n <mat-form-field appearance=\"fill\" ngModelGroup=\"classroom\">\n <mat-label>教室</mat-label>\n <mat-select\n name=\"id\"\n [(ngModel)]=\"course.classroom\"\n [compareWith]=\"compareClassroom\"\n (selectionChange)=\"onClassroomSelected($event)\"\n required\n >\n <mat-optgroup label=\"自有教室\">\n @for (classroom of classrooms; track classroom) {\n <mat-option [value]=\"classroom\">\n <div class=\"flex gap-3\">\n <span>{{ classroom.name }}</span>\n <span> {{ classroom.address }}</span>\n </div>\n </mat-option>\n }\n </mat-optgroup>\n <mat-optgroup label=\"已购教室\">\n @for (item of bookedClassrooms; track item) {\n <mat-option [value]=\"item\">\n <div class=\"flex flex-col py-3\">\n <span class=\"font-bold\"> {{ item.address }} {{ item.room }}室</span>\n <span class=\"text-md\"> {{ item.startAt }} - {{ item.endAt }}</span>\n </div>\n </mat-option>\n }\n </mat-optgroup>\n </mat-select>\n </mat-form-field>\n }\n </form>\n </div>\n <div>\n <button mat-flat-button type=\"primary\" (click)=\"update()\">保存</button>\n </div>\n }\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute } from '@angular/router';\nimport { findLastIndex } from 'lodash';\n\nimport {\n ConfirmationDialogComponent,\n ImagePreviewDialogComponent,\n MediaListComponent,\n MediaListItemComponent,\n ToolbarComponent,\n} from '@rolatech/angular-components';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { CourseService } from '../../../services';\nimport { Media, CourseStatus, CourseType } from '../../../interfaces';\n\nconst SIZE = 10 * 1024 * 1024; // file slice size 10MB\n\n@Component({\n selector: 'rolatech-course-manage-media',\n templateUrl: './course-manage-media.component.html',\n styleUrls: ['./course-manage-media.component.scss'],\n imports: [MediaListComponent, MediaListItemComponent, ToolbarComponent, CourseManageContentComponent],\n})\nexport class CourseManageMediaComponent implements OnInit {\n route = inject(ActivatedRoute);\n courseService = inject(CourseService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n id: string;\n isUploading = false;\n isLoading = false;\n media: Media[] = [];\n status = CourseStatus;\n courseType: any = CourseType;\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.find();\n }\n find() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.media = res.data.media || [];\n },\n });\n }\n onImageClick(i: any) {\n const dialogRef = this.dialog.open(ImagePreviewDialogComponent, {\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 private createFileChunk(file: any, size = SIZE) {\n const fileChunkList: any = [];\n let cur = 0;\n while (cur < file.size) {\n fileChunkList.push({ file: file.slice(cur, cur + size) });\n cur += size;\n }\n return fileChunkList;\n }\n\n onUploadMedia2(event: any) {\n const file = event.target.files[0];\n const reader = new FileReader();\n reader.onload = (e) => {};\n\n const fileChunkList = this.createFileChunk(file);\n fileChunkList.forEach((item) => {});\n }\n onUploadMedia(event: any) {\n const file = event.target.files[0];\n // 5MB * 1024 * 1024 = 5242880\n // if (file?.size > 5242880) {\n // this.snackBar.open('尺寸过大, 请修改后上传');\n // this.isUploading = false;\n // return;\n // }\n\n if (file) {\n const reader = new FileReader();\n const formData = new FormData();\n formData.append('file', file);\n\n reader.readAsDataURL(file);\n reader.onload = () => {\n const img: any = new Image();\n img.onload = () => {\n this.media.push({\n url: img.src,\n alt: 'upload image',\n width: img.width,\n height: img.height,\n });\n\n this.isUploading = true;\n };\n img.src = reader.result; // This is the data URL\n };\n this.courseService.uploadMedia(this.id, formData).subscribe({\n next: (res: any) => {\n this.isUploading = false;\n const index = findLastIndex(this.media);\n // Replace item at index using native splice\n this.media.splice(index, 1, res.data);\n },\n error: (e: any) => {\n this.isUploading = false;\n this.snackBar.open('上传失败: ' + e.message);\n },\n });\n reader.onerror = (error) => {\n this.isUploading = false;\n };\n }\n }\n onMediaDelete(item: any) {\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\n width: '400px',\n data: {\n title: '删除图片',\n message: '确定删除这张课程图片吗?',\n },\n });\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.courseService.deleteMedia(this.id, item.id).subscribe({\n next: (res) => {\n this.media = this.media.filter((m) => m.id !== item.id);\n this.snackBar.open('删除成功');\n },\n error: (e) => {\n this.snackBar.open(e.message);\n },\n });\n }\n });\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"图片信息\" class=\"hidden md:block\" divider></rolatech-toolbar>\n <div>\n <p>*图片文件大小限制在5MB以下*</p>\n <rolatech-media-list (upload)=\"onUploadMedia($event)\" [isUploading]=\"isUploading\">\n @for (item of media; track item; let i = $index) {\n <rolatech-media-list-item\n [media]=\"item\"\n (mediaItemClick)=\"onImageClick(i)\"\n (deleteMedia)=\"onMediaDelete(item)\"\n ></rolatech-media-list-item>\n }\n </rolatech-media-list>\n </div>\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { BaseComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { Observable, Observer, concatMap, from, map, take } from 'rxjs';\nimport { CourseManageContentComponent } from '../course-manage-content/course-manage-content.component';\nimport { CourseService } from '../../../services';\nimport {\n CourseSectionItemComponent,\n CourseSectionLectureItemComponent,\n CourseSectionLectureVideoDialogComponent,\n} from '../../../components';\nimport { CourseSection } from '../../../interfaces';\n\n@Component({\n selector: 'rolatech-course-manage-section',\n templateUrl: './course-manage-section.component.html',\n styleUrls: ['./course-manage-section.component.scss'],\n imports: [\n CourseSectionItemComponent,\n CourseSectionLectureItemComponent,\n MatButtonModule,\n MatIconModule,\n MatProgressBarModule,\n ToolbarComponent,\n CourseManageContentComponent,\n ],\n})\nexport class CourseManageSectionComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n sections: CourseSection[] = [];\n hasUnsaved = false;\n editId = '';\n lectureEditId = '';\n chunkSize = 5 * 1024 * 1024; // 切片大小\n fileIndex = 0; // 当前正在被遍历的文件下标\n ngOnInit(): void {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n this.find();\n }\n find() {\n this.courseService.getCourseSection(this.id).subscribe({\n next: (res) => {\n if (res.data) {\n this.sections = res.data;\n }\n },\n });\n }\n addSection() {\n const section = {\n title: '',\n description: '',\n };\n this.courseService.addCourseSection(this.id, section).subscribe({\n next: (res: any) => {\n this.sections.push(res.data);\n this.editId = res.data.id;\n },\n });\n this.hasUnsaved = false;\n }\n onCancel(event: any) {\n this.sections.pop();\n this.hasUnsaved = false;\n }\n onSectionSave(event: any) {\n const { id } = event;\n this.courseService.updateCourseSection(id, event).subscribe({\n next: (res) => {\n this.hasUnsaved = false;\n this.snackBarService.open('保存成功');\n },\n });\n this.hasUnsaved = false;\n }\n onSectionEdit(event: any) {\n this.editId = event.id;\n // this.editIndex = this.sections.find((item: any) => item.id === event.id);\n }\n onSectionDelete(event: any) {\n const { id } = event;\n\n const options = {\n title: '确认删除吗',\n message: '删除这个章节吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n const data = {\n name: res,\n };\n this.courseService.deleteCourseSection(id).subscribe({\n next: (res) => {\n this.sections.pop();\n\n this.hasUnsaved = false;\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n addLecture(section: any) {\n const lecture = {\n title: '',\n type: 'VIDEO',\n };\n this.courseService.addLecture(section.id, lecture).subscribe({\n next: (res: any) => {\n this.lectureEditId = res.data.id;\n if (section.lectures) {\n section.lectures.push(res.data);\n } else {\n const lectures: any = [];\n lectures.push(res.data);\n section.lectures = lectures;\n }\n },\n });\n }\n onAddLecture(event: any) {}\n onLectureSave(lecture: any) {\n this.courseService.updateLecture(lecture.id, lecture).subscribe({\n next: (res: any) => {\n this.snackBarService.open('保存成功');\n },\n });\n }\n onLectureEdit(lecture: any) {}\n onMediaEdit(lecture: any, video: any) {\n const { id } = lecture;\n const options = {\n title: lecture.title,\n cancelText: '取消',\n confirmText: '保存',\n data: lecture,\n width: '80vw',\n height: '100%',\n component: CourseSectionLectureVideoDialogComponent,\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n // this.courseService.deleteLecture(id).subscribe({\n // next: (res) => {},\n // error: (error) => {\n // this.snackBarService.open(error.message);\n // },\n // });\n }\n },\n });\n }\n onLectureDelete(section: any, lecture: any) {\n const { id } = lecture;\n const options = {\n title: '确认删除吗',\n message: '删除这一小节吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.courseService.deleteLecture(id).subscribe({\n next: (res) => {\n const index = section.lectures.findIndex((item: any) => item.id === id);\n section.lectures.splice(index, 1);\n this.hasUnsaved = false;\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n onMediaUploadInit(lecture: any, event: any) {\n const file = event.data.target.files[0];\n\n if (!file) {\n return;\n }\n const item = {\n url: URL.createObjectURL(file),\n };\n lecture.item = item;\n lecture.isUploading = true;\n lecture.item.progress = 0;\n\n const reader = new FileReader();\n if (reader.readyState === FileReader.EMPTY) {\n reader.onload = async (e: any) => {\n const fileBuffer = e.target.result;\n crypto.subtle.digest('SHA-256', fileBuffer).then((res) => {\n const hashArray = Array.from(new Uint8Array(res));\n const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');\n const data: any = { hash: hashHex, filename: file.name, fileType: file.type };\n this.courseService.uploadVideoInit(lecture.id, data).subscribe({\n next: (res: any) => {\n this.uploadPart(lecture, res.data.uploadId, file);\n },\n error: (e) => {},\n });\n });\n };\n reader.onerror = (error) => {};\n reader.readAsArrayBuffer(file);\n }\n }\n uploadFile(lecture: any, file: any, index: number, uploadId: string) {\n const reader = new FileReader();\n return new Observable((observer: Observer<FormData>) => {\n reader.readAsArrayBuffer(file);\n reader.onload = (e: any) => {\n const fileBuffer = e.target.result;\n crypto.subtle.digest('SHA-256', fileBuffer).then((res) => {\n const hashArray = Array.from(new Uint8Array(res));\n const hashHex = hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('');\n const formData: any = new FormData();\n formData.append('file', file);\n formData.append('uploadId', uploadId);\n formData.append('number', index + 1);\n formData.append('hash', hashHex);\n\n this.courseService.uploadVideoPartsToLecture(lecture.id, formData).subscribe({\n next: (res: any) => {\n observer.next(res);\n observer.complete();\n },\n error: (e) => {\n this.snackBarService.open('上传失败: ' + e.message);\n },\n });\n });\n };\n reader.onerror = (error) => {\n this.snackBarService.open('上传失败: ' + error);\n };\n });\n }\n uploadPart(lecture: any, uploadId: string, file: any) {\n let uploadedCount = 0;\n const fileChunkList = this.createFileChunk(file);\n const numberOfChunks = fileChunkList.length;\n from(fileChunkList)\n .pipe(\n concatMap((val: any, index) => this.uploadFile(lecture, val.file, index, uploadId)),\n take(numberOfChunks),\n )\n .subscribe((res) => {\n uploadedCount++;\n const p = ((uploadedCount / numberOfChunks) * 100).toFixed(0);\n lecture.item.progress = parseFloat(p);\n if (uploadedCount === numberOfChunks) {\n this.completePartUpload(lecture, { uploadId });\n }\n });\n }\n completePartUpload(lecture: any, data: any) {\n data.duration = lecture.item.duration;\n this.courseService.completePartUpload(lecture.id, data).subscribe({\n next: (res: any) => {\n lecture.isUploading = false;\n lecture.item.id = res.data.id;\n },\n error: (e) => {\n this.snackBarService.open('上传失败: ' + e.message);\n },\n });\n }\n\n onMediaUpload(lecture: any, event: any) {\n const lectureId = event.id;\n const file = event.data.target.files[0];\n if (!file) {\n return;\n }\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n const formData = new FormData();\n formData.append('file', file);\n this.courseService.uploadVideoToLecture(lectureId, formData).subscribe({\n next: (res: any) => {\n lecture.isUploading = false;\n lecture.item = res.data;\n },\n error: (e) => {\n lecture.isUploading = false;\n this.snackBarService.open('上传失败: ' + e.message);\n },\n });\n };\n reader.onerror = (error) => {};\n }\n onMediaDelete(lecture: any, event: any) {\n // lecture.item = null;\n const { id } = event;\n const options = {\n title: '确认删除吗',\n message: '删除这个视频吗?',\n cancelText: '取消',\n confirmText: '确认',\n };\n this.dialogService.open(options);\n this.dialogService.confirmed().subscribe({\n next: (res) => {\n if (res) {\n this.courseService.deleteLectureVideo(id).subscribe({\n next: (res) => {\n lecture.item = null;\n this.snackBarService.open(res.data);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n },\n });\n }\n createFileChunk(file: any, size = this.chunkSize) {\n const fileChunkList: any = [];\n let count = 0;\n while (count < file.size) {\n fileChunkList.push({\n file: file.slice(count, count + size),\n });\n count += size;\n }\n return fileChunkList;\n }\n}\n","<rolatech-course-manage-content>\n <rolatech-toolbar title=\"章节\" class=\"hidden md:block\" divider> </rolatech-toolbar>\n <div>\n <div>\n @for (section of sections; track $index) {\n <div class=\"bg-[--rt-raised-background] p-2 mb-2 rounded-lg\">\n <rolatech-course-section-item\n [section]=\"section\"\n (edit)=\"onSectionEdit($event)\"\n (save)=\"onSectionSave($event)\"\n (delete)=\"onSectionDelete($event)\"\n [editId]=\"editId\"\n >\n <div class=\"bg-[--rt-base-background] md:ml-8 mt-3 rounded-md divide-y divide-dashed\">\n @if (section?.lectures) {\n @for (lecture of section.lectures; track $index) {\n <div>\n <rolatech-course-section-lecture-item\n [lecture]=\"lecture\"\n (save)=\"onLectureSave($event)\"\n (delete)=\"onLectureDelete(section, $event)\"\n (edit)=\"onLectureEdit($event)\"\n (upload)=\"onMediaUploadInit(lecture, $event)\"\n (mediaEdit)=\"onMediaEdit(lecture, $event)\"\n (deleteMedia)=\"onMediaDelete(lecture, $event)\"\n [editId]=\"lectureEditId\"\n ></rolatech-course-section-lecture-item>\n </div>\n }\n }\n <div class=\"p-3\">\n <button mat-flat-button class=\"max-h-8\" (click)=\"addLecture(section)\">\n <mat-icon>add</mat-icon>\n <span>增加小节</span>\n </button>\n </div>\n </div>\n </rolatech-course-section-item>\n </div>\n }\n </div>\n @if (!hasUnsaved) {\n <button mat-stroked-button (click)=\"addSection()\" class=\"mt-3\">\n <mat-icon>add</mat-icon>\n <span>增加章节</span>\n </button>\n }\n </div>\n</rolatech-course-manage-content>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { RouterLink, RouterLinkActive, RouterOutlet, ActivatedRoute } from '@angular/router';\nimport { CourseService } from '../../../services';\nimport { Course, CourseStatus } from '../../../interfaces';\n\n@Component({\n selector: 'rolatech-course-manage-layout',\n templateUrl: './course-manage-layout.component.html',\n styleUrl: './course-manage-layout.component.scss',\n imports: [RouterLink, RouterLinkActive, MatButtonModule, RouterOutlet],\n})\nexport class CourseManageLayoutComponent implements OnInit {\n id: string;\n course!: Course;\n submitted = false;\n accepted = false;\n isDraft = false;\n route = inject(ActivatedRoute);\n courseService = inject(CourseService);\n dialog = inject(MatDialog);\n snackBar = inject(MatSnackBar);\n\n constructor() {\n this.id = this.route.parent?.snapshot.paramMap.get('id') as string;\n }\n ngOnInit(): void {\n this.get();\n }\n get() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.course = res.data;\n this.updateStatus();\n },\n });\n }\n updateStatus() {\n this.isDraft = this.course.status.toString() === 'DRAFT' || this.course.status.toString() === 'PENDING';\n this.accepted = this.course.status.toString() === 'ACCEPTED';\n }\n submitForReview() {\n this.courseService.review(this.id).subscribe({\n next: (res) => {\n this.snackBar.open('提交成功, 等待审核');\n\n this.course.status = CourseStatus['审核中' as keyof typeof CourseStatus];\n this.updateStatus();\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n publish() {\n this.courseService.publish(this.id).subscribe({\n next: (res) => {\n this.snackBar.open('发布成功');\n this.course.status = CourseStatus['已发布' as keyof typeof CourseStatus];\n this.updateStatus();\n },\n error: (error) => {\n this.snackBar.open(error.message);\n },\n });\n }\n}\n","<div class=\"flex flex-col md:flex-row m-auto\">\n <div\n class=\"min-w-[256px] px-3 flex flex-row md:flex-col md:h-full items-center md:items-start h-16 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">课程信息</div>\n <a routerLink=\"./info\" routerLinkActive=\"manage-active\" class=\"p-2\">基本信息</a>\n <a routerLink=\"./media\" routerLinkActive=\"manage-active\" class=\"p-2\">图片</a>\n <a routerLink=\"./details\" routerLinkActive=\"manage-active\" class=\"p-2\">详情</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">课程内容</div>\n <a routerLink=\"./section\" routerLinkActive=\"manage-active\" class=\"p-2\">章节</a>\n <a routerLink=\"./schedule\" routerLinkActive=\"manage-active\" class=\"p-2\">课表</a>\n </div>\n <div class=\"flex flex-row md:flex-col md:w-full\">\n <div class=\"hidden md:flex text-xl font-bold h-14 items-center px-2\">其他信息</div>\n <a routerLink=\"./pricing\" routerLinkActive=\"manage-active\" class=\"p-2\">价格</a>\n </div>\n\n @if (isDraft) {\n <div class=\"md:mt-6 ml-3 md:ml-2\">\n <!-- <button mat-stroked-button (click)=\"publish()\">预览</button> -->\n <button mat-flat-button (click)=\"submitForReview()\">提交审核</button>\n </div>\n }\n\n @if (accepted) {\n <div class=\"md:mt-6 md:ml-2\">\n <button mat-flat-button color=\"primary\" (click)=\"publish()\">发布课程</button>\n </div>\n }\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n</div>\n","import { CourseManageDetailsComponent } from './course-manage-details/course-manage-details.component';\nimport { CourseManageScheduleComponent } from './course-manage-schedule/course-manage-schedule.component';\nimport { CourseManagePricingComponent } from './course-manage-pricing/course-manage-pricing.component';\nimport { CourseManageInfoComponent } from './course-manage-info/course-manage-info.component';\nimport { CourseManageMediaComponent } from './course-manage-media/course-manage-media.component';\nimport { Routes } from '@angular/router';\nimport { CourseManageSectionComponent } from './course-manage-section/course-manage-section.component';\nimport { CourseManageLayoutComponent } from './course-manage-layout/course-manage-layout.component';\n\nexport const courseManageRoutes: Routes = [\n {\n path: '',\n component: CourseManageLayoutComponent,\n children: [\n {\n path: 'info',\n component: CourseManageInfoComponent,\n },\n {\n path: 'media',\n component: CourseManageMediaComponent,\n },\n {\n path: 'details',\n component: CourseManageDetailsComponent,\n },\n {\n path: 'pricing',\n component: CourseManagePricingComponent,\n },\n {\n path: 'schedule',\n component: CourseManageScheduleComponent,\n },\n {\n path: 'section',\n component: CourseManageSectionComponent,\n },\n ],\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["fromServices.services","i2","i1","i3","i4","i7","i9","i2.CourseService","i6","i5","i8","i2.CategoryService","i10","i11","i12","i13"],"mappings":"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"}