cloud-ide-academics 0.0.36 → 0.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/cloud-ide-academics-bonafide-request-form.component-Cf1e9jtg.mjs +112 -0
- package/fesm2022/cloud-ide-academics-bonafide-request-form.component-Cf1e9jtg.mjs.map +1 -0
- package/fesm2022/cloud-ide-academics-bonafide-request-list.component-CsFlYVci.mjs +121 -0
- package/fesm2022/cloud-ide-academics-bonafide-request-list.component-CsFlYVci.mjs.map +1 -0
- package/fesm2022/cloud-ide-academics-bonafide.service-B_HDaTmS.mjs +121 -0
- package/fesm2022/cloud-ide-academics-bonafide.service-B_HDaTmS.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-DJQTpKeq.mjs → cloud-ide-academics-class-program-term-create.component-DJnAsJ1b.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-DJQTpKeq.mjs.map → cloud-ide-academics-class-program-term-create.component-DJnAsJ1b.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-class-program-term-list.component-BpjWSltB.mjs → cloud-ide-academics-class-program-term-list.component-C_ahVXJg.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-class-program-term-list.component-BpjWSltB.mjs.map → cloud-ide-academics-class-program-term-list.component-C_ahVXJg.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-cloud-ide-academics-DTKiLHAW.mjs → cloud-ide-academics-cloud-ide-academics-CI-kRbx-.mjs} +32 -13
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-CI-kRbx-.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-program-class-create.component-B6xB_hrJ.mjs → cloud-ide-academics-program-class-create.component-ChwCyeeG.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-program-class-create.component-B6xB_hrJ.mjs.map → cloud-ide-academics-program-class-create.component-ChwCyeeG.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-program-class-list.component-BLR9XYoZ.mjs → cloud-ide-academics-program-class-list.component-C-bRdT2a.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-program-class-list.component-BLR9XYoZ.mjs.map → cloud-ide-academics-program-class-list.component-C-bRdT2a.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-student-list.component-DwweQJh-.mjs → cloud-ide-academics-student-list.component-Bjwr-QFa.mjs} +200 -200
- package/fesm2022/cloud-ide-academics-student-list.component-Bjwr-QFa.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-teacher-list.component-BaWKpb8C.mjs → cloud-ide-academics-teacher-list.component-1hEG5FBF.mjs} +204 -204
- package/fesm2022/cloud-ide-academics-teacher-list.component-1hEG5FBF.mjs.map +1 -0
- package/fesm2022/cloud-ide-academics.mjs +1 -1
- package/package.json +1 -1
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-DTKiLHAW.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-student-list.component-DwweQJh-.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-teacher-list.component-BaWKpb8C.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-academics-student-list.component-DwweQJh-.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/student-management/components/student-list/student-list.component.ts"],"sourcesContent":["import { Component, OnInit, OnDestroy, inject, signal, computed, viewChild, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { DestroyRef } from '@angular/core';\r\nimport {\r\n CideIconComponent,\r\n CideEleDropdownComponent,\r\n CideEleButtonComponent,\r\n CideEleDataGridComponent,\r\n CideSelectComponent,\r\n TemplateContext,\r\n DropdownItem,\r\n NotificationService,\r\n GridEvent,\r\n ConfirmationService\r\n} from 'cloud-ide-element';\r\nimport { CideLytSharedWrapperComponent, ComponentContextService, RightsService } from 'cloud-ide-layout';\r\nimport { USER_SERVICE_TOKEN, IUserMasterService } from 'cloud-ide-shared';\r\nimport {\r\n AuthUserMst,\r\n AuthUserMstListPayload,\r\n authUserMstListControllerResponse,\r\n generateStringFromObject,\r\n CoreUserTypeMapping\r\n} from 'cloud-ide-lms-model';\r\n\r\ninterface Student extends AuthUserMst, Record<string, unknown> {\r\n user_type_mapping?: CoreUserTypeMapping;\r\n student_id?: string;\r\n admission_data?: any;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-academics-student-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CideIconComponent,\r\n CideEleDropdownComponent,\r\n CideEleButtonComponent,\r\n CideEleDataGridComponent,\r\n CideLytSharedWrapperComponent\r\n ],\r\n template: `\r\n <cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"shared_wrapper_setup_param\">\r\n <div class=\"tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden\">\r\n <!-- Header Section -->\r\n <div class=\"tw-flex-shrink-0 tw-w-full tw-px-4 sm:tw-px-6 tw-py-3 tw-bg-gray-50 tw-border-b tw-border-gray-200\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between\">\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">school</cide-ele-icon>\r\n <div>\r\n <h5 class=\"tw-text-sm tw-font-semibold tw-text-gray-900\">Student Management</h5>\r\n <p class=\"tw-text-xs tw-text-gray-600\">Manage and view all student profiles</p>\r\n </div>\r\n </div>\r\n <button cideEleButton variant=\"primary\" size=\"sm\" (click)=\"createNewStudent()\" leftIcon=\"add\">\r\n Add Student\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid Section -->\r\n <div class=\"tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden\">\r\n <cide-ele-data-grid\r\n [config]=\"gridConfig()\"\r\n [templateRenderers]=\"templateRenderers()\"\r\n (gridEvent)=\"onGridEvent($event)\">\r\n </cide-ele-data-grid>\r\n </div>\r\n </div>\r\n\r\n <!-- Student Details Template -->\r\n <ng-template #studentDetailsRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-start tw-space-x-3 tw-py-3\">\r\n <div class=\"tw-flex-shrink-0 tw-mt-0.5\">\r\n <div class=\"tw-w-10 tw-h-10 tw-bg-blue-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">person</cide-ele-icon>\r\n </div>\r\n </div>\r\n <div class=\"tw-min-w-0 tw-flex-1 tw-space-y-1\">\r\n <div class=\"tw-text-sm tw-font-semibold tw-text-gray-900 tw-leading-5\">\r\n {{ row?.user_fullname || getFullName(row) }}\r\n </div>\r\n @if (row?.user_type_mapping?.syutm_type_specific_id) {\r\n <div class=\"tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono\">\r\n <span class=\"tw-font-medium\">Student ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}\r\n </div>\r\n }\r\n @if (row?.user_username) {\r\n <div class=\"tw-text-xs tw-text-gray-500 tw-leading-4\">\r\n Username: {{ row.user_username }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Contact Info Template -->\r\n <ng-template #contactInfoRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-py-3 tw-space-y-1\">\r\n @if (row?.user_emailid) {\r\n <div class=\"tw-text-xs tw-text-gray-900 tw-flex tw-items-center\">\r\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2\">email</cide-ele-icon>\r\n <span class=\"tw-truncate\">{{ row.user_emailid }}</span>\r\n </div>\r\n }\r\n @if (row?.user_mobileno) {\r\n <div class=\"tw-text-xs tw-text-gray-600 tw-flex tw-items-center\">\r\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2\">phone</cide-ele-icon>\r\n <span class=\"tw-truncate\">{{ row.user_mobileno }}</span>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Status Template -->\r\n <ng-template #statusRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-justify-center tw-py-3\">\r\n @if (row?.user_isactive) {\r\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800\">\r\n Active\r\n </span>\r\n } @else {\r\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-red-100 tw-text-red-800\">\r\n Inactive\r\n </span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Actions Template -->\r\n <ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\" let-column=\"column\">\r\n <cide-ele-dropdown\r\n [items]=\"getActionDropdownItems(row)\"\r\n (itemClick)=\"onDropdownItemClick($event, row)\"\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n icon=\"more_vert\">\r\n </cide-ele-dropdown>\r\n </ng-template>\r\n </cide-lyt-shared-wrapper>\r\n `,\r\n styles: [`\r\n :host {\r\n @apply tw-w-full tw-h-full tw-flex tw-flex-col;\r\n }\r\n `]\r\n})\r\nexport class StudentListComponent implements OnInit, OnDestroy {\r\n shared_wrapper_setup_param = { sypg_page_code: \"academics_student_list\" };\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly userMasterService = inject(USER_SERVICE_TOKEN) as IUserMasterService;\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly notificationService = inject(NotificationService);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n private readonly componentContextService = inject(ComponentContextService);\r\n private readonly rightsService = inject(RightsService);\r\n\r\n // ViewChild for templates\r\n studentDetailsRendererTemplate = viewChild<TemplateRef<TemplateContext>>('studentDetailsRendererTemplate');\r\n contactInfoRendererTemplate = viewChild<TemplateRef<TemplateContext>>('contactInfoRendererTemplate');\r\n statusRendererTemplate = viewChild<TemplateRef<TemplateContext>>('statusRendererTemplate');\r\n actionsDropdownRendererTemplate = viewChild<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\r\n\r\n // State\r\n students = signal<Student[]>([]);\r\n loading = signal<boolean>(false);\r\n pageIndex = signal<number>(1);\r\n pageSize = signal<number>(10);\r\n total = signal<number>(0);\r\n searchQuery = signal<string>('');\r\n\r\n // Grid configuration\r\n gridConfig = computed(() => ({\r\n id: 'students-grid',\r\n responsive: true,\r\n data: this.students(),\r\n columns: [\r\n {\r\n key: 'student_details',\r\n header: 'Student Details',\r\n type: 'custom' as any,\r\n width: '300px',\r\n sortable: true,\r\n renderer: 'studentDetailsRendererTemplate'\r\n },\r\n {\r\n key: 'contact_info',\r\n header: 'Contact Information',\r\n type: 'custom' as any,\r\n width: '250px',\r\n sortable: false,\r\n renderer: 'contactInfoRendererTemplate'\r\n },\r\n {\r\n key: 'user_isactive',\r\n header: 'Status',\r\n type: 'custom' as any,\r\n width: '120px',\r\n sortable: true,\r\n renderer: 'statusRendererTemplate'\r\n },\r\n {\r\n key: 'actions',\r\n header: 'Actions',\r\n type: 'actions' as any,\r\n width: '100px',\r\n sortable: false,\r\n renderer: 'actionsDropdownRendererTemplate'\r\n }\r\n ],\r\n pagination: {\r\n enabled: true,\r\n pageSize: this.pageSize(),\r\n pageSizeOptions: [10, 25, 50, 100],\r\n showQuickJump: true,\r\n showPageInfo: true,\r\n showRefresh: true\r\n },\r\n search: {\r\n enabled: true,\r\n placeholder: 'Search students by name, ID, email...',\r\n searchableColumns: ['user_fullname', 'user_username', 'user_emailid'],\r\n debounceMs: 300\r\n },\r\n loading: {\r\n useDefer: true,\r\n skeletonRows: 5,\r\n showOverlay: false\r\n },\r\n rowHeight: 70\r\n }));\r\n\r\n templateRenderers = computed(() => ({\r\n studentDetailsRendererTemplate: this.studentDetailsRendererTemplate(),\r\n contactInfoRendererTemplate: this.contactInfoRendererTemplate(),\r\n statusRendererTemplate: this.statusRendererTemplate(),\r\n actionsDropdownRendererTemplate: this.actionsDropdownRendererTemplate()\r\n }));\r\n\r\n // Rights computed signals\r\n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\r\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\r\n canDelete = computed(() => this.rightsService.hasRight('DELETE'));\r\n canView = computed(() => this.rightsService.hasRight('VIEW'));\r\n\r\n ngOnInit(): void {\r\n // Initialize rights for student management\r\n this.rightsService.initializeRights('student_list');\r\n this.loadStudents();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Cleanup handled by takeUntilDestroyed\r\n }\r\n\r\n loadStudents(): void {\r\n this.loading.set(true);\r\n const payload: AuthUserMstListPayload = {\r\n pageIndex: this.pageIndex(),\r\n pageSize: this.pageSize(),\r\n query: this.searchQuery() || undefined,\r\n pagination: true\r\n };\r\n\r\n this.userMasterService.getUserList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response: authUserMstListControllerResponse) => {\r\n if (response.success && response.data) {\r\n // Filter for students only based on user_type_mapping\r\n const students = (response.data as Student[]).filter(user => \r\n user.user_type_mapping?.syutm_user_type === 'STUDENT'\r\n );\r\n this.students.set(students);\r\n this.total.set(students.length);\r\n } else {\r\n this.students.set([]);\r\n this.total.set(0);\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Error loading students:', error);\r\n this.notificationService.error('Failed to load students. Please try again.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n onGridEvent(event: GridEvent): void {\r\n if (event.type === 'pageChange') {\r\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data) {\r\n this.pageIndex.set(event.data['pageIndex'] as number);\r\n this.loadStudents();\r\n }\r\n } else if (event.type === 'search') {\r\n if (event.data && typeof event.data === 'object' && 'query' in event.data) {\r\n this.searchQuery.set(event.data['query'] as string);\r\n this.pageIndex.set(1);\r\n this.loadStudents();\r\n }\r\n } else if (event.type === 'refresh') {\r\n this.loadStudents();\r\n }\r\n }\r\n\r\n getActionDropdownItems(row: Student): DropdownItem[] {\r\n return [\r\n { id: 'view', label: 'View Profile', icon: 'visibility' },\r\n { id: 'edit', label: 'Edit', icon: 'edit' },\r\n { id: 'delete', label: 'Delete', icon: 'delete' }\r\n ];\r\n }\r\n\r\n onDropdownItemClick(item: DropdownItem, row: Student): void {\r\n switch (item.id) {\r\n case 'view':\r\n this.viewStudent(row);\r\n break;\r\n case 'edit':\r\n this.editStudent(row);\r\n break;\r\n case 'delete':\r\n this.deleteStudent(row);\r\n break;\r\n }\r\n }\r\n\r\n createNewStudent(): void {\r\n if (!this.rightsService.hasRight('CREATE')) {\r\n this.notificationService.error('You do not have permission to create students');\r\n return;\r\n }\r\n this.router.navigate(['/control-panel/academics/student/create']);\r\n }\r\n\r\n viewStudent(student: Student): void {\r\n if (!this.rightsService.hasRight('VIEW')) {\r\n this.notificationService.error('You do not have permission to view students');\r\n return;\r\n }\r\n const query = generateStringFromObject({ user_id: student._id });\r\n this.router.navigate(['/control-panel/academics/student/view', query]);\r\n }\r\n\r\n editStudent(student: Student): void {\r\n if (!this.rightsService.hasRight('EDIT')) {\r\n this.notificationService.error('You do not have permission to edit students');\r\n return;\r\n }\r\n const query = generateStringFromObject({ user_id: student._id });\r\n this.router.navigate(['/control-panel/academics/student/edit', query]);\r\n }\r\n\r\n deleteStudent(student: Student): void {\r\n this.confirmationService.confirmDelete(student.user_fullname || 'Unknown')\r\n .then((confirmed) => {\r\n if (confirmed && student._id) {\r\n this.userMasterService.deleteUserMaster(student._id)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: () => {\r\n this.notificationService.success('Student deleted successfully');\r\n this.loadStudents();\r\n },\r\n error: () => {\r\n this.notificationService.error('Failed to delete student');\r\n }\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n // User cancelled - no action needed\r\n });\r\n }\r\n\r\n getFullName(user: any): string {\r\n const parts = [user.user_firstname, user.user_middlename, user.user_lastname].filter(Boolean);\r\n return parts.length > 0 ? parts.join(' ') : 'Unknown';\r\n }\r\n}\r\n\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-academics-teacher-list.component-BaWKpb8C.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/teacher-management/components/teacher-list/teacher-list.component.ts"],"sourcesContent":["import { Component, OnInit, OnDestroy, inject, signal, computed, viewChild, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { DestroyRef } from '@angular/core';\r\nimport {\r\n CideIconComponent,\r\n CideEleDropdownComponent,\r\n CideEleButtonComponent,\r\n CideEleDataGridComponent,\r\n CideSelectComponent,\r\n TemplateContext,\r\n DropdownItem,\r\n NotificationService,\r\n GridEvent,\r\n ConfirmationService\r\n} from 'cloud-ide-element';\r\nimport { CideLytSharedWrapperComponent, ComponentContextService, RightsService } from 'cloud-ide-layout';\r\nimport { USER_SERVICE_TOKEN, IUserMasterService } from 'cloud-ide-shared';\r\nimport {\r\n AuthUserMst,\r\n AuthUserMstListPayload,\r\n authUserMstListControllerResponse,\r\n generateStringFromObject,\r\n CoreUserTypeMapping\r\n} from 'cloud-ide-lms-model';\r\n\r\ninterface Teacher extends AuthUserMst, Record<string, unknown> {\r\n user_type_mapping?: CoreUserTypeMapping;\r\n teacher_id?: string;\r\n department?: string;\r\n subject?: string;\r\n specialization?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-academics-teacher-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CideIconComponent,\r\n CideEleDropdownComponent,\r\n CideEleButtonComponent,\r\n CideEleDataGridComponent,\r\n CideLytSharedWrapperComponent\r\n ],\r\n template: `\r\n <cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"shared_wrapper_setup_param\">\r\n <div class=\"tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden\">\r\n <!-- Header Section -->\r\n <div class=\"tw-flex-shrink-0 tw-w-full tw-px-4 sm:tw-px-6 tw-py-3 tw-bg-gray-50 tw-border-b tw-border-gray-200\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between\">\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <cide-ele-icon class=\"tw-text-purple-600 tw-w-5 tw-h-5\">person</cide-ele-icon>\r\n <div>\r\n <h5 class=\"tw-text-sm tw-font-semibold tw-text-gray-900\">Teacher Management</h5>\r\n <p class=\"tw-text-xs tw-text-gray-600\">Manage and view all teacher profiles</p>\r\n </div>\r\n </div>\r\n @if (canCreate()) {\r\n <button cideEleButton variant=\"primary\" size=\"sm\" (click)=\"createNewTeacher()\" leftIcon=\"add\">\r\n Add Teacher\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid Section -->\r\n <div class=\"tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden\">\r\n <cide-ele-data-grid\r\n [config]=\"gridConfig()\"\r\n [templateRenderers]=\"templateRenderers()\"\r\n (gridEvent)=\"onGridEvent($event)\">\r\n </cide-ele-data-grid>\r\n </div>\r\n </div>\r\n\r\n <!-- Teacher Details Template -->\r\n <ng-template #teacherDetailsRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-start tw-space-x-3 tw-py-3\">\r\n <div class=\"tw-flex-shrink-0 tw-mt-0.5\">\r\n <div class=\"tw-w-10 tw-h-10 tw-bg-purple-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center\">\r\n <cide-ele-icon class=\"tw-text-purple-600 tw-w-5 tw-h-5\">person</cide-ele-icon>\r\n </div>\r\n </div>\r\n <div class=\"tw-min-w-0 tw-flex-1 tw-space-y-1\">\r\n <div class=\"tw-text-sm tw-font-semibold tw-text-gray-900 tw-leading-5\">\r\n {{ row?.user_fullname || getFullName(row) }}\r\n </div>\r\n @if (row?.user_type_mapping?.syutm_type_specific_id) {\r\n <div class=\"tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono\">\r\n <span class=\"tw-font-medium\">Teacher ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}\r\n </div>\r\n }\r\n @if (row?.user_username) {\r\n <div class=\"tw-text-xs tw-text-gray-500 tw-leading-4\">\r\n Username: {{ row.user_username }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Contact Info Template -->\r\n <ng-template #contactInfoRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-py-3 tw-space-y-1\">\r\n @if (row?.user_emailid) {\r\n <div class=\"tw-text-xs tw-text-gray-900 tw-flex tw-items-center\">\r\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2\">email</cide-ele-icon>\r\n <span class=\"tw-truncate\">{{ row.user_emailid }}</span>\r\n </div>\r\n }\r\n @if (row?.user_mobileno) {\r\n <div class=\"tw-text-xs tw-text-gray-600 tw-flex tw-items-center\">\r\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2\">phone</cide-ele-icon>\r\n <span class=\"tw-truncate\">{{ row.user_mobileno }}</span>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Status Template -->\r\n <ng-template #statusRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-justify-center tw-py-3\">\r\n @if (row?.user_isactive) {\r\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800\">\r\n Active\r\n </span>\r\n } @else {\r\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-red-100 tw-text-red-800\">\r\n Inactive\r\n </span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Actions Template -->\r\n <ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\" let-column=\"column\">\r\n <cide-ele-dropdown\r\n [items]=\"getActionDropdownItems(row)\"\r\n (itemClick)=\"onDropdownItemClick($event, row)\"\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n icon=\"more_vert\">\r\n </cide-ele-dropdown>\r\n </ng-template>\r\n </cide-lyt-shared-wrapper>\r\n `,\r\n styles: [`\r\n :host {\r\n @apply tw-w-full tw-h-full tw-flex tw-flex-col;\r\n }\r\n `]\r\n})\r\nexport class TeacherListComponent implements OnInit, OnDestroy {\r\n shared_wrapper_setup_param = { sypg_page_code: \"academics_teacher_list\" };\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly userMasterService = inject(USER_SERVICE_TOKEN) as IUserMasterService;\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly notificationService = inject(NotificationService);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n private readonly componentContextService = inject(ComponentContextService);\r\n private readonly rightsService = inject(RightsService);\r\n\r\n // ViewChild for templates\r\n teacherDetailsRendererTemplate = viewChild<TemplateRef<TemplateContext>>('teacherDetailsRendererTemplate');\r\n contactInfoRendererTemplate = viewChild<TemplateRef<TemplateContext>>('contactInfoRendererTemplate');\r\n statusRendererTemplate = viewChild<TemplateRef<TemplateContext>>('statusRendererTemplate');\r\n actionsDropdownRendererTemplate = viewChild<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\r\n\r\n // State\r\n teachers = signal<Teacher[]>([]);\r\n loading = signal<boolean>(false);\r\n pageIndex = signal<number>(1);\r\n pageSize = signal<number>(10);\r\n total = signal<number>(0);\r\n searchQuery = signal<string>('');\r\n\r\n // Rights computed signals\r\n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\r\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\r\n canDelete = computed(() => this.rightsService.hasRight('DELETE'));\r\n canView = computed(() => this.rightsService.hasRight('VIEW'));\r\n\r\n // Grid configuration\r\n gridConfig = computed(() => ({\r\n id: 'teachers-grid',\r\n responsive: true,\r\n data: this.teachers(),\r\n columns: [\r\n {\r\n key: 'teacher_details',\r\n header: 'Teacher Details',\r\n type: 'custom' as any,\r\n width: '300px',\r\n sortable: true,\r\n renderer: 'teacherDetailsRendererTemplate'\r\n },\r\n {\r\n key: 'contact_info',\r\n header: 'Contact Information',\r\n type: 'custom' as any,\r\n width: '250px',\r\n sortable: false,\r\n renderer: 'contactInfoRendererTemplate'\r\n },\r\n {\r\n key: 'user_isactive',\r\n header: 'Status',\r\n type: 'custom' as any,\r\n width: '120px',\r\n sortable: true,\r\n renderer: 'statusRendererTemplate'\r\n },\r\n {\r\n key: 'actions',\r\n header: 'Actions',\r\n type: 'actions' as any,\r\n width: '100px',\r\n sortable: false,\r\n renderer: 'actionsDropdownRendererTemplate'\r\n }\r\n ],\r\n pagination: {\r\n enabled: true,\r\n pageSize: this.pageSize(),\r\n pageSizeOptions: [10, 25, 50, 100],\r\n showQuickJump: true,\r\n showPageInfo: true,\r\n showRefresh: true\r\n },\r\n search: {\r\n enabled: true,\r\n placeholder: 'Search teachers by name, ID, email...',\r\n searchableColumns: ['user_fullname', 'user_username', 'user_emailid'],\r\n debounceMs: 300\r\n },\r\n loading: {\r\n useDefer: true,\r\n skeletonRows: 5,\r\n showOverlay: false\r\n },\r\n rowHeight: 70\r\n }));\r\n\r\n templateRenderers = computed(() => ({\r\n teacherDetailsRendererTemplate: this.teacherDetailsRendererTemplate(),\r\n contactInfoRendererTemplate: this.contactInfoRendererTemplate(),\r\n statusRendererTemplate: this.statusRendererTemplate(),\r\n actionsDropdownRendererTemplate: this.actionsDropdownRendererTemplate()\r\n }));\r\n\r\n ngOnInit(): void {\r\n // Initialize rights for teacher management\r\n this.rightsService.initializeRights('teacher_list');\r\n this.loadTeachers();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Cleanup handled by takeUntilDestroyed\r\n }\r\n\r\n loadTeachers(): void {\r\n this.loading.set(true);\r\n const payload: AuthUserMstListPayload = {\r\n pageIndex: this.pageIndex(),\r\n pageSize: this.pageSize(),\r\n query: this.searchQuery() || undefined,\r\n pagination: true\r\n };\r\n\r\n this.userMasterService.getUserList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response: authUserMstListControllerResponse) => {\r\n if (response.success && response.data) {\r\n // Filter for teachers only based on user_type_mapping\r\n const teachers = (response.data as Teacher[]).filter(user => \r\n user.user_type_mapping?.syutm_user_type === 'TEACHER'\r\n );\r\n this.teachers.set(teachers);\r\n this.total.set(teachers.length);\r\n } else {\r\n this.teachers.set([]);\r\n this.total.set(0);\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Error loading teachers:', error);\r\n this.notificationService.error('Failed to load teachers. Please try again.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n onGridEvent(event: GridEvent): void {\r\n if (event.type === 'pageChange') {\r\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data) {\r\n this.pageIndex.set(event.data['pageIndex'] as number);\r\n this.loadTeachers();\r\n }\r\n } else if (event.type === 'search') {\r\n if (event.data && typeof event.data === 'object' && 'query' in event.data) {\r\n this.searchQuery.set(event.data['query'] as string);\r\n this.pageIndex.set(1);\r\n this.loadTeachers();\r\n }\r\n } else if (event.type === 'refresh') {\r\n this.loadTeachers();\r\n }\r\n }\r\n\r\n getActionDropdownItems(row: Teacher): DropdownItem[] {\r\n return [\r\n { id: 'view', label: 'View Profile', icon: 'visibility' },\r\n { id: 'edit', label: 'Edit', icon: 'edit' },\r\n { id: 'delete', label: 'Delete', icon: 'delete' }\r\n ];\r\n }\r\n\r\n onDropdownItemClick(item: DropdownItem, row: Teacher): void {\r\n switch (item.id) {\r\n case 'view':\r\n this.viewTeacher(row);\r\n break;\r\n case 'edit':\r\n this.editTeacher(row);\r\n break;\r\n case 'delete':\r\n this.deleteTeacher(row);\r\n break;\r\n }\r\n }\r\n\r\n createNewTeacher(): void {\r\n if (!this.rightsService.hasRight('CREATE')) {\r\n this.notificationService.error('You do not have permission to create teachers');\r\n return;\r\n }\r\n this.router.navigate(['/control-panel/academics/teacher/create']);\r\n }\r\n\r\n viewTeacher(teacher: Teacher): void {\r\n if (!this.rightsService.hasRight('VIEW')) {\r\n this.notificationService.error('You do not have permission to view teachers');\r\n return;\r\n }\r\n const query = generateStringFromObject({ user_id: teacher._id });\r\n this.router.navigate(['/control-panel/academics/teacher/view', query]);\r\n }\r\n\r\n editTeacher(teacher: Teacher): void {\r\n if (!this.rightsService.hasRight('EDIT')) {\r\n this.notificationService.error('You do not have permission to edit teachers');\r\n return;\r\n }\r\n const query = generateStringFromObject({ user_id: teacher._id });\r\n this.router.navigate(['/control-panel/academics/teacher/edit', query]);\r\n }\r\n\r\n deleteTeacher(teacher: Teacher): void {\r\n if (!this.rightsService.hasRight('DELETE')) {\r\n this.notificationService.error('You do not have permission to delete teachers');\r\n return;\r\n }\r\n this.confirmationService.confirmDelete(teacher.user_fullname || 'Unknown')\r\n .then((confirmed) => {\r\n if (confirmed && teacher._id) {\r\n this.userMasterService.deleteUserMaster(teacher._id)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: () => {\r\n this.notificationService.success('Teacher deleted successfully');\r\n this.loadTeachers();\r\n },\r\n error: () => {\r\n this.notificationService.error('Failed to delete teacher');\r\n }\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n // User cancelled - no action needed\r\n });\r\n }\r\n\r\n getFullName(user: any): string {\r\n const parts = [user.user_firstname, user.user_middlename, user.user_lastname].filter(Boolean);\r\n return parts.length > 0 ? parts.join(' ') : 'Unknown';\r\n }\r\n}\r\n\r\n"],"names":[],"mappings":"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"}
|