cloud-ide-academics 0.0.24 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-C5FnRTND.mjs → cloud-ide-academics-class-program-term-create.component-DDM2oLT-.mjs} +4 -4
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-C5FnRTND.mjs.map → cloud-ide-academics-class-program-term-create.component-DDM2oLT-.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-class-program-term-list.component-BaFtTKcS.mjs → cloud-ide-academics-class-program-term-list.component-DG2G880p.mjs} +29 -5
- package/fesm2022/cloud-ide-academics-class-program-term-list.component-DG2G880p.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-cloud-ide-academics-DxRzuyxa.mjs → cloud-ide-academics-cloud-ide-academics-BTOmrraW.mjs} +18 -18
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-BTOmrraW.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-program-class-create.component-Co60CYKC.mjs → cloud-ide-academics-program-class-create.component-Rhogi_gF.mjs} +2 -3
- package/fesm2022/cloud-ide-academics-program-class-create.component-Rhogi_gF.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-program-class-list.component-jPpK9V-X.mjs → cloud-ide-academics-program-class-list.component-Db_VXPLN.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-program-class-list.component-jPpK9V-X.mjs.map → cloud-ide-academics-program-class-list.component-Db_VXPLN.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-program-term-section-create.component-Dx9JQOwW.mjs → cloud-ide-academics-program-term-section-create.component-BD5NgphA.mjs} +35 -1
- package/fesm2022/cloud-ide-academics-program-term-section-create.component-BD5NgphA.mjs.map +1 -0
- package/fesm2022/cloud-ide-academics.mjs +1 -1
- package/package.json +1 -1
- package/fesm2022/cloud-ide-academics-class-program-term-list.component-BaFtTKcS.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-DxRzuyxa.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-program-class-create.component-Co60CYKC.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-program-term-section-create.component-Dx9JQOwW.mjs.map +0 -1
|
@@ -8,7 +8,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
|
8
8
|
import { NotificationService, ConfirmationService, CideInputComponent, CideEleButtonComponent, CideIconComponent, CideSelectComponent } from 'cloud-ide-element';
|
|
9
9
|
import { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';
|
|
10
10
|
import { CideCoreGeneralMasterService } from 'cloud-ide-core';
|
|
11
|
-
import { a as CideLytAcademicYearService, C as CideLytProgramClassService } from './cloud-ide-academics-cloud-ide-academics-
|
|
11
|
+
import { a as CideLytAcademicYearService, C as CideLytProgramClassService } from './cloud-ide-academics-cloud-ide-academics-BTOmrraW.mjs';
|
|
12
12
|
import { generateObjectFromString } from 'cloud-ide-lms-model';
|
|
13
13
|
|
|
14
14
|
class ProgramClassCreateComponent {
|
|
@@ -52,7 +52,6 @@ class ProgramClassCreateComponent {
|
|
|
52
52
|
ngOnInit() {
|
|
53
53
|
this.initializeComponent();
|
|
54
54
|
this.setupFormSubscriptions();
|
|
55
|
-
this.updateBreadcrumbData();
|
|
56
55
|
}
|
|
57
56
|
/**
|
|
58
57
|
* Update breadcrumb data based on mode
|
|
@@ -423,4 +422,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
423
422
|
}], ctorParameters: () => [] });
|
|
424
423
|
|
|
425
424
|
export { ProgramClassCreateComponent };
|
|
426
|
-
//# sourceMappingURL=cloud-ide-academics-program-class-create.component-
|
|
425
|
+
//# sourceMappingURL=cloud-ide-academics-program-class-create.component-Rhogi_gF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-ide-academics-program-class-create.component-Rhogi_gF.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/program-class-management/components/program-class-create/program-class-create.component.ts","../../../projects/cloud-ide-academics/src/lib/collection/program-class-management/components/program-class-create/program-class-create.component.html"],"sourcesContent":["import { Component, inject, signal, OnInit, DestroyRef, OnDestroy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormBuilder, FormGroup, FormArray, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CideInputComponent, CideTextareaComponent, CideEleButtonComponent, CideIconComponent, CideSelectComponent, NotificationService, ConfirmationService } from 'cloud-ide-element';\r\nimport { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';\r\nimport { CideCoreGeneralMasterService } from 'cloud-ide-core';\r\nimport { CideLytAcademicYearService } from '../../../academic-year-management';\r\nimport { CideLytProgramClassService } from '../../services/program-class.service';\r\nimport { AcaAcademicYear, ICoreSygms, generateObjectFromString } from 'cloud-ide-lms-model';\r\n\r\n// Interfaces based on the model files\r\ninterface ProgramClass {\r\n _id?: string;\r\n acacpm_class_program_id_sygms?: string;\r\n acacpm_alise_title?: string;\r\n acacpm_academic_year_id_acayr?: string;\r\n acacpm_entity_id_syen?: string;\r\n acacpm_isactive?: boolean;\r\n}\r\n\r\n\r\ninterface AcademicYear {\r\n _id?: string;\r\n acayr_name?: string;\r\n acayr_code?: string;\r\n}\r\n\r\ninterface ClassProgram {\r\n _id?: string;\r\n sygmt_name?: string;\r\n sygmt_code?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-academics-program-class-create',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n CideInputComponent,\r\n CideEleButtonComponent,\r\n CideIconComponent,\r\n CideSelectComponent,\r\n CideLytSharedWrapperComponent\r\n ],\r\n templateUrl: './program-class-create.component.html'\r\n})\r\nexport class ProgramClassCreateComponent implements OnInit, OnDestroy {\r\n // Dependency injection\r\n private destroyRef = inject(DestroyRef);\r\n private fb = inject(FormBuilder);\r\n private generalMasterService = inject(CideCoreGeneralMasterService);\r\n private academicYearService = inject(CideLytAcademicYearService);\r\n private programClassService = inject(CideLytProgramClassService);\r\n private router = inject(Router);\r\n private route = inject(ActivatedRoute);\r\n private location = inject(Location);\r\n private appState = inject(AppStateHelperService);\r\n private notificationService = inject(NotificationService);\r\n private confirmationService = inject(ConfirmationService);\r\n\r\n programClassForm: FormGroup;\r\n loading = signal(false);\r\n error = signal<string | null>(null);\r\n\r\n // Program class information from route\r\n programClassId = signal<string>('');\r\n isEditMode = signal(false);\r\n isViewMode = signal(false);\r\n\r\n // Data signals\r\n academicYears = signal<AcademicYear[]>([]);\r\n classPrograms = signal<ClassProgram[]>([]);\r\n\r\n // Options for dropdowns\r\n academicYearOptions = signal<AcaAcademicYear[]>([]);\r\n classProgramOptions = signal<ICoreSygms[]>([]);\r\n\r\n // Signal for breadcrumb data that will be passed to shared wrapper\r\n breadcrumbData = signal<{ id: string; label: string; icon?: string; url?: string }[]>([]);\r\n\r\n constructor() {\r\n this.programClassForm = this.fb.group({\r\n // Basic Program Class Information\r\n acacpm_class_program_id_sygms: ['', [Validators.required]],\r\n acacpm_alise_title: ['', [Validators.required, Validators.minLength(2)]],\r\n acacpm_academic_year_id_acayr: ['', [Validators.required]],\r\n acacpm_entity_id_syen: [''], // Set automatically from app state\r\n acacpm_isactive: [true]\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initializeComponent();\r\n this.setupFormSubscriptions();\r\n }\r\n\r\n /**\r\n * Update breadcrumb data based on mode\r\n */\r\n private updateBreadcrumbData(): void {\r\n const additionalItems: { id: string; label: string; icon?: string; url?: string }[] = [];\r\n \r\n if (this.isViewMode()) {\r\n additionalItems.push({\r\n id: 'view',\r\n label: 'View',\r\n icon: 'visibility',\r\n url: undefined\r\n });\r\n } else if (this.isEditMode()) {\r\n additionalItems.push({\r\n id: 'edit',\r\n label: 'Edit',\r\n icon: 'edit',\r\n url: undefined\r\n });\r\n } else {\r\n additionalItems.push({\r\n id: 'create',\r\n label: 'Create',\r\n icon: 'add',\r\n url: undefined\r\n });\r\n }\r\n \r\n this.breadcrumbData.set(additionalItems);\r\n }\r\n\r\n /**\r\n * Initialize component\r\n */\r\n private initializeComponent(): void {\r\n // Set entity ID from app state\r\n this.setEntityFromAppState();\r\n\r\n // Get program class information from route (for edit/view mode)\r\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\r\n const queryParams = params['query'];\r\n console.log('🔍 Route params:', queryParams);\r\n\r\n if (queryParams) {\r\n // Query parameters passed (following page-controls pattern)\r\n const queryData = generateObjectFromString(queryParams);\r\n if (queryData?.acacpm_id) {\r\n this.programClassId.set(queryData.acacpm_id as string);\r\n this.isEditMode.set(true);\r\n this.loadProgramClassData(queryData.acacpm_id as string);\r\n }\r\n } else {\r\n // Check URL path for edit/view mode\r\n const url = this.router.url;\r\n if (url.includes('/view/')) {\r\n this.isViewMode.set(true);\r\n // Extract ID from URL path\r\n const pathSegments = url.split('/');\r\n const id = pathSegments[pathSegments.length - 1];\r\n if (id) {\r\n this.programClassId.set(id);\r\n this.loadProgramClassData(id);\r\n }\r\n } else if (url.includes('/edit/')) {\r\n this.isEditMode.set(true);\r\n // Extract ID from URL path\r\n const pathSegments = url.split('/');\r\n const id = pathSegments[pathSegments.length - 1];\r\n if (id) {\r\n this.programClassId.set(id);\r\n this.loadProgramClassData(id);\r\n }\r\n } else {\r\n // Create mode\r\n this.isEditMode.set(false);\r\n this.isViewMode.set(false);\r\n }\r\n }\r\n\r\n // Always load dropdown options\r\n this.loadDropdownOptions();\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Set entity ID from app state\r\n */\r\n private setEntityFromAppState(): void {\r\n const activeEntity = this.appState.activeEntity();\r\n if (activeEntity?._id) {\r\n this.programClassForm.patchValue({\r\n acacpm_entity_id_syen: activeEntity._id\r\n });\r\n console.log('✅ Entity ID set from app state:', activeEntity._id);\r\n } else {\r\n console.warn('⚠️ No active entity found in app state');\r\n }\r\n }\r\n\r\n /**\r\n * Set default academic year to the current one\r\n */\r\n private setDefaultAcademicYear(academicYears: AcaAcademicYear[]): void {\r\n // Find the academic year with acayrmp_iscurrent: true\r\n const currentAcademicYear = academicYears.find(year => year.acayr_iscurrent === true);\r\n \r\n if (currentAcademicYear) {\r\n this.programClassForm.patchValue({\r\n acacpm_academic_year_id_acayr: currentAcademicYear._id\r\n });\r\n console.log('✅ Default academic year set to current:', currentAcademicYear.acayr_name, currentAcademicYear._id);\r\n } else {\r\n console.warn('⚠️ No current academic year found (acayrmp_iscurrent: true)');\r\n }\r\n }\r\n\r\n /**\r\n * Setup form subscriptions for auto-population\r\n */\r\n private setupFormSubscriptions(): void {\r\n // Listen for class program selection changes\r\n this.programClassForm.get('acacpm_class_program_id_sygms')?.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((selectedClassProgramId) => {\r\n if (selectedClassProgramId) {\r\n this.updateProgramClassName(selectedClassProgramId);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Update program class name based on selected class program\r\n */\r\n private updateProgramClassName(selectedClassProgramId: string): void {\r\n const selectedClassProgram = this.classProgramOptions().find(option => option._id === selectedClassProgramId);\r\n \r\n if (selectedClassProgram && selectedClassProgram.sygms_title) {\r\n // Only update if the title field is empty or if user hasn't manually changed it\r\n const currentTitle = this.programClassForm.get('acacpm_alise_title')?.value;\r\n if (!currentTitle || currentTitle.trim() === '') {\r\n this.programClassForm.patchValue({\r\n acacpm_alise_title: selectedClassProgram.sygms_title\r\n });\r\n console.log('✅ Program class title auto-populated:', selectedClassProgram.sygms_title);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Load program class data for edit/view mode\r\n */\r\n private loadProgramClassData(programClassId: string): void {\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n // Create payload for getting program class by ID\r\n const payload = {\r\n acacpm_id: programClassId\r\n };\r\n\r\n // Load program class data\r\n this.programClassService.getProgramClassById(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success && response.data) {\r\n console.log('📚 Program class data loaded:', response.data);\r\n this.populateFormWithProgramClassData(response.data);\r\n \r\n // Disable form if in view mode\r\n if (this.isViewMode()) {\r\n this.programClassForm.disable();\r\n }\r\n } else {\r\n console.error('❌ Failed to load program class data');\r\n this.error.set('Failed to load program class data');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error loading program class data:', error);\r\n this.error.set('Error loading program class data');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Populate form with program class data\r\n */\r\n private populateFormWithProgramClassData(data: any): void {\r\n this.programClassForm.patchValue({\r\n acacpm_class_program_id_sygms: data.acacpm_class_program_id_sygms?._id || data.acacpm_class_program_id_sygms,\r\n acacpm_alise_title: data.acacpm_alise_title,\r\n acacpm_academic_year_id_acayr: data.acacpm_academic_year_id_acayr?._id || data.acacpm_academic_year_id_acayr,\r\n acacpm_entity_id_syen: data.acacpm_entity_id_syen?._id || data.acacpm_entity_id_syen,\r\n acacpm_isactive: data.acacpm_isactive\r\n });\r\n }\r\n\r\n /**\r\n * Load dropdown options\r\n */\r\n private loadDropdownOptions(): void {\r\n // Load academic year options from academic year service\r\n this.academicYearService.getAcademicYearList({})\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n console.log('🔍 Academic Year API Response:', response);\r\n if (response?.success && response.data) {\r\n console.log('📚 Academic years loaded from service:', response.data);\r\n this.academicYearOptions.set(response.data);\r\n console.log('✅ academicYearOptions signal updated:', this.academicYearOptions());\r\n \r\n // Set default academic year to the current one\r\n this.setDefaultAcademicYear(response.data);\r\n } else {\r\n console.warn('⚠️ No academic year data received from service');\r\n this.academicYearOptions.set([]);\r\n }\r\n },\r\n error: (error) => {\r\n console.error('❌ Error loading academic years from service:', error);\r\n this.academicYearOptions.set([]);\r\n }\r\n });\r\n\r\n // Load class program options from general master service\r\n this.generalMasterService.getMasterList({ sygmt_code: 'class_program_type' })\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n console.log('🔍 General Master API Response:', response);\r\n if (response?.success && response.data) {\r\n console.log('📚 Class program types loaded from general master:', response.data);\r\n // Use the response data directly without transformation\r\n this.classProgramOptions.set(response.data);\r\n console.log('✅ classProgramOptions signal updated:', this.classProgramOptions());\r\n } else {\r\n console.warn('⚠️ No class program type data received from general master');\r\n this.classProgramOptions.set([]);\r\n }\r\n },\r\n error: (error) => {\r\n console.error('❌ Error loading class program types from general master:', error);\r\n this.classProgramOptions.set([]);\r\n }\r\n });\r\n }\r\n\r\n\r\n onSubmit() {\r\n if (this.isViewMode()) {\r\n this.location.back();\r\n return;\r\n }\r\n\r\n if (this.programClassForm.invalid) {\r\n this.notificationService.error('Please fill in all required fields correctly.');\r\n this.markFormGroupTouched();\r\n return;\r\n }\r\n\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n const formData = this.programClassForm.value;\r\n console.log('Program Class Form Data:', formData);\r\n\r\n // Add ID for edit mode\r\n if (this.isEditMode()) {\r\n formData._id = this.programClassId();\r\n }\r\n\r\n // Make API call to save program class\r\n this.programClassService.saveProgramClass(formData)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success) {\r\n const action = this.isEditMode() ? 'updated' : 'created';\r\n this.notificationService.success(`Program class has been ${action} successfully.`);\r\n \r\n // Navigate to program class list on successful create, go back on edit\r\n if (this.isEditMode()) {\r\n this.location.back();\r\n } else {\r\n // Navigate to program class list for create operation (closes current tab)\r\n this.router.navigate(['/control-panel/program-class-management']);\r\n }\r\n } else {\r\n this.notificationService.error(response?.message || 'Failed to save program class.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('Error saving program class:', error);\r\n this.notificationService.error('An error occurred while saving the program class.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark all form controls as touched to trigger validation display\r\n */\r\n private markFormGroupTouched(): void {\r\n Object.keys(this.programClassForm.controls).forEach(key => {\r\n const control = this.programClassForm.get(key);\r\n control?.markAsTouched();\r\n });\r\n }\r\n\r\n resetForm() {\r\n this.programClassForm.reset({\r\n acacpm_isactive: true\r\n });\r\n }\r\n\r\n /**\r\n * Toggle active status when card is clicked\r\n */\r\n toggleActiveStatus(): void {\r\n const currentValue = this.programClassForm.get('acacpm_isactive')?.value;\r\n this.programClassForm.patchValue({\r\n acacpm_isactive: !currentValue\r\n });\r\n }\r\n\r\n /**\r\n * Go back to previous page using browser history\r\n */\r\n goBackToProgramClassList(): void {\r\n this.location.back();\r\n }\r\n\r\n /**\r\n * Cancel form and optionally navigate back\r\n */\r\n cancelForm(): void {\r\n if (this.isEditMode()) {\r\n this.location.back();\r\n } else {\r\n this.resetForm();\r\n }\r\n }\r\n\r\n /**\r\n * Get page title based on mode\r\n */\r\n getPageTitle(): string {\r\n if (this.isViewMode()) return 'View Program Class';\r\n return this.isEditMode() ? 'Edit Program Class' : 'Create New Program Class';\r\n }\r\n\r\n /**\r\n * Cleanup when component is destroyed\r\n */\r\n ngOnDestroy(): void {\r\n console.log('🧹 ProgramClassCreateComponent: Cleaning up component state');\r\n\r\n // Reset all signals to their initial state\r\n this.loading.set(false);\r\n this.error.set(null);\r\n this.programClassId.set('');\r\n this.isEditMode.set(false);\r\n this.academicYearOptions.set([]);\r\n this.classProgramOptions.set([]);\r\n\r\n // Reset form to initial state\r\n this.resetForm();\r\n\r\n console.log('🧹 ProgramClassCreateComponent: Component state cleaned up');\r\n }\r\n}\r\n","<!-- \r\n PROGRAM CLASS MASTER FORM\r\n \r\n Enterprise-Level Styling with Tailwind CSS\r\n Features: Responsive grids, proper typography, enhanced user experience\r\n-->\r\n\r\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'program_class' }\"\r\n [breadcrumb_data]=\"breadcrumbData()\">\r\n \r\n <form class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\" [formGroup]=\"programClassForm\"\r\n [class.tw-opacity-60]=\"loading()\" (ngSubmit)=\"onSubmit()\">\r\n\r\n <!-- Form Content -->\r\n <div class=\"tw-table-row\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\r\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\r\n <!-- Basic Program Class Information -->\r\n <div class=\"tw-space-y-6\">\r\n <!-- Class Program and Academic Year at the top -->\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\r\n <div class=\"tw-space-y-2\">\r\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Academic Year *</label>\r\n <cide-ele-select formControlName=\"acacpm_academic_year_id_acayr\" placeholder=\"Select academic year\"\r\n [disabled]=\"isViewMode()\" valueKey=\"_id\" labelKey=\"acayr_name\" [options]=\"academicYearOptions()\">\r\n </cide-ele-select>\r\n </div>\r\n\r\n <div class=\"tw-space-y-2\">\r\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Class Program *</label>\r\n <cide-ele-select formControlName=\"acacpm_class_program_id_sygms\" placeholder=\"Select class program\"\r\n [disabled]=\"isViewMode()\" valueKey=\"_id\" labelKey=\"sygms_title\" [options]=\"classProgramOptions()\">\r\n </cide-ele-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\r\n <cide-ele-input label=\"Program Class Title *\" formControlName=\"acacpm_alise_title\"\r\n placeholder=\"e.g., Program Class 2024-2025\" size=\"md\" leadingIcon=\"school\">\r\n </cide-ele-input>\r\n\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200 tw-cursor-pointer hover:tw-bg-gray-100 tw-transition-colors tw-duration-200\" \r\n (click)=\"toggleActiveStatus()\">\r\n <cide-ele-input formControlName=\"acacpm_isactive\" type=\"checkbox\" size=\"md\" \r\n (click)=\"$event.stopPropagation()\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Active</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Enable/disable this program class</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Error Display -->\r\n @if (error()) {\r\n <div class=\"tw-mt-6 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-lg\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2\">\r\n <cide-ele-icon variant=\"red\" size=\"sm\">error</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-font-medium tw-text-red-800\">{{ error() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Form Actions -->\r\n <div class=\"tw-table-row tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-2 tw-bg-gray-50 tw-border-t tw-border-gray-200\">\r\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\r\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"resetForm()\" leftIcon=\"refresh\"\r\n [disabled]=\"loading()\">\r\n Reset Form\r\n </button>\r\n\r\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"cancelForm()\" leftIcon=\"close\"\r\n [disabled]=\"loading()\">\r\n Cancel\r\n </button>\r\n\r\n <button cideEleButton type=\"submit\" variant=\"primary\" [disabled]=\"loading() || programClassForm.invalid\"\r\n [loading]=\"loading()\" leftIcon=\"save\">\r\n {{ isEditMode() ? 'Update Program Class' : 'Create Program Class' }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</cide-lyt-shared-wrapper>\r\n\r\n"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
|
7
7
|
import { NotificationService, ConfirmationService, CideEleDataGridComponent, CideIconComponent, CideEleButtonComponent, CideEleDropdownComponent } from 'cloud-ide-element';
|
|
8
8
|
import { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';
|
|
9
9
|
import { generateStringFromObject } from 'cloud-ide-lms-model';
|
|
10
|
-
import { C as CideLytProgramClassService } from './cloud-ide-academics-cloud-ide-academics-
|
|
10
|
+
import { C as CideLytProgramClassService } from './cloud-ide-academics-cloud-ide-academics-BTOmrraW.mjs';
|
|
11
11
|
|
|
12
12
|
class ProgramClassListComponent {
|
|
13
13
|
// Dependency injection
|
|
@@ -432,4 +432,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
432
432
|
}] });
|
|
433
433
|
|
|
434
434
|
export { ProgramClassListComponent };
|
|
435
|
-
//# sourceMappingURL=cloud-ide-academics-program-class-list.component-
|
|
435
|
+
//# sourceMappingURL=cloud-ide-academics-program-class-list.component-Db_VXPLN.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-academics-program-class-list.component-jPpK9V-X.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/program-class-management/components/program-class-list/program-class-list.component.ts","../../../projects/cloud-ide-academics/src/lib/collection/program-class-management/components/program-class-list/program-class-list.component.html"],"sourcesContent":["import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CideEleDataGridComponent, CideIconComponent, CideEleButtonComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, NotificationService, ConfirmationService } from 'cloud-ide-element';\r\nimport { TemplateContext } from 'cloud-ide-element';\r\nimport { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';\r\nimport { \r\n type MClassProgramMaster,\r\n type MClassProgramMasterDeletePayload,\r\n type MClassProgramMasterToggleStatusPayload,\r\n generateStringFromObject\r\n} from 'cloud-ide-lms-model';\r\nimport { CideLytProgramClassService } from '../../services/program-class.service';\r\n\r\n// Interfaces based on the actual API response\r\ninterface ProgramClass {\r\n _id?: string;\r\n acacpm_alise_title?: string;\r\n acacpm_class_program_id_sygms?: {\r\n _id?: string;\r\n sygms_id_sygmt?: string;\r\n sygms_code?: string;\r\n sygms_title?: string;\r\n sygms_desc?: string;\r\n sygms_entity_id_syen?: string;\r\n sygms_isactive?: boolean;\r\n __v?: number;\r\n };\r\n acacpm_academic_year_id_acayr?: {\r\n _id?: string;\r\n acayr_code?: string;\r\n acayr_name?: string;\r\n acayr_description?: string;\r\n acayr_from_date?: string;\r\n acayr_to_date?: string;\r\n acayr_isactive?: boolean;\r\n acayr_iscurrent?: boolean;\r\n acayr_islocked?: boolean;\r\n __v?: number;\r\n };\r\n acacpm_entity_id_syen?: {\r\n _id?: string;\r\n syen_name?: string;\r\n syen_entity_type_gmst?: string;\r\n syen_entity_code?: string;\r\n syen_corporate_address?: string;\r\n syen_corporate_pin_sypin?: string;\r\n syen_corporate_city_sypin?: string;\r\n syen_corporate_state_sypin?: string;\r\n syen_corporate_contact_person_user?: any;\r\n syen_corporate_phone?: string;\r\n syen_corporate_phone_alt?: string;\r\n syen_corporate_fax?: string;\r\n syen_corporate_email?: string;\r\n syen_corporate_email_alt?: string;\r\n syen_website?: string;\r\n syen_currency_sycr?: string;\r\n syen_registered_address?: string;\r\n syen_registered_pin_sypin?: string;\r\n syen_registered_city_sypin?: string;\r\n syen_registered_state_sypin?: string;\r\n syen_registered_contact_person_user?: any;\r\n syen_registered_phone?: string;\r\n syen_registered_fax?: string;\r\n syen_registered_email?: string;\r\n syen_udise_no?: string;\r\n syen_affiliation_no?: string;\r\n syen_isactive?: boolean;\r\n __v?: number;\r\n };\r\n acacpm_isactive?: boolean;\r\n __v?: number;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-academics-program-class-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n CideEleDataGridComponent,\r\n CideIconComponent,\r\n CideEleButtonComponent,\r\n CideEleDropdownComponent,\r\n CideLytSharedWrapperComponent\r\n ],\r\n templateUrl: './program-class-list.component.html'\r\n})\r\nexport class ProgramClassListComponent implements OnInit {\r\n // Dependency injection\r\n private destroyRef = inject(DestroyRef);\r\n private router = inject(Router);\r\n private appState = inject(AppStateHelperService);\r\n private notificationService = inject(NotificationService);\r\n private confirmationService = inject(ConfirmationService);\r\n private programClassService = inject(CideLytProgramClassService);\r\n\r\n // Signal for breadcrumb data that will be passed to shared wrapper\r\n breadcrumbData = signal<{ id: string; label: string; icon?: string; url?: string }[]>([]);\r\n\r\n // Modern ViewChild signals for template renderers (Angular 20 approach)\r\n programClassDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('programClassDetailsRendererTemplate');\r\n programClassStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('programClassStatusRendererTemplate');\r\n classProgramRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('classProgramRendererTemplate');\r\n academicYearRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('academicYearRendererTemplate');\r\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\r\n\r\n // Computed template renderers for grid\r\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\r\n programClassDetailsRenderer: this.programClassDetailsRendererTemplate(),\r\n programClassStatusRenderer: this.programClassStatusRendererTemplate(),\r\n classProgramRenderer: this.classProgramRendererTemplate(),\r\n academicYearRenderer: this.academicYearRendererTemplate(),\r\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\r\n }));\r\n\r\n // Make Math available in template\r\n Math = Math;\r\n\r\n // Signals for reactive state management\r\n programClasses = signal<ProgramClass[]>([]);\r\n loading = signal(false);\r\n error = signal<string | null>(null);\r\n selectedItems = signal<string[]>([]);\r\n searchTerm = signal('');\r\n\r\n // Derived list filtered by searchTerm\r\n filteredProgramClasses = computed(() => {\r\n const q = (this.searchTerm() || '').toLowerCase().trim();\r\n const items = this.programClasses() || [];\r\n if (!q) return items;\r\n return items.filter(pc => {\r\n const title = (pc.acacpm_alise_title || '').toLowerCase();\r\n const classProgramTitle = (pc.acacpm_class_program_id_sygms?.sygms_title || '').toLowerCase();\r\n const academicYearName = (pc.acacpm_academic_year_id_acayr?.acayr_name || '').toLowerCase();\r\n const entityName = (pc.acacpm_entity_id_syen?.syen_name || '').toLowerCase();\r\n return title.includes(q) || classProgramTitle.includes(q) || academicYearName.includes(q) || entityName.includes(q);\r\n });\r\n });\r\n\r\n // Grid configuration signal\r\n gridConfig = signal<GridConfiguration<ProgramClass>>({\r\n id: 'program-class-list-grid',\r\n columns: [\r\n {\r\n key: 'details',\r\n header: 'Program Class Details',\r\n type: 'custom',\r\n width: 'auto',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'programClassDetailsRenderer'\r\n },\r\n {\r\n key: 'acacpm_class_program_id_sygms',\r\n header: 'Class Program',\r\n type: 'custom',\r\n width: '200px',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'classProgramRenderer'\r\n },\r\n {\r\n key: 'acacpm_academic_year_id_acayr',\r\n header: 'Academic Year',\r\n type: 'custom',\r\n width: '180px',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'academicYearRenderer'\r\n },\r\n {\r\n key: 'acacpm_isactive',\r\n header: 'Status',\r\n type: 'custom',\r\n width: '120px',\r\n truncate: false,\r\n align: 'center',\r\n renderer: 'programClassStatusRenderer'\r\n },\r\n {\r\n key: 'actions',\r\n header: '',\r\n type: 'custom',\r\n width: '150px',\r\n truncate: false,\r\n align: 'center',\r\n renderer: 'actionsDropdownRenderer'\r\n }\r\n ],\r\n data: [],\r\n trackBy: '_id',\r\n pagination: {\r\n enabled: true,\r\n pageSize: 10,\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 program classes...',\r\n searchableColumns: ['acacpm_alise_title'],\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 scroll: {\r\n enabled: true,\r\n stickyHeader: true,\r\n virtualScroll: false,\r\n rowHeight: 50\r\n },\r\n fullHeight: true,\r\n responsive: true,\r\n striped: false,\r\n bordered: true,\r\n compact: false,\r\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none'\r\n });\r\n\r\n /**\r\n * Get action dropdown items\r\n */\r\n getActionDropdownItems(programClass: ProgramClass): DropdownItem[] {\r\n const items: DropdownItem[] = [\r\n {\r\n id: 'view',\r\n label: 'View Details',\r\n icon: 'visibility',\r\n iconColor: 'tw-text-gray-400',\r\n textColor: 'tw-text-gray-700'\r\n },\r\n {\r\n id: 'edit',\r\n label: 'Edit Program Class',\r\n icon: 'edit',\r\n iconColor: 'tw-text-blue-400',\r\n textColor: 'tw-text-blue-700'\r\n },\r\n {\r\n id: 'branch',\r\n label: 'Manage Branches',\r\n icon: 'account_tree',\r\n iconColor: 'tw-text-purple-400',\r\n textColor: 'tw-text-purple-700'\r\n },\r\n {\r\n id: 'toggleStatus',\r\n label: programClass?.acacpm_isactive ? 'Deactivate' : 'Activate',\r\n icon: programClass?.acacpm_isactive ? 'toggle_off' : 'toggle_on',\r\n iconColor: programClass?.acacpm_isactive ? 'tw-text-orange-400' : 'tw-text-green-400',\r\n textColor: programClass?.acacpm_isactive ? 'tw-text-orange-700' : 'tw-text-green-700'\r\n },\r\n {\r\n id: 'delete',\r\n label: 'Delete',\r\n icon: 'delete',\r\n iconColor: 'tw-text-red-400',\r\n textColor: 'tw-text-red-700'\r\n }\r\n ];\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Handle dropdown item click\r\n */\r\n onDropdownItemClick(item: DropdownItem, programClass: ProgramClass): void {\r\n console.log('🔍 onDropdownItemClick called with:', { item, programClass });\r\n \r\n if (!item || !item.id) {\r\n console.error('Dropdown item is undefined:', item);\r\n return;\r\n }\r\n \r\n if (!programClass) {\r\n console.error('Program class is undefined:', programClass);\r\n this.notificationService.error('Unable to perform action: Invalid data');\r\n return;\r\n }\r\n\r\n switch (item.id) {\r\n case 'view':\r\n this.viewProgramClass(programClass);\r\n break;\r\n case 'edit':\r\n this.editProgramClass(programClass);\r\n break;\r\n case 'branch':\r\n this.manageBranches(programClass);\r\n break;\r\n case 'toggleStatus':\r\n this.toggleProgramClassStatus(programClass);\r\n break;\r\n case 'delete':\r\n this.deleteProgramClass(programClass);\r\n break;\r\n default:\r\n console.warn('Unknown dropdown action:', item.id);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadProgramClasses();\r\n }\r\n\r\n /**\r\n * Load program classes data\r\n */\r\n private loadProgramClasses(): void {\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n const payload: MClassProgramMaster = {\r\n pageIndex: 0,\r\n pageSize: 100,\r\n query: this.searchTerm() || \"\",\r\n sort: {\r\n key: 'acacpm_alise_title',\r\n order: 'asc'\r\n }\r\n };\r\n\r\n this.programClassService.getProgramClassList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success && response.data) {\r\n console.log('📚 Program classes loaded:', response.data);\r\n this.programClasses.set(response.data);\r\n this.updateGridData();\r\n this.notificationService.success(`Loaded ${response.data.length} program class(es) successfully.`);\r\n } else {\r\n console.warn('⚠️ No program class data received');\r\n this.programClasses.set([]);\r\n this.updateGridData();\r\n this.notificationService.warning('No program classes found.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error loading program classes:', error);\r\n this.error.set('Failed to load program classes');\r\n this.loading.set(false);\r\n this.notificationService.error('Failed to load program classes');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Update grid data\r\n */\r\n private updateGridData(): void {\r\n this.gridConfig.update(config => ({\r\n ...config,\r\n data: this.filteredProgramClasses()\r\n }));\r\n }\r\n\r\n /**\r\n * Handle grid events\r\n */\r\n onGridEvent(event: GridEvent<ProgramClass>): void {\r\n switch (event.type) {\r\n case 'pageChange':\r\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data && 'pageSize' in event.data) {\r\n this.loadProgramClasses();\r\n }\r\n break;\r\n case 'search':\r\n this.searchTerm.set(event.data as string);\r\n this.updateGridData();\r\n break;\r\n case 'refresh':\r\n this.loadProgramClasses();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Create new program class\r\n */\r\n createProgramClass(): void {\r\n this.router.navigate(['/control-panel/program-class-management/create']);\r\n }\r\n\r\n /**\r\n * View program class details\r\n */\r\n viewProgramClass(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to view program class: Invalid data');\r\n return;\r\n }\r\n console.log('👁️ Viewing program class:', programClass);\r\n this.notificationService.info(`Opening program class \"${programClass.acacpm_alise_title}\" for viewing.`);\r\n const queryParams = generateStringFromObject({ acacpm_id: programClass._id });\r\n this.router.navigate(['/control-panel/program-class-management/view', queryParams]);\r\n }\r\n\r\n /**\r\n * Edit program class\r\n */\r\n editProgramClass(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to edit program class: Invalid data');\r\n return;\r\n }\r\n console.log('✏️ Editing program class:', programClass);\r\n this.notificationService.info(`Opening program class \"${programClass.acacpm_alise_title}\" for editing.`);\r\n const queryParams = generateStringFromObject({ acacpm_id: programClass._id });\r\n this.router.navigate(['/control-panel/program-class-management/edit', queryParams]);\r\n }\r\n\r\n /**\r\n * Manage branches for program class\r\n */\r\n manageBranches(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to manage branches: Invalid data');\r\n return;\r\n }\r\n console.log('🌿 Managing branches for program class:', programClass);\r\n this.notificationService.info(`Opening branch management for \"${programClass.acacpm_alise_title}\".`);\r\n const queryParams = generateStringFromObject({ programId: programClass._id });\r\n this.router.navigate(['/control-panel/program_specialization', queryParams]);\r\n }\r\n\r\n /**\r\n * Delete program class\r\n */\r\n deleteProgramClass(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to delete program class: Invalid data');\r\n return;\r\n }\r\n this.confirmationService.confirmDelete(programClass.acacpm_alise_title).then((confirmed: boolean) => {\r\n if (confirmed) {\r\n this.loading.set(true);\r\n const payload: MClassProgramMasterDeletePayload = {\r\n acacpm_id: programClass._id!\r\n };\r\n\r\n this.programClassService.deleteProgramClass(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success) {\r\n this.programClasses.update(classes => \r\n classes.filter(pc => pc._id !== programClass._id)\r\n );\r\n this.updateGridData();\r\n this.notificationService.success('Program class deleted successfully.');\r\n } else {\r\n this.notificationService.error('Failed to delete program class.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error deleting program class:', error);\r\n this.notificationService.error('Failed to delete program class.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Toggle program class status\r\n */\r\n toggleProgramClassStatus(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to toggle program class status: Invalid data');\r\n return;\r\n }\r\n this.loading.set(true);\r\n const payload: MClassProgramMasterToggleStatusPayload = {\r\n acacpm_id: programClass._id!\r\n };\r\n\r\n this.programClassService.toggleProgramClassStatus(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success) {\r\n this.programClasses.update(classes => \r\n classes.map(pc => \r\n pc._id === programClass._id \r\n ? { ...pc, acacpm_isactive: !pc.acacpm_isactive }\r\n : pc\r\n )\r\n );\r\n this.updateGridData();\r\n this.notificationService.success(`Program class ${programClass.acacpm_isactive ? 'deactivated' : 'activated'} successfully.`);\r\n } else {\r\n this.notificationService.error('Failed to toggle program class status.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error toggling program class status:', error);\r\n this.notificationService.error('Failed to toggle program class status.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Refresh data\r\n */\r\n refreshData(): void {\r\n this.loadProgramClasses();\r\n }\r\n}\r\n","<!-- Program Class Management Container -->\r\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'program_class' }\"\r\n [breadcrumb_data]=\"breadcrumbData()\">\r\n \r\n <!-- Action Buttons in Breadcrumb Area -->\r\n <div breadcrumb-actions>\r\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"sm\" leftIcon=\"add\" (btnClick)=\"createProgramClass()\">\r\n Create Program Class\r\n </button>\r\n </div>\r\n\r\n <!-- Main Content -->\r\n <div class=\"tw-flex tw-flex-col tw-w-full tw-h-full\">\r\n <!-- Data Grid Section -->\r\n <div class=\"tw-flex-1 tw-min-h-0 tw-p-0\">\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</cide-lyt-shared-wrapper>\r\n\r\n<!-- Template Renderers -->\r\n<ng-template #programClassDetailsRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\r\n <div class=\"tw-flex-shrink-0\">\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\">school</cide-ele-icon>\r\n </div>\r\n </div>\r\n <div class=\"tw-min-w-0 tw-flex-1\">\r\n <h6 class=\"tw-text-sm tw-font-semibold tw-text-gray-900 tw-truncate tw-m-0\">\r\n {{ row?.acacpm_alise_title }}\r\n </h6>\r\n <p class=\"tw-text-xs tw-text-gray-500 tw-truncate tw-m-0\">\r\n {{ row?.acacpm_class_program_id_sygms?.sygms_title }}\r\n </p>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #programClassStatusRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <span [ngClass]=\"{\r\n 'tw-bg-green-100 tw-text-green-800': row?.acacpm_isactive,\r\n 'tw-bg-red-100 tw-text-red-800': !row?.acacpm_isactive\r\n }\" class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium\">\r\n <cide-ele-icon [ngClass]=\"{\r\n 'tw-text-green-600': row?.acacpm_isactive,\r\n 'tw-text-red-600': !row?.acacpm_isactive\r\n }\" class=\"tw-w-3 tw-h-3 tw-mr-2\">\r\n {{ row?.acacpm_isactive ? 'check_circle' : 'cancel' }}\r\n </cide-ele-icon>\r\n {{ row?.acacpm_isactive ? 'Active' : 'Inactive' }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #classProgramRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">school</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-text-gray-900 tw-truncate\">\r\n {{ row?.acacpm_class_program_id_sygms?.sygms_title || 'N/A' }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #academicYearRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-green-600 tw-w-4 tw-h-4\">calendar_today</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-text-gray-900 tw-truncate\">\r\n {{ row?.acacpm_academic_year_id_acayr?.acayr_name || 'N/A' }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud-ide-academics-program-class-list.component-Db_VXPLN.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/program-class-management/components/program-class-list/program-class-list.component.ts","../../../projects/cloud-ide-academics/src/lib/collection/program-class-management/components/program-class-list/program-class-list.component.html"],"sourcesContent":["import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CideEleDataGridComponent, CideIconComponent, CideEleButtonComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, NotificationService, ConfirmationService } from 'cloud-ide-element';\r\nimport { TemplateContext } from 'cloud-ide-element';\r\nimport { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';\r\nimport { \r\n type MClassProgramMaster,\r\n type MClassProgramMasterDeletePayload,\r\n type MClassProgramMasterToggleStatusPayload,\r\n generateStringFromObject\r\n} from 'cloud-ide-lms-model';\r\nimport { CideLytProgramClassService } from '../../services/program-class.service';\r\n\r\n// Interfaces based on the actual API response\r\ninterface ProgramClass {\r\n _id?: string;\r\n acacpm_alise_title?: string;\r\n acacpm_class_program_id_sygms?: {\r\n _id?: string;\r\n sygms_id_sygmt?: string;\r\n sygms_code?: string;\r\n sygms_title?: string;\r\n sygms_desc?: string;\r\n sygms_entity_id_syen?: string;\r\n sygms_isactive?: boolean;\r\n __v?: number;\r\n };\r\n acacpm_academic_year_id_acayr?: {\r\n _id?: string;\r\n acayr_code?: string;\r\n acayr_name?: string;\r\n acayr_description?: string;\r\n acayr_from_date?: string;\r\n acayr_to_date?: string;\r\n acayr_isactive?: boolean;\r\n acayr_iscurrent?: boolean;\r\n acayr_islocked?: boolean;\r\n __v?: number;\r\n };\r\n acacpm_entity_id_syen?: {\r\n _id?: string;\r\n syen_name?: string;\r\n syen_entity_type_gmst?: string;\r\n syen_entity_code?: string;\r\n syen_corporate_address?: string;\r\n syen_corporate_pin_sypin?: string;\r\n syen_corporate_city_sypin?: string;\r\n syen_corporate_state_sypin?: string;\r\n syen_corporate_contact_person_user?: any;\r\n syen_corporate_phone?: string;\r\n syen_corporate_phone_alt?: string;\r\n syen_corporate_fax?: string;\r\n syen_corporate_email?: string;\r\n syen_corporate_email_alt?: string;\r\n syen_website?: string;\r\n syen_currency_sycr?: string;\r\n syen_registered_address?: string;\r\n syen_registered_pin_sypin?: string;\r\n syen_registered_city_sypin?: string;\r\n syen_registered_state_sypin?: string;\r\n syen_registered_contact_person_user?: any;\r\n syen_registered_phone?: string;\r\n syen_registered_fax?: string;\r\n syen_registered_email?: string;\r\n syen_udise_no?: string;\r\n syen_affiliation_no?: string;\r\n syen_isactive?: boolean;\r\n __v?: number;\r\n };\r\n acacpm_isactive?: boolean;\r\n __v?: number;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-academics-program-class-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n CideEleDataGridComponent,\r\n CideIconComponent,\r\n CideEleButtonComponent,\r\n CideEleDropdownComponent,\r\n CideLytSharedWrapperComponent\r\n ],\r\n templateUrl: './program-class-list.component.html'\r\n})\r\nexport class ProgramClassListComponent implements OnInit {\r\n // Dependency injection\r\n private destroyRef = inject(DestroyRef);\r\n private router = inject(Router);\r\n private appState = inject(AppStateHelperService);\r\n private notificationService = inject(NotificationService);\r\n private confirmationService = inject(ConfirmationService);\r\n private programClassService = inject(CideLytProgramClassService);\r\n\r\n // Signal for breadcrumb data that will be passed to shared wrapper\r\n breadcrumbData = signal<{ id: string; label: string; icon?: string; url?: string }[]>([]);\r\n\r\n // Modern ViewChild signals for template renderers (Angular 20 approach)\r\n programClassDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('programClassDetailsRendererTemplate');\r\n programClassStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('programClassStatusRendererTemplate');\r\n classProgramRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('classProgramRendererTemplate');\r\n academicYearRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('academicYearRendererTemplate');\r\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\r\n\r\n // Computed template renderers for grid\r\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\r\n programClassDetailsRenderer: this.programClassDetailsRendererTemplate(),\r\n programClassStatusRenderer: this.programClassStatusRendererTemplate(),\r\n classProgramRenderer: this.classProgramRendererTemplate(),\r\n academicYearRenderer: this.academicYearRendererTemplate(),\r\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\r\n }));\r\n\r\n // Make Math available in template\r\n Math = Math;\r\n\r\n // Signals for reactive state management\r\n programClasses = signal<ProgramClass[]>([]);\r\n loading = signal(false);\r\n error = signal<string | null>(null);\r\n selectedItems = signal<string[]>([]);\r\n searchTerm = signal('');\r\n\r\n // Derived list filtered by searchTerm\r\n filteredProgramClasses = computed(() => {\r\n const q = (this.searchTerm() || '').toLowerCase().trim();\r\n const items = this.programClasses() || [];\r\n if (!q) return items;\r\n return items.filter(pc => {\r\n const title = (pc.acacpm_alise_title || '').toLowerCase();\r\n const classProgramTitle = (pc.acacpm_class_program_id_sygms?.sygms_title || '').toLowerCase();\r\n const academicYearName = (pc.acacpm_academic_year_id_acayr?.acayr_name || '').toLowerCase();\r\n const entityName = (pc.acacpm_entity_id_syen?.syen_name || '').toLowerCase();\r\n return title.includes(q) || classProgramTitle.includes(q) || academicYearName.includes(q) || entityName.includes(q);\r\n });\r\n });\r\n\r\n // Grid configuration signal\r\n gridConfig = signal<GridConfiguration<ProgramClass>>({\r\n id: 'program-class-list-grid',\r\n columns: [\r\n {\r\n key: 'details',\r\n header: 'Program Class Details',\r\n type: 'custom',\r\n width: 'auto',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'programClassDetailsRenderer'\r\n },\r\n {\r\n key: 'acacpm_class_program_id_sygms',\r\n header: 'Class Program',\r\n type: 'custom',\r\n width: '200px',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'classProgramRenderer'\r\n },\r\n {\r\n key: 'acacpm_academic_year_id_acayr',\r\n header: 'Academic Year',\r\n type: 'custom',\r\n width: '180px',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'academicYearRenderer'\r\n },\r\n {\r\n key: 'acacpm_isactive',\r\n header: 'Status',\r\n type: 'custom',\r\n width: '120px',\r\n truncate: false,\r\n align: 'center',\r\n renderer: 'programClassStatusRenderer'\r\n },\r\n {\r\n key: 'actions',\r\n header: '',\r\n type: 'custom',\r\n width: '150px',\r\n truncate: false,\r\n align: 'center',\r\n renderer: 'actionsDropdownRenderer'\r\n }\r\n ],\r\n data: [],\r\n trackBy: '_id',\r\n pagination: {\r\n enabled: true,\r\n pageSize: 10,\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 program classes...',\r\n searchableColumns: ['acacpm_alise_title'],\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 scroll: {\r\n enabled: true,\r\n stickyHeader: true,\r\n virtualScroll: false,\r\n rowHeight: 50\r\n },\r\n fullHeight: true,\r\n responsive: true,\r\n striped: false,\r\n bordered: true,\r\n compact: false,\r\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none'\r\n });\r\n\r\n /**\r\n * Get action dropdown items\r\n */\r\n getActionDropdownItems(programClass: ProgramClass): DropdownItem[] {\r\n const items: DropdownItem[] = [\r\n {\r\n id: 'view',\r\n label: 'View Details',\r\n icon: 'visibility',\r\n iconColor: 'tw-text-gray-400',\r\n textColor: 'tw-text-gray-700'\r\n },\r\n {\r\n id: 'edit',\r\n label: 'Edit Program Class',\r\n icon: 'edit',\r\n iconColor: 'tw-text-blue-400',\r\n textColor: 'tw-text-blue-700'\r\n },\r\n {\r\n id: 'branch',\r\n label: 'Manage Branches',\r\n icon: 'account_tree',\r\n iconColor: 'tw-text-purple-400',\r\n textColor: 'tw-text-purple-700'\r\n },\r\n {\r\n id: 'toggleStatus',\r\n label: programClass?.acacpm_isactive ? 'Deactivate' : 'Activate',\r\n icon: programClass?.acacpm_isactive ? 'toggle_off' : 'toggle_on',\r\n iconColor: programClass?.acacpm_isactive ? 'tw-text-orange-400' : 'tw-text-green-400',\r\n textColor: programClass?.acacpm_isactive ? 'tw-text-orange-700' : 'tw-text-green-700'\r\n },\r\n {\r\n id: 'delete',\r\n label: 'Delete',\r\n icon: 'delete',\r\n iconColor: 'tw-text-red-400',\r\n textColor: 'tw-text-red-700'\r\n }\r\n ];\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Handle dropdown item click\r\n */\r\n onDropdownItemClick(item: DropdownItem, programClass: ProgramClass): void {\r\n console.log('🔍 onDropdownItemClick called with:', { item, programClass });\r\n \r\n if (!item || !item.id) {\r\n console.error('Dropdown item is undefined:', item);\r\n return;\r\n }\r\n \r\n if (!programClass) {\r\n console.error('Program class is undefined:', programClass);\r\n this.notificationService.error('Unable to perform action: Invalid data');\r\n return;\r\n }\r\n\r\n switch (item.id) {\r\n case 'view':\r\n this.viewProgramClass(programClass);\r\n break;\r\n case 'edit':\r\n this.editProgramClass(programClass);\r\n break;\r\n case 'branch':\r\n this.manageBranches(programClass);\r\n break;\r\n case 'toggleStatus':\r\n this.toggleProgramClassStatus(programClass);\r\n break;\r\n case 'delete':\r\n this.deleteProgramClass(programClass);\r\n break;\r\n default:\r\n console.warn('Unknown dropdown action:', item.id);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadProgramClasses();\r\n }\r\n\r\n /**\r\n * Load program classes data\r\n */\r\n private loadProgramClasses(): void {\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n const payload: MClassProgramMaster = {\r\n pageIndex: 0,\r\n pageSize: 100,\r\n query: this.searchTerm() || \"\",\r\n sort: {\r\n key: 'acacpm_alise_title',\r\n order: 'asc'\r\n }\r\n };\r\n\r\n this.programClassService.getProgramClassList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success && response.data) {\r\n console.log('📚 Program classes loaded:', response.data);\r\n this.programClasses.set(response.data);\r\n this.updateGridData();\r\n this.notificationService.success(`Loaded ${response.data.length} program class(es) successfully.`);\r\n } else {\r\n console.warn('⚠️ No program class data received');\r\n this.programClasses.set([]);\r\n this.updateGridData();\r\n this.notificationService.warning('No program classes found.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error loading program classes:', error);\r\n this.error.set('Failed to load program classes');\r\n this.loading.set(false);\r\n this.notificationService.error('Failed to load program classes');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Update grid data\r\n */\r\n private updateGridData(): void {\r\n this.gridConfig.update(config => ({\r\n ...config,\r\n data: this.filteredProgramClasses()\r\n }));\r\n }\r\n\r\n /**\r\n * Handle grid events\r\n */\r\n onGridEvent(event: GridEvent<ProgramClass>): void {\r\n switch (event.type) {\r\n case 'pageChange':\r\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data && 'pageSize' in event.data) {\r\n this.loadProgramClasses();\r\n }\r\n break;\r\n case 'search':\r\n this.searchTerm.set(event.data as string);\r\n this.updateGridData();\r\n break;\r\n case 'refresh':\r\n this.loadProgramClasses();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Create new program class\r\n */\r\n createProgramClass(): void {\r\n this.router.navigate(['/control-panel/program-class-management/create']);\r\n }\r\n\r\n /**\r\n * View program class details\r\n */\r\n viewProgramClass(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to view program class: Invalid data');\r\n return;\r\n }\r\n console.log('👁️ Viewing program class:', programClass);\r\n this.notificationService.info(`Opening program class \"${programClass.acacpm_alise_title}\" for viewing.`);\r\n const queryParams = generateStringFromObject({ acacpm_id: programClass._id });\r\n this.router.navigate(['/control-panel/program-class-management/view', queryParams]);\r\n }\r\n\r\n /**\r\n * Edit program class\r\n */\r\n editProgramClass(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to edit program class: Invalid data');\r\n return;\r\n }\r\n console.log('✏️ Editing program class:', programClass);\r\n this.notificationService.info(`Opening program class \"${programClass.acacpm_alise_title}\" for editing.`);\r\n const queryParams = generateStringFromObject({ acacpm_id: programClass._id });\r\n this.router.navigate(['/control-panel/program-class-management/edit', queryParams]);\r\n }\r\n\r\n /**\r\n * Manage branches for program class\r\n */\r\n manageBranches(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to manage branches: Invalid data');\r\n return;\r\n }\r\n console.log('🌿 Managing branches for program class:', programClass);\r\n this.notificationService.info(`Opening branch management for \"${programClass.acacpm_alise_title}\".`);\r\n const queryParams = generateStringFromObject({ programId: programClass._id });\r\n this.router.navigate(['/control-panel/program_specialization', queryParams]);\r\n }\r\n\r\n /**\r\n * Delete program class\r\n */\r\n deleteProgramClass(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to delete program class: Invalid data');\r\n return;\r\n }\r\n this.confirmationService.confirmDelete(programClass.acacpm_alise_title).then((confirmed: boolean) => {\r\n if (confirmed) {\r\n this.loading.set(true);\r\n const payload: MClassProgramMasterDeletePayload = {\r\n acacpm_id: programClass._id!\r\n };\r\n\r\n this.programClassService.deleteProgramClass(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success) {\r\n this.programClasses.update(classes => \r\n classes.filter(pc => pc._id !== programClass._id)\r\n );\r\n this.updateGridData();\r\n this.notificationService.success('Program class deleted successfully.');\r\n } else {\r\n this.notificationService.error('Failed to delete program class.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error deleting program class:', error);\r\n this.notificationService.error('Failed to delete program class.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Toggle program class status\r\n */\r\n toggleProgramClassStatus(programClass: ProgramClass): void {\r\n if (!programClass || !programClass._id) {\r\n console.error('Program class or ID is undefined:', programClass);\r\n this.notificationService.error('Unable to toggle program class status: Invalid data');\r\n return;\r\n }\r\n this.loading.set(true);\r\n const payload: MClassProgramMasterToggleStatusPayload = {\r\n acacpm_id: programClass._id!\r\n };\r\n\r\n this.programClassService.toggleProgramClassStatus(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success) {\r\n this.programClasses.update(classes => \r\n classes.map(pc => \r\n pc._id === programClass._id \r\n ? { ...pc, acacpm_isactive: !pc.acacpm_isactive }\r\n : pc\r\n )\r\n );\r\n this.updateGridData();\r\n this.notificationService.success(`Program class ${programClass.acacpm_isactive ? 'deactivated' : 'activated'} successfully.`);\r\n } else {\r\n this.notificationService.error('Failed to toggle program class status.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error toggling program class status:', error);\r\n this.notificationService.error('Failed to toggle program class status.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Refresh data\r\n */\r\n refreshData(): void {\r\n this.loadProgramClasses();\r\n }\r\n}\r\n","<!-- Program Class Management Container -->\r\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'program_class' }\"\r\n [breadcrumb_data]=\"breadcrumbData()\">\r\n \r\n <!-- Action Buttons in Breadcrumb Area -->\r\n <div breadcrumb-actions>\r\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"sm\" leftIcon=\"add\" (btnClick)=\"createProgramClass()\">\r\n Create Program Class\r\n </button>\r\n </div>\r\n\r\n <!-- Main Content -->\r\n <div class=\"tw-flex tw-flex-col tw-w-full tw-h-full\">\r\n <!-- Data Grid Section -->\r\n <div class=\"tw-flex-1 tw-min-h-0 tw-p-0\">\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</cide-lyt-shared-wrapper>\r\n\r\n<!-- Template Renderers -->\r\n<ng-template #programClassDetailsRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\r\n <div class=\"tw-flex-shrink-0\">\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\">school</cide-ele-icon>\r\n </div>\r\n </div>\r\n <div class=\"tw-min-w-0 tw-flex-1\">\r\n <h6 class=\"tw-text-sm tw-font-semibold tw-text-gray-900 tw-truncate tw-m-0\">\r\n {{ row?.acacpm_alise_title }}\r\n </h6>\r\n <p class=\"tw-text-xs tw-text-gray-500 tw-truncate tw-m-0\">\r\n {{ row?.acacpm_class_program_id_sygms?.sygms_title }}\r\n </p>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #programClassStatusRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <span [ngClass]=\"{\r\n 'tw-bg-green-100 tw-text-green-800': row?.acacpm_isactive,\r\n 'tw-bg-red-100 tw-text-red-800': !row?.acacpm_isactive\r\n }\" class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium\">\r\n <cide-ele-icon [ngClass]=\"{\r\n 'tw-text-green-600': row?.acacpm_isactive,\r\n 'tw-text-red-600': !row?.acacpm_isactive\r\n }\" class=\"tw-w-3 tw-h-3 tw-mr-2\">\r\n {{ row?.acacpm_isactive ? 'check_circle' : 'cancel' }}\r\n </cide-ele-icon>\r\n {{ row?.acacpm_isactive ? 'Active' : 'Inactive' }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #classProgramRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">school</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-text-gray-900 tw-truncate\">\r\n {{ row?.acacpm_class_program_id_sygms?.sygms_title || 'N/A' }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #academicYearRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-green-600 tw-w-4 tw-h-4\">calendar_today</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-text-gray-900 tw-truncate\">\r\n {{ row?.acacpm_academic_year_id_acayr?.acayr_name || 'N/A' }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\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"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,38 @@ class ProgramTermSectionCreateComponent {
|
|
|
47
47
|
}
|
|
48
48
|
ngOnInit() {
|
|
49
49
|
this.initializeComponent();
|
|
50
|
+
this.updateBreadcrumbData();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Update breadcrumb data based on mode
|
|
54
|
+
*/
|
|
55
|
+
updateBreadcrumbData() {
|
|
56
|
+
const additionalItems = [];
|
|
57
|
+
if (this.isViewMode()) {
|
|
58
|
+
additionalItems.push({
|
|
59
|
+
id: 'view',
|
|
60
|
+
label: 'View',
|
|
61
|
+
icon: 'visibility',
|
|
62
|
+
url: undefined
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else if (this.isEditMode()) {
|
|
66
|
+
additionalItems.push({
|
|
67
|
+
id: 'edit',
|
|
68
|
+
label: 'Edit',
|
|
69
|
+
icon: 'edit',
|
|
70
|
+
url: undefined
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
additionalItems.push({
|
|
75
|
+
id: 'create',
|
|
76
|
+
label: 'Create',
|
|
77
|
+
icon: 'add',
|
|
78
|
+
url: undefined
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
this.breadcrumbData.set(additionalItems);
|
|
50
82
|
}
|
|
51
83
|
/**
|
|
52
84
|
* Initialize component
|
|
@@ -68,6 +100,8 @@ class ProgramTermSectionCreateComponent {
|
|
|
68
100
|
this.isEditMode.set(false);
|
|
69
101
|
this.isViewMode.set(false);
|
|
70
102
|
}
|
|
103
|
+
// Update breadcrumb after mode is determined
|
|
104
|
+
this.updateBreadcrumbData();
|
|
71
105
|
// Load dropdown options
|
|
72
106
|
this.loadDropdownOptions();
|
|
73
107
|
}
|
|
@@ -211,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
211
245
|
}], ctorParameters: () => [] });
|
|
212
246
|
|
|
213
247
|
export { ProgramTermSectionCreateComponent };
|
|
214
|
-
//# sourceMappingURL=cloud-ide-academics-program-term-section-create.component-
|
|
248
|
+
//# sourceMappingURL=cloud-ide-academics-program-term-section-create.component-BD5NgphA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-ide-academics-program-term-section-create.component-BD5NgphA.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/program-term-section-management/components/program-term-section-create/program-term-section-create.component.ts","../../../projects/cloud-ide-academics/src/lib/collection/program-term-section-management/components/program-term-section-create/program-term-section-create.component.html"],"sourcesContent":["import { Component, inject, signal, OnInit, DestroyRef, OnDestroy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CideInputComponent, CideTextareaComponent, CideEleButtonComponent, CideEleTabComponent, TabItem, CideIconComponent, CideSelectComponent, NotificationService, ConfirmationService } from 'cloud-ide-element';\r\nimport { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';\r\n\r\ninterface ProgramClass {\r\n _id?: string;\r\n acacpm_name?: string;\r\n acacpm_code?: string;\r\n}\r\n\r\ninterface ClassProgramTerm {\r\n _id?: string;\r\n acapt_name?: string;\r\n acapt_code?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-academics-program-term-section-create',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n CideInputComponent,\r\n CideTextareaComponent,\r\n CideEleButtonComponent,\r\n CideEleTabComponent,\r\n CideIconComponent,\r\n CideSelectComponent,\r\n CideLytSharedWrapperComponent\r\n ],\r\n templateUrl: './program-term-section-create.component.html'\r\n})\r\nexport class ProgramTermSectionCreateComponent implements OnInit, OnDestroy {\r\n // Dependency injection\r\n private destroyRef = inject(DestroyRef);\r\n private fb = inject(FormBuilder);\r\n private router = inject(Router);\r\n private route = inject(ActivatedRoute);\r\n private appState = inject(AppStateHelperService);\r\n private notificationService = inject(NotificationService);\r\n private confirmationService = inject(ConfirmationService);\r\n\r\n programTermSectionForm: FormGroup;\r\n activeTab = signal('basic');\r\n loading = signal(false);\r\n error = signal<string | null>(null);\r\n\r\n // Program term section information from route\r\n programTermSectionId = signal<string>('');\r\n isEditMode = signal(false);\r\n isViewMode = signal(false);\r\n\r\n // Data signals\r\n programClasses = signal<ProgramClass[]>([]);\r\n classProgramTerms = signal<ClassProgramTerm[]>([]);\r\n\r\n // Options for dropdowns\r\n programClassOptions = signal<any[]>([]);\r\n classProgramTermOptions = signal<any[]>([]);\r\n\r\n // Signal for breadcrumb data that will be passed to shared wrapper\r\n breadcrumbData = signal<{ id: string; label: string; icon?: string; url?: string }[]>([]);\r\n\r\n constructor() {\r\n this.programTermSectionForm = this.fb.group({\r\n // Basic Program Term Section Information\r\n acapts_code: ['', [Validators.required]],\r\n acapts_name: ['', [Validators.required]],\r\n acapts_description: [''],\r\n acapts_class_program_id_acacpm: ['', [Validators.required]],\r\n acapts_parent_class_prog_term_acapt: ['', [Validators.required]],\r\n acapts_isactive: [true],\r\n acapts_iscurrent: [false],\r\n acapts_islocked: [false]\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initializeComponent();\r\n this.updateBreadcrumbData();\r\n }\r\n\r\n /**\r\n * Update breadcrumb data based on mode\r\n */\r\n private updateBreadcrumbData(): void {\r\n const additionalItems: { id: string; label: string; icon?: string; url?: string }[] = [];\r\n \r\n if (this.isViewMode()) {\r\n additionalItems.push({\r\n id: 'view',\r\n label: 'View',\r\n icon: 'visibility',\r\n url: undefined\r\n });\r\n } else if (this.isEditMode()) {\r\n additionalItems.push({\r\n id: 'edit',\r\n label: 'Edit',\r\n icon: 'edit',\r\n url: undefined\r\n });\r\n } else {\r\n additionalItems.push({\r\n id: 'create',\r\n label: 'Create',\r\n icon: 'add',\r\n url: undefined\r\n });\r\n }\r\n \r\n this.breadcrumbData.set(additionalItems);\r\n }\r\n\r\n /**\r\n * Initialize component\r\n */\r\n private initializeComponent(): void {\r\n // Check route parameters to determine mode\r\n const url = this.router.url;\r\n const queryParams = this.route.snapshot.queryParams;\r\n \r\n if (url.includes('/view/')) {\r\n this.isViewMode.set(true);\r\n this.loadProgramTermSectionForView(queryParams);\r\n } else if (url.includes('/edit/')) {\r\n this.isEditMode.set(true);\r\n this.loadProgramTermSectionForEdit(queryParams);\r\n } else {\r\n // Create mode\r\n this.isEditMode.set(false);\r\n this.isViewMode.set(false);\r\n }\r\n\r\n // Update breadcrumb after mode is determined\r\n this.updateBreadcrumbData();\r\n\r\n // Load dropdown options\r\n this.loadDropdownOptions();\r\n }\r\n\r\n /**\r\n * Load program term section for viewing\r\n */\r\n private loadProgramTermSectionForView(queryParams: any): void {\r\n // Implementation for view mode\r\n this.programTermSectionForm.disable();\r\n }\r\n\r\n /**\r\n * Load program term section for editing\r\n */\r\n private loadProgramTermSectionForEdit(queryParams: any): void {\r\n // Implementation for edit mode\r\n }\r\n\r\n /**\r\n * Load dropdown options\r\n */\r\n private loadDropdownOptions(): void {\r\n // Load program class options (mock data for now)\r\n this.programClassOptions.set([\r\n { _id: '1', acacpm_name: 'Program Class 2024-25', acacpm_code: 'PC2024-25' },\r\n { _id: '2', acacpm_name: 'Program Class 2023-24', acacpm_code: 'PC2023-24' }\r\n ]);\r\n\r\n // Load class program term options (mock data for now)\r\n this.classProgramTermOptions.set([\r\n { _id: '1', acapt_name: 'First Term', acapt_code: 'T1' },\r\n { _id: '2', acapt_name: 'Second Term', acapt_code: 'T2' },\r\n { _id: '3', acapt_name: 'Third Term', acapt_code: 'T3' }\r\n ]);\r\n }\r\n\r\n /**\r\n * Tab configuration\r\n */\r\n programTermSectionTabs() {\r\n return [\r\n { id: 'basic', label: 'Section Details', icon: 'group' },\r\n { id: 'configuration', label: 'Configuration', icon: 'tune' }\r\n ];\r\n }\r\n\r\n onTabChange(tab: TabItem) {\r\n this.activeTab.set(tab.id);\r\n }\r\n\r\n onSubmit() {\r\n if (this.isViewMode()) {\r\n this.router.navigate(['/control-panel/program-term-section']);\r\n return;\r\n }\r\n\r\n if (this.programTermSectionForm.invalid) {\r\n this.notificationService.error('Please fill in all required fields correctly.');\r\n this.markFormGroupTouched();\r\n return;\r\n }\r\n\r\n this.loading.set(true);\r\n this.error.set(null);\r\n\r\n const formData = this.programTermSectionForm.value;\r\n console.log('Program Term Section Form Data:', formData);\r\n\r\n // Mock save operation\r\n setTimeout(() => {\r\n const action = this.isEditMode() ? 'updated' : 'created';\r\n this.notificationService.success(`Program term section has been ${action} successfully.`);\r\n this.router.navigate(['/control-panel/program-term-section']);\r\n this.loading.set(false);\r\n }, 1000);\r\n }\r\n\r\n /**\r\n * Mark all form controls as touched to trigger validation display\r\n */\r\n private markFormGroupTouched(): void {\r\n Object.keys(this.programTermSectionForm.controls).forEach(key => {\r\n const control = this.programTermSectionForm.get(key);\r\n control?.markAsTouched();\r\n });\r\n }\r\n\r\n resetForm() {\r\n this.programTermSectionForm.reset({\r\n acapts_isactive: true,\r\n acapts_iscurrent: false,\r\n acapts_islocked: false\r\n });\r\n }\r\n\r\n /**\r\n * Go back to program term section list\r\n */\r\n goBackToProgramTermSectionList(): void {\r\n this.router.navigate(['/control-panel/program-term-section']);\r\n }\r\n\r\n /**\r\n * Cancel form and optionally navigate back\r\n */\r\n cancelForm(): void {\r\n if (this.isEditMode()) {\r\n this.goBackToProgramTermSectionList();\r\n } else {\r\n this.resetForm();\r\n }\r\n }\r\n\r\n /**\r\n * Get page title based on mode\r\n */\r\n getPageTitle(): string {\r\n if (this.isViewMode()) return 'View Program Term Section';\r\n return this.isEditMode() ? 'Edit Program Term Section' : 'Create New Program Term Section';\r\n }\r\n\r\n /**\r\n * Cleanup when component is destroyed\r\n */\r\n ngOnDestroy(): void {\r\n console.log('🧹 ProgramTermSectionCreateComponent: Cleaning up component state');\r\n\r\n // Reset all signals to their initial state\r\n this.activeTab.set('basic');\r\n this.loading.set(false);\r\n this.error.set(null);\r\n this.programTermSectionId.set('');\r\n this.isEditMode.set(false);\r\n this.programClassOptions.set([]);\r\n this.classProgramTermOptions.set([]);\r\n\r\n // Reset form to initial state\r\n this.resetForm();\r\n\r\n console.log('🧹 ProgramTermSectionCreateComponent: Component state cleaned up');\r\n }\r\n}\r\n","<!-- \r\n PROGRAM TERM SECTION MASTER FORM\r\n \r\n Enterprise-Level Styling with Tailwind CSS\r\n Features: Responsive grids, proper typography, enhanced user experience\r\n-->\r\n\r\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'program_term_section_list' }\"\r\n [breadcrumb_data]=\"breadcrumbData()\">\r\n \r\n <form class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\" [formGroup]=\"programTermSectionForm\"\r\n [class.tw-opacity-60]=\"loading()\" (ngSubmit)=\"onSubmit()\">\r\n\r\n <!-- Tab Navigation -->\r\n <div class=\"tw-table-row tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-2 tw-py-0\">\r\n <cide-ele-tab [tabs]=\"programTermSectionTabs()\" [activeTabId]=\"activeTab()\" size=\"md\" variant=\"default\"\r\n (tabChange)=\"onTabChange($event)\">\r\n </cide-ele-tab>\r\n </div>\r\n </div>\r\n\r\n <!-- Tab Content -->\r\n <div class=\"tw-table-row\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\r\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\r\n @switch (activeTab()) {\r\n\r\n @case ('basic') {\r\n <!-- Basic Program Term Section Information -->\r\n <div class=\"tw-space-y-6\">\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\r\n <cide-ele-input label=\"Section Code *\" formControlName=\"acapts_code\" placeholder=\"e.g., SEC-A, SEC-B\"\r\n size=\"md\" leadingIcon=\"code\">\r\n </cide-ele-input>\r\n\r\n <cide-ele-input label=\"Section Name *\" formControlName=\"acapts_name\"\r\n placeholder=\"e.g., Section A, Section B\" size=\"md\" leadingIcon=\"group\">\r\n </cide-ele-input>\r\n </div>\r\n\r\n <div>\r\n <cide-ele-textarea label=\"Description\" formControlName=\"acapts_description\"\r\n placeholder=\"Enter detailed description of the section...\" rows=\"3\" size=\"md\">\r\n </cide-ele-textarea>\r\n </div>\r\n\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\r\n <div class=\"tw-space-y-2\">\r\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Program Class *</label>\r\n <cide-ele-select formControlName=\"acapts_class_program_id_acacpm\" placeholder=\"Select program class\"\r\n [disabled]=\"isViewMode()\">\r\n <option value=\"\">Select Program Class</option>\r\n @for (program of programClassOptions(); track program._id) {\r\n <option [value]=\"program._id\">{{ program.acacpm_name }}</option>\r\n }\r\n </cide-ele-select>\r\n </div>\r\n\r\n <div class=\"tw-space-y-2\">\r\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Class Program Term *</label>\r\n <cide-ele-select formControlName=\"acapts_parent_class_prog_term_acapt\" placeholder=\"Select class program term\"\r\n [disabled]=\"isViewMode()\">\r\n <option value=\"\">Select Class Program Term</option>\r\n @for (term of classProgramTermOptions(); track term._id) {\r\n <option [value]=\"term._id\">{{ term.acapt_name }}</option>\r\n }\r\n </cide-ele-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-3 tw-gap-6\">\r\n <div\r\n class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acapts_isactive\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Active</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Enable/disable this section</span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acapts_iscurrent\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Current</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Mark as current section</span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"tw-flex tw-items-center tw-gap-3 tw-p-4 tw-bg-gray-50 tw-rounded-lg tw-border tw-border-gray-200\">\r\n <cide-ele-input formControlName=\"acapts_islocked\" type=\"checkbox\" size=\"md\">\r\n </cide-ele-input>\r\n <div class=\"tw-flex tw-flex-col\">\r\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\r\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @case ('configuration') {\r\n <!-- Section Configuration -->\r\n <div\r\n class=\"tw-bg-gradient-to-r tw-from-teal-50 tw-to-cyan-50 tw-border tw-border-teal-200 tw-rounded-xl tw-p-6\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-6\">\r\n <div class=\"tw-flex tw-items-center tw-gap-3\">\r\n <div class=\"tw-bg-teal-100 tw-p-2 tw-rounded-lg\">\r\n <cide-ele-icon class=\"tw-text-teal-600 tw-w-6 tw-h-6\">tune</cide-ele-icon>\r\n </div>\r\n <div>\r\n <h6 class=\"tw-text-lg tw-font-semibold tw-text-teal-900 tw-m-0\">Section Configuration</h6>\r\n <p class=\"tw-text-sm tw-text-teal-600 tw-m-0\">Configure section-specific settings and parameters</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-space-y-4\">\r\n <div class=\"tw-bg-white tw-rounded-lg tw-border tw-border-gray-200 tw-p-4\">\r\n <h6 class=\"tw-text-sm tw-font-semibold tw-text-gray-900 tw-mb-3\">Section Settings</h6>\r\n <div class=\"tw-space-y-3\">\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-3 tw-bg-gray-50 tw-rounded-lg\">\r\n <cide-ele-icon class=\"tw-text-teal-600 tw-w-5 tw-h-5\">people</cide-ele-icon>\r\n <div>\r\n <p class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">Student Capacity</p>\r\n <p class=\"tw-text-xs tw-text-gray-600 tw-m-0\">Configure maximum number of students for this section</p>\r\n </div>\r\n </div>\r\n \r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-3 tw-bg-gray-50 tw-rounded-lg\">\r\n <cide-ele-icon class=\"tw-text-teal-600 tw-w-5 tw-h-5\">schedule</cide-ele-icon>\r\n <div>\r\n <p class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">Schedule Settings</p>\r\n <p class=\"tw-text-xs tw-text-gray-600 tw-m-0\">Configure class timings and schedule preferences</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-items-center tw-gap-3 tw-p-3 tw-bg-gray-50 tw-rounded-lg\">\r\n <cide-ele-icon class=\"tw-text-teal-600 tw-w-5 tw-h-5\">room</cide-ele-icon>\r\n <div>\r\n <p class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">Room Assignment</p>\r\n <p class=\"tw-text-xs tw-text-gray-600 tw-m-0\">Assign specific rooms or classroom preferences</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Error Display -->\r\n @if (error()) {\r\n <div class=\"tw-mt-6 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-lg\">\r\n <div class=\"tw-flex tw-items-center tw-gap-2\">\r\n <cide-ele-icon variant=\"red\" size=\"sm\">error</cide-ele-icon>\r\n <span class=\"tw-text-sm tw-font-medium tw-text-red-800\">{{ error() }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Form Actions -->\r\n <div class=\"tw-table-row tw-h-0\">\r\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-2 tw-bg-gray-50 tw-border-t tw-border-gray-200\">\r\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\r\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"resetForm()\" leftIcon=\"refresh\"\r\n [disabled]=\"loading()\">\r\n Reset Form\r\n </button>\r\n\r\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"cancelForm()\" leftIcon=\"close\"\r\n [disabled]=\"loading()\">\r\n Cancel\r\n </button>\r\n\r\n <button cideEleButton type=\"submit\" variant=\"primary\" [disabled]=\"loading() || programTermSectionForm.invalid\"\r\n [loading]=\"loading()\" leftIcon=\"save\">\r\n {{ isEditMode() ? 'Update Program Term Section' : 'Create Program Term Section' }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n</cide-lyt-shared-wrapper>\r\n\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as AcademicYearCreateComponent, d as AcademicYearListComponent, e as CideLytAcademicYearMappingService, a as CideLytAcademicYearService, g as CideLytClassProgramBranchFormComponent, f as CideLytClassProgramBranchListComponent, b as CideLytClassProgramBranchService, c as academicsRoutes } from './cloud-ide-academics-cloud-ide-academics-
|
|
1
|
+
export { A as AcademicYearCreateComponent, d as AcademicYearListComponent, e as CideLytAcademicYearMappingService, a as CideLytAcademicYearService, g as CideLytClassProgramBranchFormComponent, f as CideLytClassProgramBranchListComponent, b as CideLytClassProgramBranchService, c as academicsRoutes } from './cloud-ide-academics-cloud-ide-academics-BTOmrraW.mjs';
|
|
2
2
|
//# sourceMappingURL=cloud-ide-academics.mjs.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-academics-class-program-term-list.component-BaFtTKcS.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/class-program-term-management/components/class-program-term-list/class-program-term-list.component.ts","../../../projects/cloud-ide-academics/src/lib/collection/class-program-term-management/components/class-program-term-list/class-program-term-list.component.html"],"sourcesContent":["import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject, OnInit } 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 { CideEleDataGridComponent, CideIconComponent, CideEleButtonComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, NotificationService, ConfirmationService, CideSelectComponent } from 'cloud-ide-element';\r\nimport { TemplateContext } from 'cloud-ide-element';\r\nimport { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';\r\nimport { \r\n MClassProgramTerm,\r\n type MClassProgramTermDeletePayload,\r\n type MClassProgramTermToggleStatusPayload,\r\n generateObjectFromString,\r\n type MClassProgramMaster,\r\n type classProgramMasterControllerResponse,\r\n AcaClassPrgBranchListPayload,\r\n type classPrgBranchControllerResponse\r\n} from 'cloud-ide-lms-model';\r\nimport { CideLytClassProgramTermService } from '../../services/class-program-term.service';\r\nimport { CLASS_PROGRAM_MASTER_SERVICE_TOKEN, type IClassProgramMasterService } from 'cloud-ide-shared';\r\nimport { CideLytClassProgramBranchService } from '../../../class-program-branch-management/services/class-program-branch.service';\r\n\r\n// Interfaces based on the model files\r\ninterface ClassProgramTerm {\r\n _id?: string;\r\n acapt_code?: string;\r\n acapt_name?: string;\r\n acapt_description?: string;\r\n acapt_class_program_id_acacpm?: {\r\n _id?: string;\r\n acacpm_name?: string;\r\n };\r\n acapt_parent_class_prog_term_acapt?: {\r\n _id?: string;\r\n acapt_name?: string;\r\n };\r\n acapt_isactive?: boolean;\r\n acapt_iscurrent?: boolean;\r\n acapt_islocked?: boolean;\r\n}\r\n\r\ninterface ClassProgramConfiguration {\r\n branchType?: boolean;\r\n semesterType?: boolean;\r\n}\r\n\r\ninterface ProgramClass {\r\n _id?: string;\r\n acacpm_name?: string;\r\n acacpm_code?: string;\r\n acacpm_alise_title?: string;\r\n acacpm_description?: string;\r\n acacpm_class_program_id_sygms?: any;\r\n}\r\n\r\ninterface ClassProgramBranch {\r\n _id?: string;\r\n acabrn_name?: string;\r\n acabrn_code?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'cide-academics-class-program-term-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CideEleDataGridComponent,\r\n CideIconComponent,\r\n CideEleButtonComponent,\r\n CideEleDropdownComponent,\r\n CideSelectComponent,\r\n CideLytSharedWrapperComponent\r\n ],\r\n templateUrl: './class-program-term-list.component.html'\r\n})\r\nexport class ClassProgramTermListComponent implements OnInit {\r\n // Dependency injection\r\n private destroyRef = inject(DestroyRef);\r\n private router = inject(Router);\r\n private route = inject(ActivatedRoute);\r\n private appState = inject(AppStateHelperService);\r\n private notificationService = inject(NotificationService);\r\n private confirmationService = inject(ConfirmationService);\r\n private classProgramTermService = inject(CideLytClassProgramTermService);\r\n private classProgramMasterService = inject(CLASS_PROGRAM_MASTER_SERVICE_TOKEN) as IClassProgramMasterService;\r\n private classProgramBranchService = inject(CideLytClassProgramBranchService);\r\n\r\n // Modern ViewChild signals for template renderers (Angular 20 approach)\r\n classProgramTermDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('classProgramTermDetailsRendererTemplate');\r\n classProgramTermStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('classProgramTermStatusRendererTemplate');\r\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\r\n\r\n // Computed template renderers for grid\r\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\r\n classProgramTermDetailsRenderer: this.classProgramTermDetailsRendererTemplate(),\r\n classProgramTermStatusRenderer: this.classProgramTermStatusRendererTemplate(),\r\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\r\n }));\r\n\r\n // Make Math available in template\r\n Math = Math;\r\n\r\n // Signals for reactive state management\r\n classProgramTerms = signal<ClassProgramTerm[]>([]);\r\n loading = signal(false);\r\n error = signal<string | null>(null);\r\n selectedItems = signal<string[]>([]);\r\n searchTerm = signal('');\r\n acabrnId = signal<string | null>(null);\r\n acacpmId = signal<string | null>(null);\r\n \r\n // Class program and branch dropdown signals\r\n classProgramMasters = signal<ProgramClass[]>([]);\r\n classProgramMastersLoading = signal<boolean>(false);\r\n selectedClassProgram = signal<ProgramClass | null>(null);\r\n classProgramBranches = signal<ClassProgramBranch[]>([]);\r\n classProgramBranchesLoading = signal<boolean>(false);\r\n selectedProgramClassId = signal<string | null>(null);\r\n selectedBranchId = signal<string | null>(null);\r\n \r\n // Program term dropdown signals\r\n classProgramTermsForDropdown = signal<ClassProgramTerm[]>([]);\r\n classProgramTermsLoadingForDropdown = signal<boolean>(false);\r\n selectedTermId = signal<string | null>(null);\r\n \r\n // Signal for breadcrumb data that will be passed to shared wrapper\r\n breadcrumbData = signal<{ id: string; label: string; icon?: string; url?: string }[]>([]);\r\n \r\n // Computed signals for dropdown options\r\n classProgramMastersOptions = computed(() => this.classProgramMasters());\r\n classProgramTermsOptions = computed(() => this.classProgramTermsForDropdown());\r\n \r\n // Computed signal to check if branch dropdown should be shown\r\n showBranchDropdown = computed(() => {\r\n const selectedProgram = this.selectedClassProgram();\r\n if (!selectedProgram) return false;\r\n \r\n const generalMaster = selectedProgram.acacpm_class_program_id_sygms;\r\n if (!generalMaster || typeof generalMaster !== 'object') return false;\r\n \r\n let config: ClassProgramConfiguration | undefined;\r\n if ('sygms_configuration' in generalMaster) {\r\n const configValue = generalMaster.sygms_configuration;\r\n if (typeof configValue === 'string') {\r\n try {\r\n config = JSON.parse(configValue) as ClassProgramConfiguration;\r\n } catch {\r\n return false;\r\n }\r\n } else if (typeof configValue === 'object' && configValue !== null) {\r\n config = configValue as ClassProgramConfiguration;\r\n }\r\n }\r\n \r\n return config?.branchType === true;\r\n });\r\n\r\n // Derived list filtered by searchTerm\r\n filteredClassProgramTerms = computed(() => {\r\n const q = (this.searchTerm() || '').toLowerCase().trim();\r\n const items = this.classProgramTerms() || [];\r\n if (!q) return items;\r\n return items.filter(cpt => {\r\n const name = (cpt.acapt_name || '').toLowerCase();\r\n const code = (cpt.acapt_code || '').toLowerCase();\r\n const description = (cpt.acapt_description || '').toLowerCase();\r\n return name.includes(q) || code.includes(q) || description.includes(q);\r\n });\r\n });\r\n\r\n // Grid configuration signal\r\n gridConfig = signal<GridConfiguration<ClassProgramTerm>>({\r\n id: 'class-program-term-list-grid',\r\n columns: [\r\n {\r\n key: 'details',\r\n header: 'Term Details',\r\n type: 'custom',\r\n width: 'auto',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'classProgramTermDetailsRenderer'\r\n },\r\n {\r\n key: 'acapt_code',\r\n header: 'Code',\r\n type: 'text',\r\n width: '120px',\r\n truncate: true,\r\n align: 'left'\r\n },\r\n {\r\n key: 'acapt_class_program_id_acacpm',\r\n header: 'Program Class',\r\n type: 'custom',\r\n width: '200px',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'programClassRenderer'\r\n },\r\n {\r\n key: 'acapt_parent_class_prog_term_acapt',\r\n header: 'Parent Term',\r\n type: 'custom',\r\n width: '180px',\r\n truncate: true,\r\n align: 'left',\r\n renderer: 'parentTermRenderer'\r\n },\r\n {\r\n key: 'acapt_isactive',\r\n header: 'Status',\r\n type: 'custom',\r\n width: '120px',\r\n truncate: false,\r\n align: 'center',\r\n renderer: 'classProgramTermStatusRenderer'\r\n },\r\n {\r\n key: 'actions',\r\n header: '',\r\n type: 'custom',\r\n width: '150px',\r\n truncate: false,\r\n align: 'center',\r\n renderer: 'actionsDropdownRenderer'\r\n }\r\n ],\r\n data: [],\r\n trackBy: '_id',\r\n pagination: {\r\n enabled: true,\r\n pageSize: 10,\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 class program terms...',\r\n searchableColumns: ['acapt_name', 'acapt_code', 'acapt_description'],\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 scroll: {\r\n enabled: true,\r\n stickyHeader: true,\r\n virtualScroll: false,\r\n rowHeight: 50\r\n },\r\n fullHeight: true,\r\n responsive: true,\r\n striped: false,\r\n bordered: true,\r\n compact: false,\r\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none'\r\n });\r\n\r\n /**\r\n * Get action dropdown items\r\n */\r\n getActionDropdownItems(classProgramTerm: ClassProgramTerm): DropdownItem[] {\r\n const items: DropdownItem[] = [\r\n {\r\n id: 'view',\r\n label: 'View Details',\r\n icon: 'visibility',\r\n iconColor: 'tw-text-gray-400',\r\n textColor: 'tw-text-gray-700'\r\n },\r\n {\r\n id: 'edit',\r\n label: 'Edit Term',\r\n icon: 'edit',\r\n iconColor: 'tw-text-blue-400',\r\n textColor: 'tw-text-blue-700'\r\n },\r\n {\r\n id: 'toggleStatus',\r\n label: classProgramTerm.acapt_isactive ? 'Deactivate' : 'Activate',\r\n icon: classProgramTerm.acapt_isactive ? 'toggle_off' : 'toggle_on',\r\n iconColor: classProgramTerm.acapt_isactive ? 'tw-text-orange-400' : 'tw-text-green-400',\r\n textColor: classProgramTerm.acapt_isactive ? 'tw-text-orange-700' : 'tw-text-green-700'\r\n },\r\n {\r\n id: 'delete',\r\n label: 'Delete',\r\n icon: 'delete',\r\n iconColor: 'tw-text-red-400',\r\n textColor: 'tw-text-red-700'\r\n }\r\n ];\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Handle dropdown item click\r\n */\r\n onDropdownItemClick(item: DropdownItem, classProgramTerm: ClassProgramTerm): void {\r\n switch (item.id) {\r\n case 'view':\r\n this.viewClassProgramTerm(classProgramTerm);\r\n break;\r\n case 'edit':\r\n this.editClassProgramTerm(classProgramTerm);\r\n break;\r\n case 'toggleStatus':\r\n this.toggleClassProgramTermStatus(classProgramTerm);\r\n break;\r\n case 'delete':\r\n this.deleteClassProgramTerm(classProgramTerm);\r\n break;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initializeBreadcrumbData();\r\n this.checkRouteParams();\r\n this.loadClassProgramMasters();\r\n this.loadClassProgramTerms();\r\n }\r\n\r\n /**\r\n * Initialize breadcrumb data for list view\r\n */\r\n private initializeBreadcrumbData(): void {\r\n this.breadcrumbData.set([\r\n {\r\n id: 'list',\r\n label: 'List',\r\n icon: 'list',\r\n url: undefined\r\n }\r\n ]);\r\n }\r\n \r\n /**\r\n * Load class program masters for dropdown\r\n */\r\n loadClassProgramMasters(): void {\r\n this.classProgramMastersLoading.set(true);\r\n const payload: MClassProgramMaster = {\r\n pagination: false,\r\n acacpm_isactive: true\r\n };\r\n \r\n this.classProgramMasterService.getClassProgramMasterList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response: classProgramMasterControllerResponse) => {\r\n if (response?.success && response.data) {\r\n this.classProgramMasters.set(response.data as ProgramClass[]);\r\n } else {\r\n this.classProgramMasters.set([]);\r\n }\r\n this.classProgramMastersLoading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error loading class program masters:', error);\r\n this.classProgramMasters.set([]);\r\n this.classProgramMastersLoading.set(false);\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * Handle class program selection change\r\n */\r\n onClassProgramChange(programClassId: string | number | string[] | null): void {\r\n const programId = typeof programClassId === 'string' ? programClassId : (programClassId ? String(programClassId) : null);\r\n console.log('🔄 Class Program changed:', programId);\r\n \r\n this.selectedProgramClassId.set(programId);\r\n this.acacpmId.set(programId);\r\n \r\n if (programId) {\r\n const selectedProgram = this.classProgramMasters().find(p => p._id === programId);\r\n this.selectedClassProgram.set(selectedProgram || null);\r\n \r\n // Load branches if branchType is configured\r\n if (this.showBranchDropdown()) {\r\n this.loadClassProgramBranches(programId);\r\n } else {\r\n this.classProgramBranches.set([]);\r\n this.selectedBranchId.set(null);\r\n this.acabrnId.set(null);\r\n // Load program terms directly if no branch dropdown\r\n this.loadClassProgramTermsForDropdown(programId);\r\n }\r\n } else {\r\n this.selectedClassProgram.set(null);\r\n this.classProgramBranches.set([]);\r\n this.selectedBranchId.set(null);\r\n this.acabrnId.set(null);\r\n this.classProgramTermsForDropdown.set([]);\r\n this.selectedTermId.set(null);\r\n }\r\n \r\n this.loadClassProgramTerms();\r\n }\r\n \r\n /**\r\n * Load class program branches\r\n */\r\n loadClassProgramBranches(classProgramId: string): void {\r\n this.classProgramBranchesLoading.set(true);\r\n const payload: AcaClassPrgBranchListPayload = new AcaClassPrgBranchListPayload({\r\n acabrn_class_program_id_acacpm: classProgramId,\r\n pagination: false\r\n });\r\n \r\n this.classProgramBranchService.getClassProgramBranchList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response: classPrgBranchControllerResponse) => {\r\n if (response?.success && response.data) {\r\n this.classProgramBranches.set(response.data as ClassProgramBranch[]);\r\n // Load program terms for dropdown when branches are loaded\r\n if (this.selectedProgramClassId()) {\r\n // Will be triggered when user selects a branch\r\n }\r\n } else {\r\n this.classProgramBranches.set([]);\r\n }\r\n this.classProgramBranchesLoading.set(false);\r\n },\r\n error: (error: any) => {\r\n console.error('❌ Error loading class program branches:', error);\r\n this.classProgramBranches.set([]);\r\n this.classProgramBranchesLoading.set(false);\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * Handle branch selection change\r\n */\r\n onBranchChange(branchId: string | number | string[] | null): void {\r\n const branch = typeof branchId === 'string' ? branchId : (branchId ? String(branchId) : null);\r\n console.log('🔄 Branch changed:', branch);\r\n \r\n this.selectedBranchId.set(branch);\r\n this.acabrnId.set(branch);\r\n \r\n // Load program terms for dropdown when branch changes\r\n if (branch && this.selectedProgramClassId()) {\r\n this.loadClassProgramTermsForDropdown(this.selectedProgramClassId()!, branch);\r\n } else {\r\n this.classProgramTermsForDropdown.set([]);\r\n this.selectedTermId.set(null);\r\n }\r\n \r\n this.loadClassProgramTerms();\r\n }\r\n \r\n /**\r\n * Load class program terms for dropdown (filtered by class program and branch)\r\n */\r\n loadClassProgramTermsForDropdown(classProgramId: string, branchId?: string): void {\r\n this.classProgramTermsLoadingForDropdown.set(true);\r\n const payload: MClassProgramTerm = new MClassProgramTerm({\r\n pageIndex: 0,\r\n pageSize: 1000,\r\n query: \"\",\r\n sort: {\r\n key: 'acapt_name',\r\n order: 'asc'\r\n },\r\n acapt_class_prg_branch_acabrn: branchId || \"\",\r\n });\r\n \r\n this.classProgramTermService.getClassProgramTermList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success && response.data) {\r\n // Filter by class program ID if provided\r\n let terms = response.data as ClassProgramTerm[];\r\n if (classProgramId) {\r\n terms = terms.filter(term => \r\n term.acapt_class_program_id_acacpm?._id === classProgramId ||\r\n (typeof term.acapt_class_program_id_acacpm === 'string' && term.acapt_class_program_id_acacpm === classProgramId)\r\n );\r\n }\r\n this.classProgramTermsForDropdown.set(terms);\r\n } else {\r\n this.classProgramTermsForDropdown.set([]);\r\n }\r\n this.classProgramTermsLoadingForDropdown.set(false);\r\n },\r\n error: (error: any) => {\r\n console.error('❌ Error loading class program terms for dropdown:', error);\r\n this.classProgramTermsForDropdown.set([]);\r\n this.classProgramTermsLoadingForDropdown.set(false);\r\n }\r\n });\r\n }\r\n \r\n /**\r\n * Handle program term selection change\r\n */\r\n onTermChange(termId: string | number | string[] | null): void {\r\n const term = typeof termId === 'string' ? termId : (termId ? String(termId) : null);\r\n console.log('🔄 Program Term changed:', term);\r\n \r\n this.selectedTermId.set(term);\r\n // Filter the main list by selected term if needed\r\n // For now, we'll just store the selection\r\n }\r\n \r\n /**\r\n * Handle class program master search\r\n */\r\n onClassProgramMasterSearch(event: any): void {\r\n // Trigger loading if needed\r\n if (event && event.query) {\r\n // Could implement search functionality here if needed\r\n }\r\n }\r\n\r\n /**\r\n * Check route parameters for acabrn_id and acacpm_id\r\n */\r\n private checkRouteParams(): void {\r\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\r\n const queryParams = params['query'];\r\n console.log('🏢 Route params:', params, 'queryParams:', queryParams);\r\n\r\n if (queryParams) {\r\n // Query parameters passed (following page-controls pattern)\r\n const queryData = generateObjectFromString(queryParams);\r\n console.log('🏢 Class Program Term params from route:', queryData);\r\n \r\n if (queryData?.acabrn_id) {\r\n this.acabrnId.set(queryData.acabrn_id as string);\r\n console.log('🏢 Branch ID from route:', queryData.acabrn_id);\r\n }\r\n \r\n if (queryData?.acacpm_id) {\r\n this.acacpmId.set(queryData.acacpm_id as string);\r\n console.log('🏢 Class Program ID from route:', queryData.acacpm_id);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Load class program terms data\r\n */\r\n private loadClassProgramTerms(): void {\r\n this.loading.set(true);\r\n this.error.set(null);\r\n \r\n // Add filter parameters if available\r\n const acabrnId = this.acabrnId();\r\n const acacpmId = this.acacpmId();\r\n \r\n const payload: MClassProgramTerm = new MClassProgramTerm({\r\n pageIndex: 0,\r\n pageSize: 100,\r\n query: this.searchTerm() || \"\",\r\n sort: {\r\n key: 'acapt_name',\r\n order: 'asc'\r\n },\r\n acapt_class_prg_branch_acabrn: acabrnId || \"\",\r\n });\r\n\r\n this.classProgramTermService.getClassProgramTermList(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success && response.data) {\r\n console.log('📚 Class program terms loaded:', response.data);\r\n this.classProgramTerms.set(response.data);\r\n this.updateGridData();\r\n this.notificationService.success(`Loaded ${response.data.length} class program term(s) successfully.`);\r\n } else {\r\n console.warn('⚠️ No class program term data received');\r\n this.classProgramTerms.set([]);\r\n this.updateGridData();\r\n this.notificationService.warning('No class program terms found.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error loading class program terms:', error);\r\n this.error.set('Failed to load class program terms');\r\n this.loading.set(false);\r\n this.notificationService.error('Failed to load class program terms');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Update grid data\r\n */\r\n private updateGridData(): void {\r\n this.gridConfig.update(config => ({\r\n ...config,\r\n data: this.filteredClassProgramTerms()\r\n }));\r\n }\r\n\r\n /**\r\n * Handle grid events\r\n */\r\n onGridEvent(event: GridEvent<ClassProgramTerm>): void {\r\n switch (event.type) {\r\n case 'pageChange':\r\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data && 'pageSize' in event.data) {\r\n this.loadClassProgramTerms();\r\n }\r\n break;\r\n case 'search':\r\n this.searchTerm.set(event.data as string);\r\n this.updateGridData();\r\n break;\r\n case 'refresh':\r\n this.loadClassProgramTerms();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Create new class program term\r\n */\r\n createClassProgramTerm(): void {\r\n this.router.navigate(['/control-panel/program-term-management/create']);\r\n }\r\n\r\n /**\r\n * View class program term details\r\n */\r\n viewClassProgramTerm(classProgramTerm: ClassProgramTerm): void {\r\n this.router.navigate(['/control-panel/class-program-term/view', classProgramTerm._id]);\r\n }\r\n\r\n /**\r\n * Edit class program term\r\n */\r\n editClassProgramTerm(classProgramTerm: ClassProgramTerm): void {\r\n this.router.navigate(['/control-panel/class-program-term/edit', classProgramTerm._id]);\r\n }\r\n\r\n /**\r\n * Delete class program term\r\n */\r\n deleteClassProgramTerm(classProgramTerm: ClassProgramTerm): void {\r\n this.confirmationService.confirmDelete(classProgramTerm.acapt_name).then((confirmed: boolean) => {\r\n if (confirmed) {\r\n this.loading.set(true);\r\n const payload: MClassProgramTermDeletePayload = {\r\n acapt_id: classProgramTerm._id!\r\n };\r\n\r\n this.classProgramTermService.deleteClassProgramTerm(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success) {\r\n this.classProgramTerms.update(terms => \r\n terms.filter(cpt => cpt._id !== classProgramTerm._id)\r\n );\r\n this.updateGridData();\r\n this.notificationService.success('Class program term deleted successfully.');\r\n } else {\r\n this.notificationService.error('Failed to delete class program term.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error deleting class program term:', error);\r\n this.notificationService.error('Failed to delete class program term.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Toggle class program term status\r\n */\r\n toggleClassProgramTermStatus(classProgramTerm: ClassProgramTerm): void {\r\n this.loading.set(true);\r\n const payload: MClassProgramTermToggleStatusPayload = {\r\n acapt_id: classProgramTerm._id!\r\n };\r\n\r\n this.classProgramTermService.toggleClassProgramTermStatus(payload)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.success) {\r\n this.classProgramTerms.update(terms => \r\n terms.map(cpt => \r\n cpt._id === classProgramTerm._id \r\n ? { ...cpt, acapt_isactive: !cpt.acapt_isactive }\r\n : cpt\r\n )\r\n );\r\n this.updateGridData();\r\n this.notificationService.success(`Class program term ${classProgramTerm.acapt_isactive ? 'deactivated' : 'activated'} successfully.`);\r\n } else {\r\n this.notificationService.error('Failed to toggle class program term status.');\r\n }\r\n this.loading.set(false);\r\n },\r\n error: (error) => {\r\n console.error('❌ Error toggling class program term status:', error);\r\n this.notificationService.error('Failed to toggle class program term status.');\r\n this.loading.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Refresh data\r\n */\r\n refreshData(): void {\r\n this.loadClassProgramTerms();\r\n }\r\n}\r\n","<!-- Class Program Term Management Container -->\r\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'class_program_term' }\"\r\n [breadcrumb_data]=\"breadcrumbData()\">\r\n \r\n <!-- Action Buttons in Breadcrumb Area -->\r\n <div breadcrumb-actions>\r\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"sm\" leftIcon=\"add\" (btnClick)=\"createClassProgramTerm()\">\r\n Create Class Program Term\r\n </button>\r\n </div>\r\n\r\n <div class=\"tw-flex tw-flex-col tw-w-full tw-h-full\">\r\n\r\n <!-- Filter Section -->\r\n <div class=\"tw-flex-shrink-0 tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\r\n <div class=\"tw-flex tw-items-center tw-gap-4\">\r\n <div class=\"tw-w-64\">\r\n <label class=\"tw-block tw-text-sm tw-font-medium tw-text-gray-700 tw-mb-2\">Class Program</label>\r\n <cide-ele-select\r\n [options]=\"classProgramMastersOptions()\"\r\n [ngModel]=\"selectedProgramClassId() || ''\"\r\n (ngModelChange)=\"onClassProgramChange($event)\"\r\n placeholder=\"Select Class Program\"\r\n valueKey=\"_id\"\r\n labelKey=\"acacpm_alise_title\"\r\n [loading]=\"classProgramMastersLoading()\"\r\n [searchable]=\"true\"\r\n (searchChange)=\"onClassProgramMasterSearch($event)\">\r\n </cide-ele-select>\r\n </div>\r\n \r\n @if (showBranchDropdown()) {\r\n <div class=\"tw-w-64\">\r\n <label class=\"tw-block tw-text-sm tw-font-medium tw-text-gray-700 tw-mb-2\">Specialization</label>\r\n <cide-ele-select\r\n [options]=\"classProgramBranches()\"\r\n [ngModel]=\"selectedBranchId() || ''\"\r\n (ngModelChange)=\"onBranchChange($event)\"\r\n placeholder=\"Select Specialization\"\r\n valueKey=\"_id\"\r\n labelKey=\"acabrn_name\"\r\n [loading]=\"classProgramBranchesLoading()\">\r\n </cide-ele-select>\r\n </div>\r\n }\r\n \r\n @if (selectedProgramClassId() && (!showBranchDropdown() || selectedBranchId())) {\r\n <div class=\"tw-w-64\">\r\n <label class=\"tw-block tw-text-sm tw-font-medium tw-text-gray-700 tw-mb-2\">Program Term</label>\r\n <cide-ele-select\r\n [options]=\"classProgramTermsOptions()\"\r\n [ngModel]=\"selectedTermId() || ''\"\r\n (ngModelChange)=\"onTermChange($event)\"\r\n placeholder=\"Select Program Term\"\r\n valueKey=\"_id\"\r\n labelKey=\"acapt_name\"\r\n [loading]=\"classProgramTermsLoadingForDropdown()\">\r\n </cide-ele-select>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Data Grid Section -->\r\n <div class=\"tw-flex-1 tw-min-h-0 tw-p-0\">\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</cide-lyt-shared-wrapper>\r\n\r\n<!-- Template Renderers -->\r\n<ng-template #classProgramTermDetailsRendererTemplate let-value=\"value\" let-item=\"item\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\r\n <div class=\"tw-flex-shrink-0\">\r\n <div class=\"tw-w-10 tw-h-10 tw-bg-orange-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center\">\r\n <cide-ele-icon class=\"tw-text-orange-600 tw-w-5 tw-h-5\">schedule</cide-ele-icon>\r\n </div>\r\n </div>\r\n <div class=\"tw-min-w-0 tw-flex-1\">\r\n <h6 class=\"tw-text-sm tw-font-semibold tw-text-gray-900 tw-truncate tw-m-0\">\r\n {{ item.acapt_name }}\r\n </h6>\r\n <p class=\"tw-text-xs tw-text-gray-500 tw-truncate tw-m-0\">\r\n {{ item.acapt_description }}\r\n </p>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #classProgramTermStatusRendererTemplate let-value=\"value\" let-item=\"item\" let-column=\"column\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n @if (item.acapt_iscurrent) {\r\n <span class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-blue-100 tw-text-blue-800\">\r\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-mr-1\">star</cide-ele-icon>\r\n Current\r\n </span>\r\n }\r\n @if (item.acapt_islocked) {\r\n <span class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-yellow-100 tw-text-yellow-800\">\r\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-mr-1\">lock</cide-ele-icon>\r\n Locked\r\n </span>\r\n }\r\n <span [ngClass]=\"{\r\n 'tw-bg-green-100 tw-text-green-800': item.acapt_isactive,\r\n 'tw-bg-red-100 tw-text-red-800': !item.acapt_isactive\r\n }\" class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium\">\r\n <cide-ele-icon [ngClass]=\"{\r\n 'tw-text-green-600': item.acapt_isactive,\r\n 'tw-text-red-600': !item.acapt_isactive\r\n }\" class=\"tw-w-3 tw-h-3 tw-mr-1\">\r\n {{ item.acapt_isactive ? 'check_circle' : 'cancel' }}\r\n </cide-ele-icon>\r\n {{ item.acapt_isactive ? 'Active' : 'Inactive' }}\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #actionsDropdownRendererTemplate let-value=\"value\" let-item=\"item\" let-column=\"column\">\r\n <cide-ele-dropdown\r\n [items]=\"getActionDropdownItems(item)\"\r\n (itemClick)=\"onDropdownItemClick($event, item)\"\r\n [config]=\"{\r\n triggerIcon: 'more_vert',\r\n triggerSize: 'sm',\r\n usePortal: true\r\n }\"\r\n size=\"sm\"\r\n variant=\"ghost\"\r\n icon=\"more_vert\">\r\n </cide-ele-dropdown>\r\n</ng-template>\r\n"],"names":["i2"],"mappings":"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"}
|