cloud-ide-academics 0.0.42 → 0.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{cloud-ide-academics-bonafide-request-form.component-Cf1e9jtg.mjs → cloud-ide-academics-bonafide-request-form.component-DoW_oswM.mjs} +13 -11
- package/fesm2022/cloud-ide-academics-bonafide-request-form.component-DoW_oswM.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-CkD-rTJS.mjs → cloud-ide-academics-class-program-term-create.component-kSWzK2lk.mjs} +4 -4
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-CkD-rTJS.mjs.map → cloud-ide-academics-class-program-term-create.component-kSWzK2lk.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-class-program-term-list.component-DaWXETxR.mjs → cloud-ide-academics-class-program-term-list.component-z2Lz6cg9.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-class-program-term-list.component-DaWXETxR.mjs.map → cloud-ide-academics-class-program-term-list.component-z2Lz6cg9.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-cloud-ide-academics-JeFuxiq1.mjs → cloud-ide-academics-cloud-ide-academics-0drYFjQW.mjs} +24 -24
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-0drYFjQW.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-program-class-create.component-19Hm8F3v.mjs → cloud-ide-academics-program-class-create.component-DSPV-iAg.mjs} +4 -4
- package/fesm2022/{cloud-ide-academics-program-class-create.component-19Hm8F3v.mjs.map → cloud-ide-academics-program-class-create.component-DSPV-iAg.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-program-class-list.component-f9a1xGzL.mjs → cloud-ide-academics-program-class-list.component-B97WqYt7.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-program-class-list.component-f9a1xGzL.mjs.map → cloud-ide-academics-program-class-list.component-B97WqYt7.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-teacher-list.component-4SR6to5_.mjs → cloud-ide-academics-teacher-list.component-DfK2r__g.mjs} +31 -49
- package/fesm2022/cloud-ide-academics-teacher-list.component-DfK2r__g.mjs.map +1 -0
- package/fesm2022/cloud-ide-academics.mjs +1 -1
- package/package.json +1 -1
- package/fesm2022/cloud-ide-academics-bonafide-request-form.component-Cf1e9jtg.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-JeFuxiq1.mjs.map +0 -1
- package/fesm2022/cloud-ide-academics-teacher-list.component-4SR6to5_.mjs.map +0 -1
|
@@ -44,7 +44,7 @@ class TeacherListComponent {
|
|
|
44
44
|
columns: [
|
|
45
45
|
{
|
|
46
46
|
key: 'teacher_details',
|
|
47
|
-
header: '
|
|
47
|
+
header: 'Faculty Details',
|
|
48
48
|
type: 'custom',
|
|
49
49
|
width: '300px',
|
|
50
50
|
sortable: true,
|
|
@@ -85,7 +85,7 @@ class TeacherListComponent {
|
|
|
85
85
|
},
|
|
86
86
|
search: {
|
|
87
87
|
enabled: true,
|
|
88
|
-
placeholder: 'Search
|
|
88
|
+
placeholder: 'Search faculty by name, ID, email...',
|
|
89
89
|
searchableColumns: ['user_fullname', 'user_username', 'user_emailid'],
|
|
90
90
|
debounceMs: 300
|
|
91
91
|
},
|
|
@@ -135,8 +135,8 @@ class TeacherListComponent {
|
|
|
135
135
|
this.loading.set(false);
|
|
136
136
|
},
|
|
137
137
|
error: (error) => {
|
|
138
|
-
console.error('Error loading
|
|
139
|
-
this.notificationService.error('Failed to load
|
|
138
|
+
console.error('Error loading faculty:', error);
|
|
139
|
+
this.notificationService.error('Failed to load faculty. Please try again.');
|
|
140
140
|
this.loading.set(false);
|
|
141
141
|
}
|
|
142
142
|
});
|
|
@@ -181,14 +181,14 @@ class TeacherListComponent {
|
|
|
181
181
|
}
|
|
182
182
|
createNewTeacher() {
|
|
183
183
|
if (!this.rightsService.hasRight('CREATE')) {
|
|
184
|
-
this.notificationService.error('You do not have permission to create
|
|
184
|
+
this.notificationService.error('You do not have permission to create faculty');
|
|
185
185
|
return;
|
|
186
186
|
}
|
|
187
187
|
this.router.navigate(['/control-panel/teacher/create']);
|
|
188
188
|
}
|
|
189
189
|
viewTeacher(teacher) {
|
|
190
190
|
if (!this.rightsService.hasRight('VIEW')) {
|
|
191
|
-
this.notificationService.error('You do not have permission to view
|
|
191
|
+
this.notificationService.error('You do not have permission to view faculty');
|
|
192
192
|
return;
|
|
193
193
|
}
|
|
194
194
|
const query = generateStringFromObject({ user_id: teacher._id });
|
|
@@ -196,7 +196,7 @@ class TeacherListComponent {
|
|
|
196
196
|
}
|
|
197
197
|
editTeacher(teacher) {
|
|
198
198
|
if (!this.rightsService.hasRight('EDIT')) {
|
|
199
|
-
this.notificationService.error('You do not have permission to edit
|
|
199
|
+
this.notificationService.error('You do not have permission to edit faculty');
|
|
200
200
|
return;
|
|
201
201
|
}
|
|
202
202
|
const query = generateStringFromObject({ user_id: teacher._id });
|
|
@@ -204,7 +204,7 @@ class TeacherListComponent {
|
|
|
204
204
|
}
|
|
205
205
|
deleteTeacher(teacher) {
|
|
206
206
|
if (!this.rightsService.hasRight('DELETE')) {
|
|
207
|
-
this.notificationService.error('You do not have permission to delete
|
|
207
|
+
this.notificationService.error('You do not have permission to delete faculty');
|
|
208
208
|
return;
|
|
209
209
|
}
|
|
210
210
|
this.confirmationService.confirmDelete(teacher.user_fullname || 'Unknown')
|
|
@@ -214,11 +214,11 @@ class TeacherListComponent {
|
|
|
214
214
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
215
215
|
.subscribe({
|
|
216
216
|
next: () => {
|
|
217
|
-
this.notificationService.success('
|
|
217
|
+
this.notificationService.success('Faculty deleted successfully');
|
|
218
218
|
this.loadTeachers();
|
|
219
219
|
},
|
|
220
220
|
error: () => {
|
|
221
|
-
this.notificationService.error('Failed to delete
|
|
221
|
+
this.notificationService.error('Failed to delete faculty');
|
|
222
222
|
}
|
|
223
223
|
});
|
|
224
224
|
}
|
|
@@ -234,25 +234,16 @@ class TeacherListComponent {
|
|
|
234
234
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TeacherListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
235
235
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: TeacherListComponent, isStandalone: true, selector: "cide-academics-teacher-list", viewQueries: [{ propertyName: "teacherDetailsRendererTemplate", first: true, predicate: ["teacherDetailsRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "contactInfoRendererTemplate", first: true, predicate: ["contactInfoRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "statusRendererTemplate", first: true, predicate: ["statusRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "actionsDropdownRendererTemplate", first: true, predicate: ["actionsDropdownRendererTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
236
236
|
<cide-lyt-shared-wrapper [shared_wrapper_setup_param]="shared_wrapper_setup_param">
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
<
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
<p class="tw-text-xs tw-text-gray-600">Manage and view all teacher profiles</p>
|
|
246
|
-
</div>
|
|
247
|
-
</div>
|
|
248
|
-
@if (canCreate()) {
|
|
249
|
-
<button cideEleButton variant="primary" size="sm" (click)="createNewTeacher()" leftIcon="add">
|
|
250
|
-
Add Teacher
|
|
251
|
-
</button>
|
|
252
|
-
}
|
|
253
|
-
</div>
|
|
254
|
-
</div>
|
|
237
|
+
<!-- Breadcrumb Actions -->
|
|
238
|
+
<div breadcrumb-actions>
|
|
239
|
+
@if (canCreate()) {
|
|
240
|
+
<button cideEleButton variant="primary" size="sm" (click)="createNewTeacher()" leftIcon="add">
|
|
241
|
+
Add Faculty
|
|
242
|
+
</button>
|
|
243
|
+
}
|
|
244
|
+
</div>
|
|
255
245
|
|
|
246
|
+
<div class="tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden">
|
|
256
247
|
<!-- Data Grid Section -->
|
|
257
248
|
<div class="tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden">
|
|
258
249
|
<cide-ele-data-grid
|
|
@@ -277,7 +268,7 @@ class TeacherListComponent {
|
|
|
277
268
|
</div>
|
|
278
269
|
@if (row?.user_type_mapping?.syutm_type_specific_id) {
|
|
279
270
|
<div class="tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono">
|
|
280
|
-
<span class="tw-font-medium">
|
|
271
|
+
<span class="tw-font-medium">Faculty ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}
|
|
281
272
|
</div>
|
|
282
273
|
}
|
|
283
274
|
@if (row?.user_username) {
|
|
@@ -347,25 +338,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
347
338
|
CideLytSharedWrapperComponent
|
|
348
339
|
], template: `
|
|
349
340
|
<cide-lyt-shared-wrapper [shared_wrapper_setup_param]="shared_wrapper_setup_param">
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
<
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
<p class="tw-text-xs tw-text-gray-600">Manage and view all teacher profiles</p>
|
|
359
|
-
</div>
|
|
360
|
-
</div>
|
|
361
|
-
@if (canCreate()) {
|
|
362
|
-
<button cideEleButton variant="primary" size="sm" (click)="createNewTeacher()" leftIcon="add">
|
|
363
|
-
Add Teacher
|
|
364
|
-
</button>
|
|
365
|
-
}
|
|
366
|
-
</div>
|
|
367
|
-
</div>
|
|
341
|
+
<!-- Breadcrumb Actions -->
|
|
342
|
+
<div breadcrumb-actions>
|
|
343
|
+
@if (canCreate()) {
|
|
344
|
+
<button cideEleButton variant="primary" size="sm" (click)="createNewTeacher()" leftIcon="add">
|
|
345
|
+
Add Faculty
|
|
346
|
+
</button>
|
|
347
|
+
}
|
|
348
|
+
</div>
|
|
368
349
|
|
|
350
|
+
<div class="tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden">
|
|
369
351
|
<!-- Data Grid Section -->
|
|
370
352
|
<div class="tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden">
|
|
371
353
|
<cide-ele-data-grid
|
|
@@ -390,7 +372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
390
372
|
</div>
|
|
391
373
|
@if (row?.user_type_mapping?.syutm_type_specific_id) {
|
|
392
374
|
<div class="tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono">
|
|
393
|
-
<span class="tw-font-medium">
|
|
375
|
+
<span class="tw-font-medium">Faculty ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}
|
|
394
376
|
</div>
|
|
395
377
|
}
|
|
396
378
|
@if (row?.user_username) {
|
|
@@ -450,4 +432,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
450
432
|
}] });
|
|
451
433
|
|
|
452
434
|
export { TeacherListComponent };
|
|
453
|
-
//# sourceMappingURL=cloud-ide-academics-teacher-list.component-
|
|
435
|
+
//# sourceMappingURL=cloud-ide-academics-teacher-list.component-DfK2r__g.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-ide-academics-teacher-list.component-DfK2r__g.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/teacher-management/components/teacher-list/teacher-list.component.ts"],"sourcesContent":["import { Component, OnInit, OnDestroy, inject, signal, computed, viewChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DestroyRef } from '@angular/core';\nimport {\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleButtonComponent,\n CideEleDataGridComponent,\n CideSelectComponent,\n TemplateContext,\n DropdownItem,\n NotificationService,\n GridEvent,\n ConfirmationService\n} from 'cloud-ide-element';\nimport { CideLytSharedWrapperComponent, ComponentContextService, RightsService } from 'cloud-ide-layout';\nimport { USER_SERVICE_TOKEN, IUserMasterService } from 'cloud-ide-shared';\nimport {\n AuthUserMst,\n AuthUserMstListPayload,\n authUserMstListControllerResponse,\n generateStringFromObject,\n CoreUserTypeMapping\n} from 'cloud-ide-lms-model';\n\ninterface Teacher extends AuthUserMst, Record<string, unknown> {\n user_type_mapping?: CoreUserTypeMapping;\n teacher_id?: string;\n department?: string;\n subject?: string;\n specialization?: string;\n}\n\n@Component({\n selector: 'cide-academics-teacher-list',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleButtonComponent,\n CideEleDataGridComponent,\n CideLytSharedWrapperComponent\n ],\n template: `\n <cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"shared_wrapper_setup_param\">\n <!-- Breadcrumb Actions -->\n <div breadcrumb-actions>\n @if (canCreate()) {\n <button cideEleButton variant=\"primary\" size=\"sm\" (click)=\"createNewTeacher()\" leftIcon=\"add\">\n Add Faculty\n </button>\n }\n </div>\n\n <div class=\"tw-w-full tw-h-full tw-flex tw-flex-col tw-overflow-hidden\">\n <!-- Data Grid Section -->\n <div class=\"tw-flex-1 tw-h-auto tw-w-full tw-min-h-0 tw-relative tw-z-0 tw-overflow-hidden\">\n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n [templateRenderers]=\"templateRenderers()\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n </div>\n\n <!-- Teacher Details Template -->\n <ng-template #teacherDetailsRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\n <div class=\"tw-flex tw-items-start tw-space-x-3 tw-py-3\">\n <div class=\"tw-flex-shrink-0 tw-mt-0.5\">\n <div class=\"tw-w-10 tw-h-10 tw-bg-purple-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center\">\n <cide-ele-icon class=\"tw-text-purple-600 tw-w-5 tw-h-5\">person</cide-ele-icon>\n </div>\n </div>\n <div class=\"tw-min-w-0 tw-flex-1 tw-space-y-1\">\n <div class=\"tw-text-sm tw-font-semibold tw-text-gray-900 tw-leading-5\">\n {{ row?.user_fullname || getFullName(row) }}\n </div>\n @if (row?.user_type_mapping?.syutm_type_specific_id) {\n <div class=\"tw-text-xs tw-text-gray-600 tw-leading-4 tw-font-mono\">\n <span class=\"tw-font-medium\">Faculty ID:</span> {{ row.user_type_mapping.syutm_type_specific_id }}\n </div>\n }\n @if (row?.user_username) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-leading-4\">\n Username: {{ row.user_username }}\n </div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Contact Info Template -->\n <ng-template #contactInfoRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\n <div class=\"tw-py-3 tw-space-y-1\">\n @if (row?.user_emailid) {\n <div class=\"tw-text-xs tw-text-gray-900 tw-flex tw-items-center\">\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2\">email</cide-ele-icon>\n <span class=\"tw-truncate\">{{ row.user_emailid }}</span>\n </div>\n }\n @if (row?.user_mobileno) {\n <div class=\"tw-text-xs tw-text-gray-600 tw-flex tw-items-center\">\n <cide-ele-icon class=\"tw-w-3 tw-h-3 tw-text-gray-400 tw-mr-2\">phone</cide-ele-icon>\n <span class=\"tw-truncate\">{{ row.user_mobileno }}</span>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Status Template -->\n <ng-template #statusRendererTemplate let-value=\"value\" let-row=\"row\" let-column=\"column\">\n <div class=\"tw-flex tw-items-center tw-justify-center tw-py-3\">\n @if (row?.user_isactive) {\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800\">\n Active\n </span>\n } @else {\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-1 tw-rounded-full tw-text-xs tw-font-medium tw-bg-red-100 tw-text-red-800\">\n Inactive\n </span>\n }\n </div>\n </ng-template>\n\n <!-- Actions Template -->\n <ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\" let-column=\"column\">\n <cide-ele-dropdown\n [items]=\"getActionDropdownItems(row)\"\n (itemClick)=\"onDropdownItemClick($event, row)\"\n size=\"sm\"\n variant=\"ghost\"\n icon=\"more_vert\">\n </cide-ele-dropdown>\n </ng-template>\n </cide-lyt-shared-wrapper>\n `,\n styles: [`\n :host {\n @apply tw-w-full tw-h-full tw-flex tw-flex-col;\n }\n `]\n})\nexport class TeacherListComponent implements OnInit, OnDestroy {\n shared_wrapper_setup_param = { sypg_page_code: \"academics_teacher_list\" };\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly userMasterService = inject(USER_SERVICE_TOKEN) as IUserMasterService;\n private readonly router = inject(Router);\n private readonly route = inject(ActivatedRoute);\n private readonly notificationService = inject(NotificationService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly componentContextService = inject(ComponentContextService);\n private readonly rightsService = inject(RightsService);\n\n // ViewChild for templates\n teacherDetailsRendererTemplate = viewChild<TemplateRef<TemplateContext>>('teacherDetailsRendererTemplate');\n contactInfoRendererTemplate = viewChild<TemplateRef<TemplateContext>>('contactInfoRendererTemplate');\n statusRendererTemplate = viewChild<TemplateRef<TemplateContext>>('statusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild<TemplateRef<TemplateContext>>('actionsDropdownRendererTemplate');\n\n // State\n teachers = signal<Teacher[]>([]);\n loading = signal<boolean>(false);\n pageIndex = signal<number>(1);\n pageSize = signal<number>(10);\n total = signal<number>(0);\n searchQuery = signal<string>('');\n\n // Rights computed signals\n canCreate = computed(() => this.rightsService.hasRight('CREATE'));\n canEdit = computed(() => this.rightsService.hasRight('EDIT'));\n canDelete = computed(() => this.rightsService.hasRight('DELETE'));\n canView = computed(() => this.rightsService.hasRight('VIEW'));\n\n // Grid configuration\n gridConfig = computed(() => ({\n id: 'teachers-grid',\n responsive: true,\n data: this.teachers(),\n columns: [\n {\n key: 'teacher_details',\n header: 'Faculty Details',\n type: 'custom' as any,\n width: '300px',\n sortable: true,\n renderer: 'teacherDetailsRendererTemplate'\n },\n {\n key: 'contact_info',\n header: 'Contact Information',\n type: 'custom' as any,\n width: '250px',\n sortable: false,\n renderer: 'contactInfoRendererTemplate'\n },\n {\n key: 'user_isactive',\n header: 'Status',\n type: 'custom' as any,\n width: '120px',\n sortable: true,\n renderer: 'statusRendererTemplate'\n },\n {\n key: 'actions',\n header: 'Actions',\n type: 'actions' as any,\n width: '100px',\n sortable: false,\n renderer: 'actionsDropdownRendererTemplate'\n }\n ],\n pagination: {\n enabled: true,\n pageSize: this.pageSize(),\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search faculty by name, ID, email...',\n searchableColumns: ['user_fullname', 'user_username', 'user_emailid'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n rowHeight: 70\n }));\n\n templateRenderers = computed(() => ({\n teacherDetailsRendererTemplate: this.teacherDetailsRendererTemplate(),\n contactInfoRendererTemplate: this.contactInfoRendererTemplate(),\n statusRendererTemplate: this.statusRendererTemplate(),\n actionsDropdownRendererTemplate: this.actionsDropdownRendererTemplate()\n }));\n\n ngOnInit(): void {\n // Initialize rights for teacher management\n this.rightsService.initializeRights('academics_teacher_list');\n this.loadTeachers();\n }\n\n ngOnDestroy(): void {\n // Cleanup handled by takeUntilDestroyed\n }\n\n loadTeachers(): void {\n this.loading.set(true);\n const payload: AuthUserMstListPayload = {\n pageIndex: this.pageIndex(),\n pageSize: this.pageSize(),\n query: this.searchQuery() || undefined,\n pagination: true\n };\n\n this.userMasterService.getUserList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: authUserMstListControllerResponse) => {\n if (response.success && response.data) {\n // Filter for teachers only based on user_type_mapping\n const teachers = (response.data as Teacher[]).filter(user => \n user.user_type_mapping?.syutm_user_type === 'TEACHER'\n );\n this.teachers.set(teachers);\n this.total.set(teachers.length);\n } else {\n this.teachers.set([]);\n this.total.set(0);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading faculty:', error);\n this.notificationService.error('Failed to load faculty. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n onGridEvent(event: GridEvent): void {\n if (event.type === 'pageChange') {\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data) {\n this.pageIndex.set(event.data['pageIndex'] as number);\n this.loadTeachers();\n }\n } else if (event.type === 'search') {\n if (event.data && typeof event.data === 'object' && 'query' in event.data) {\n this.searchQuery.set(event.data['query'] as string);\n this.pageIndex.set(1);\n this.loadTeachers();\n }\n } else if (event.type === 'refresh') {\n this.loadTeachers();\n }\n }\n\n getActionDropdownItems(row: Teacher): DropdownItem[] {\n return [\n { id: 'view', label: 'View Profile', icon: 'visibility' },\n { id: 'edit', label: 'Edit', icon: 'edit' },\n { id: 'delete', label: 'Delete', icon: 'delete' }\n ];\n }\n\n onDropdownItemClick(item: DropdownItem, row: Teacher): void {\n switch (item.id) {\n case 'view':\n this.viewTeacher(row);\n break;\n case 'edit':\n this.editTeacher(row);\n break;\n case 'delete':\n this.deleteTeacher(row);\n break;\n }\n }\n\n createNewTeacher(): void {\n if (!this.rightsService.hasRight('CREATE')) {\n this.notificationService.error('You do not have permission to create faculty');\n return;\n }\n this.router.navigate(['/control-panel/teacher/create']);\n }\n\n viewTeacher(teacher: Teacher): void {\n if (!this.rightsService.hasRight('VIEW')) {\n this.notificationService.error('You do not have permission to view faculty');\n return;\n }\n const query = generateStringFromObject({ user_id: teacher._id });\n this.router.navigate(['/control-panel/teacher/view', query]);\n }\n\n editTeacher(teacher: Teacher): void {\n if (!this.rightsService.hasRight('EDIT')) {\n this.notificationService.error('You do not have permission to edit faculty');\n return;\n }\n const query = generateStringFromObject({ user_id: teacher._id });\n this.router.navigate(['/control-panel/teacher/edit', query]);\n }\n\n deleteTeacher(teacher: Teacher): void {\n if (!this.rightsService.hasRight('DELETE')) {\n this.notificationService.error('You do not have permission to delete faculty');\n return;\n }\n this.confirmationService.confirmDelete(teacher.user_fullname || 'Unknown')\n .then((confirmed) => {\n if (confirmed && teacher._id) {\n this.userMasterService.deleteUserMaster(teacher._id)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => {\n this.notificationService.success('Faculty deleted successfully');\n this.loadTeachers();\n },\n error: () => {\n this.notificationService.error('Failed to delete faculty');\n }\n });\n }\n })\n .catch(() => {\n // User cancelled - no action needed\n });\n }\n\n getFullName(user: any): string {\n const parts = [user.user_firstname, user.user_middlename, user.user_lastname].filter(Boolean);\n return parts.length > 0 ? parts.join(' ') : 'Unknown';\n }\n}\n\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as AcademicYearCreateComponent, e as AcademicYearListComponent, f as CideLytAcademicYearMappingService, a as CideLytAcademicYearService, h as CideLytClassProgramBranchFormComponent, g as CideLytClassProgramBranchListComponent, b as CideLytClassProgramBranchService, k as CideLytProgramSectionSelectorComponent, j as CideLytProgramTermSectionService, P as ProgramTermSectionCreateComponent, i as ProgramTermSectionListComponent, d as academicsRoutes } from './cloud-ide-academics-cloud-ide-academics-
|
|
1
|
+
export { A as AcademicYearCreateComponent, e as AcademicYearListComponent, f as CideLytAcademicYearMappingService, a as CideLytAcademicYearService, h as CideLytClassProgramBranchFormComponent, g as CideLytClassProgramBranchListComponent, b as CideLytClassProgramBranchService, k as CideLytProgramSectionSelectorComponent, j as CideLytProgramTermSectionService, P as ProgramTermSectionCreateComponent, i as ProgramTermSectionListComponent, d as academicsRoutes } from './cloud-ide-academics-cloud-ide-academics-0drYFjQW.mjs';
|
|
2
2
|
//# sourceMappingURL=cloud-ide-academics.mjs.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-academics-bonafide-request-form.component-Cf1e9jtg.mjs","sources":["../../../projects/cloud-ide-academics/src/lib/collection/bonafide/components/bonafide-request-form/bonafide-request-form.component.ts"],"sourcesContent":["import { Component, signal, DestroyRef, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CideInputComponent, CideTextareaComponent, CideEleButtonComponent } from 'cloud-ide-element';\nimport { NotificationService } from 'cloud-ide-element';\nimport { CideAcademicsBonafideService } from '../../services/bonafide.service';\n\n@Component({\n selector: 'cide-academics-bonafide-request-form',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n CideEleButtonComponent\n ],\n template: `\n <div class=\"bonafide-form-container\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <cide-input\n label=\"Purpose\"\n formControlName=\"abnr_purpose\"\n [required]=\"true\">\n </cide-input>\n \n <cide-textarea\n label=\"Remarks\"\n formControlName=\"abnr_remarks\">\n </cide-textarea>\n \n <div class=\"form-actions\">\n <cide-ele-button type=\"submit\" [disabled]=\"!form.valid || loading()\">\n Submit Request\n </cide-ele-button>\n <cide-ele-button type=\"button\" (click)=\"cancel()\">\n Cancel\n </cide-ele-button>\n </div>\n </form>\n </div>\n `,\n styles: [`\n .bonafide-form-container {\n padding: 1rem;\n max-width: 600px;\n }\n .form-actions {\n display: flex;\n gap: 1rem;\n margin-top: 1rem;\n }\n `]\n})\nexport class CideAcademicsBonafideRequestFormComponent implements OnInit {\n private destroyRef = inject(DestroyRef);\n private bonafideService = inject(CideAcademicsBonafideService);\n private fb = inject(FormBuilder);\n private router = inject(Router);\n private notificationService = inject(NotificationService);\n\n form!: FormGroup;\n loading = signal(false);\n\n ngOnInit(): void {\n this.form = this.fb.group({\n abnr_purpose: ['', Validators.required],\n abnr_remarks: ['']\n });\n }\n\n onSubmit(): void {\n if (this.form.valid) {\n this.loading.set(true);\n this.bonafideService.createRequest(this.form.value)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success('Bonafide request created successfully');\n this.router.navigate(['/control-panel/bonafide']);\n } else {\n this.notificationService.error(response.message || 'Failed to create request');\n }\n this.loading.set(false);\n },\n error: (err) => {\n this.notificationService.error('Failed to create request');\n this.loading.set(false);\n }\n });\n }\n }\n\n cancel(): void {\n this.router.navigate(['/control-panel/bonafide']);\n }\n}\n\n"],"names":[],"mappings":"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"}
|