cloud-ide-academics 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts ADDED
@@ -0,0 +1,377 @@
1
+ import { Route } from '@angular/router';
2
+ import * as _angular_core from '@angular/core';
3
+ import { OnInit, OnDestroy, TemplateRef } from '@angular/core';
4
+ import { FormGroup, FormArray } from '@angular/forms';
5
+ import { TabItem, TemplateContext, GridConfiguration, GridEvent, DropdownConfig, DropdownItem } from 'cloud-ide-element';
6
+ import { Observable } from 'rxjs';
7
+ import { MAcademicYear, academicYearControllerResponse, MAcademicYearGetByIdPayload, academicYearByIdControllerResponse, MAcademicYearInsertUpdatePayload, academicYearInsertUpdateControllerResponse, MAcademicYearDeletePayload, academicYearDeleteControllerResponse, MAcademicYearToggleStatusPayload, academicYearToggleStatusControllerResponse, academicYearMappingInsertUpdateControllerResponse, MAcademicYearMapping, academicYearMappingControllerResponse, MAcademicYearMappingGetByIdPayload, academicYearMappingByIdControllerResponse, MAcademicYearMappingInsertUpdatePayload, MAcademicYearMappingDeletePayload, academicYearMappingDeleteControllerResponse, MAcademicYearMappingToggleStatusPayload, academicYearMappingToggleStatusControllerResponse } from 'cloud-ide-lms-model';
8
+
9
+ declare const academicsRoutes: Route[];
10
+
11
+ interface AcademicYearMapping$1 {
12
+ _id?: string;
13
+ acayrmp_entity_id_syen: string;
14
+ acayrmp_islocked?: boolean;
15
+ acayrmp_iscurrent?: boolean;
16
+ }
17
+ interface Entity {
18
+ _id?: string;
19
+ syen_name?: string;
20
+ syen_code?: string;
21
+ }
22
+ declare class AcademicYearCreateComponent implements OnInit, OnDestroy {
23
+ private readonly destroyRef;
24
+ private readonly fb;
25
+ private readonly academicYearService;
26
+ private readonly academicYearMappingService;
27
+ private readonly entityService;
28
+ private readonly router;
29
+ private readonly route;
30
+ academicYearForm: FormGroup;
31
+ readonly activeTab: _angular_core.WritableSignal<string>;
32
+ readonly loading: _angular_core.WritableSignal<boolean>;
33
+ readonly error: _angular_core.WritableSignal<string | null>;
34
+ readonly academicYearId: _angular_core.WritableSignal<string>;
35
+ readonly isEditMode: _angular_core.WritableSignal<boolean>;
36
+ readonly originalMappings: _angular_core.WritableSignal<AcademicYearMapping$1[]>;
37
+ readonly entityOptions: _angular_core.WritableSignal<Entity[]>;
38
+ constructor();
39
+ ngOnInit(): void;
40
+ /**
41
+ * Initialize component
42
+ */
43
+ private initializeComponent;
44
+ /**
45
+ * Load dropdown options
46
+ */
47
+ private loadDropdownOptions;
48
+ /**
49
+ * Load academic year data for edit mode
50
+ */
51
+ private loadAcademicYearData;
52
+ /**
53
+ * Load academic year mappings for edit mode
54
+ */
55
+ private loadAcademicYearMappings;
56
+ /**
57
+ * Populate form with academic year data
58
+ */
59
+ private populateFormWithAcademicYearData;
60
+ /**
61
+ * Populate form with mappings data
62
+ */
63
+ private populateFormWithMappingsData;
64
+ /**
65
+ * Tab configuration
66
+ */
67
+ academicYearTabs(): {
68
+ id: string;
69
+ label: string;
70
+ icon: string;
71
+ }[];
72
+ onTabChange(tab: TabItem): void;
73
+ onSubmit(): void;
74
+ /**
75
+ * Mark all form controls as touched to trigger validation display
76
+ */
77
+ private markFormGroupTouched;
78
+ resetForm(): void;
79
+ /**
80
+ * Go back to academic year list
81
+ */
82
+ goBackToAcademicYearList(): void;
83
+ /**
84
+ * Cancel form and optionally navigate back
85
+ */
86
+ cancelForm(): void;
87
+ /**
88
+ * Get page title based on mode
89
+ */
90
+ getPageTitle(): string;
91
+ /**
92
+ * Getter methods for form arrays
93
+ */
94
+ get academicYearMappingsArray(): FormArray;
95
+ /**
96
+ * Add new academic year mapping
97
+ */
98
+ addAcademicYearMapping(): void;
99
+ /**
100
+ * Update academic year ID in all existing mappings when academic year ID changes
101
+ */
102
+ private updateMappingsAcademicYearId;
103
+ /**
104
+ * Get form array value for validation or submission
105
+ */
106
+ getAcademicYearMappingsValue(): any[];
107
+ /**
108
+ * Check if mappings array has any invalid controls
109
+ */
110
+ isMappingsArrayValid(): boolean;
111
+ /**
112
+ * Set academic year ID for all existing mappings
113
+ * This is useful when the academic year ID is generated after creation
114
+ */
115
+ setAcademicYearIdForMappings(academicYearId: string): void;
116
+ /**
117
+ * Validate that all mappings have required fields
118
+ */
119
+ validateMappings(): boolean;
120
+ /**
121
+ * Find duplicate entity selection in mappings
122
+ */
123
+ private findDuplicateEntitySelection;
124
+ /**
125
+ * Remove academic year mapping
126
+ */
127
+ removeAcademicYearMapping(index: number): void;
128
+ /**
129
+ * Handle entity selection change for a specific mapping
130
+ */
131
+ onMappingEntityChange(event: any, mappingIndex: number): void;
132
+ /**
133
+ * Get filtered entity options excluding already selected entities in other mappings
134
+ * @param currentMappingIndex The index of the current mapping being edited
135
+ * @returns Entity options excluding already selected entities
136
+ */
137
+ getFilteredEntityOptions(currentMappingIndex: number): any[];
138
+ /**
139
+ * Get all currently selected entity IDs from other mappings
140
+ */
141
+ private getSelectedEntityIds;
142
+ /**
143
+ * Update entity options for all mappings to prevent duplicates
144
+ */
145
+ private updateEntityOptionsForMappings;
146
+ /**
147
+ * Check if an entity is disabled for a specific mapping
148
+ */
149
+ isEntityDisabled(entityId: string, mappingIndex: number): boolean;
150
+ /**
151
+ * Get the count of available entities for a specific mapping
152
+ */
153
+ getAvailableEntityCount(mappingIndex: number): number;
154
+ /**
155
+ * Get the count of total entities
156
+ */
157
+ getTotalEntityCount(): number;
158
+ /**
159
+ * Check if all entities are already selected in other mappings
160
+ * @param currentMappingIndex The index of the current mapping being edited
161
+ * @returns True if all entities are already selected
162
+ */
163
+ isAllEntitiesSelected(currentMappingIndex: number): boolean;
164
+ /**
165
+ * Check if all entities are already mapped (for disabling Add Entity Mapping button)
166
+ * @returns True if all entities are already mapped
167
+ */
168
+ isAllEntitiesMapped(): boolean;
169
+ /**
170
+ * Cleanup when component is destroyed
171
+ * This ensures that when the component is destroyed (e.g., tab closed),
172
+ * all state is properly reset to prevent old data from persisting
173
+ */
174
+ ngOnDestroy(): void;
175
+ /**
176
+ * Delete removed academic year mappings
177
+ */
178
+ private deleteRemovedMappings;
179
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AcademicYearCreateComponent, never>;
180
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AcademicYearCreateComponent, "cide-core-academic-year-create", never, {}, {}, never, never, true, never>;
181
+ }
182
+
183
+ interface AcademicYear {
184
+ _id?: string;
185
+ acayr_code?: string;
186
+ acayr_name?: string;
187
+ acayr_description?: string;
188
+ acayr_from_date?: string | Date;
189
+ acayr_to_date?: string | Date;
190
+ acayr_isactive?: boolean;
191
+ acayr_iscurrent?: boolean;
192
+ acayr_islocked?: boolean;
193
+ }
194
+ declare class AcademicYearListComponent implements OnInit, OnDestroy {
195
+ private readonly destroyRef;
196
+ private readonly academicYearService;
197
+ private readonly router;
198
+ private readonly appState;
199
+ private readonly confirmationService;
200
+ private readonly notificationService;
201
+ readonly academicYearDetailsRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
202
+ readonly dateRangeRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
203
+ readonly statusRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
204
+ readonly actionsDropdownRendererTemplate: _angular_core.Signal<TemplateRef<TemplateContext<Record<string, unknown>>>>;
205
+ readonly academicYears: _angular_core.WritableSignal<AcademicYear[]>;
206
+ readonly loading: _angular_core.WritableSignal<boolean>;
207
+ readonly error: _angular_core.WritableSignal<string | null>;
208
+ readonly currentPage: _angular_core.WritableSignal<number>;
209
+ readonly pageSize: _angular_core.WritableSignal<number>;
210
+ readonly totalItems: _angular_core.WritableSignal<number>;
211
+ readonly totalPages: _angular_core.WritableSignal<number>;
212
+ readonly searchQuery: _angular_core.WritableSignal<string>;
213
+ readonly sortColumn: _angular_core.WritableSignal<string>;
214
+ readonly sortDirection: _angular_core.WritableSignal<"asc" | "desc">;
215
+ readonly selectedStatusFilter: _angular_core.WritableSignal<string>;
216
+ readonly statusFilterOptions: _angular_core.Signal<{
217
+ value: string;
218
+ label: string;
219
+ }[]>;
220
+ readonly gridConfig: _angular_core.Signal<GridConfiguration<AcademicYear>>;
221
+ ngOnInit(): void;
222
+ ngOnDestroy(): void;
223
+ /**
224
+ * Load academic years from API
225
+ */
226
+ loadAcademicYears(): void;
227
+ templateRenderers: _angular_core.Signal<Record<string, TemplateRef<TemplateContext<Record<string, unknown>>>>>;
228
+ /**
229
+ * Handle grid events
230
+ */
231
+ onGridEvent(event: GridEvent<any>): void;
232
+ onStatusFilterChange(): void;
233
+ clearFilters(): void;
234
+ createAcademicYear(): void;
235
+ viewAcademicYear(academicYear: AcademicYear): void;
236
+ editAcademicYear(academicYear: AcademicYear): void;
237
+ /**
238
+ * Get dropdown configuration
239
+ */
240
+ getDropdownConfig(): DropdownConfig;
241
+ /**
242
+ * Get action dropdown items
243
+ */
244
+ getActionDropdownItems(academicYear: AcademicYear): DropdownItem[];
245
+ /**
246
+ * Handle dropdown item click
247
+ */
248
+ onDropdownItemClick(item: DropdownItem, academicYear: AcademicYear): void;
249
+ /**
250
+ * Toggle academic year status (active/inactive)
251
+ */
252
+ toggleAcademicYearStatus(academicYear: AcademicYear): void;
253
+ /**
254
+ * Toggle status of all academic year mappings for a specific academic year
255
+ */
256
+ private toggleAcademicYearMappingsStatus;
257
+ private handleExport;
258
+ private exportToCSV;
259
+ private exportToExcel;
260
+ private exportToPDF;
261
+ private downloadFile;
262
+ formatDate(date: string | Date | null | undefined): string;
263
+ getDuration(fromDate: string | Date | null | undefined, toDate: string | Date | null | undefined): string;
264
+ getStatusBadgeClass(academicYear: AcademicYear): string;
265
+ getActiveStatusBadgeClass(academicYear: AcademicYear): string;
266
+ getStatusText(academicYear: AcademicYear): string;
267
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AcademicYearListComponent, never>;
268
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AcademicYearListComponent, "cide-core-academic-year-list", never, {}, {}, never, never, true, never>;
269
+ }
270
+
271
+ interface AcademicYearMapping {
272
+ _id?: string;
273
+ acayrmp_entity_id_syen: string;
274
+ acayrmp_islocked?: boolean;
275
+ acayrmp_iscurrent?: boolean;
276
+ }
277
+ interface AcademicYearWithMappings {
278
+ acayr_academic_year_mappings?: AcademicYearMapping[];
279
+ [key: string]: any;
280
+ }
281
+ interface DeleteMappingPayload {
282
+ acayrmp_id: string;
283
+ }
284
+ interface ToggleMappingPayload {
285
+ acayrmp_id: string;
286
+ }
287
+ declare class CideLytAcademicYearService {
288
+ private http;
289
+ /**
290
+ * Get list of academic years
291
+ * @param payload - Query parameters for filtering/pagination
292
+ * @returns Observable of academic year list response
293
+ */
294
+ getAcademicYearList(payload: MAcademicYear): Observable<academicYearControllerResponse>;
295
+ /**
296
+ * Get academic year by ID
297
+ * @param payload - Academic year ID payload
298
+ * @returns Observable of academic year data
299
+ */
300
+ getAcademicYearById(payload: MAcademicYearGetByIdPayload): Observable<academicYearByIdControllerResponse>;
301
+ /**
302
+ * Create or update academic year
303
+ * @param data - Academic year data to save
304
+ * @returns Observable of the save response
305
+ */
306
+ saveUpdateAcademicYear(data: MAcademicYearInsertUpdatePayload): Observable<academicYearInsertUpdateControllerResponse>;
307
+ /**
308
+ * Create or update academic year with mappings
309
+ * @param data - Academic year data with mappings
310
+ * @returns Observable of the save response
311
+ */
312
+ saveUpdateAcademicYearWithMappings(data: AcademicYearWithMappings): Observable<academicYearInsertUpdateControllerResponse>;
313
+ /**
314
+ * Delete academic year
315
+ * @param payload - Academic year ID payload
316
+ * @returns Observable of the delete response
317
+ */
318
+ deleteAcademicYear(payload: MAcademicYearDeletePayload): Observable<academicYearDeleteControllerResponse>;
319
+ /**
320
+ * Toggle academic year status
321
+ * @param payload - Academic year ID payload
322
+ * @returns Observable of the toggle response
323
+ */
324
+ toggleAcademicYearStatus(payload: MAcademicYearToggleStatusPayload): Observable<academicYearToggleStatusControllerResponse>;
325
+ /**
326
+ * Delete academic year mapping
327
+ * @param payload - Academic year mapping ID payload
328
+ * @returns Observable of the delete response
329
+ */
330
+ deleteAcademicYearMapping(payload: DeleteMappingPayload): Observable<academicYearMappingInsertUpdateControllerResponse>;
331
+ /**
332
+ * Toggle academic year mapping status
333
+ * @param payload - Academic year mapping ID payload
334
+ * @returns Observable of the toggle response
335
+ */
336
+ toggleAcademicYearMappingStatus(payload: ToggleMappingPayload): Observable<academicYearMappingInsertUpdateControllerResponse>;
337
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytAcademicYearService, never>;
338
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytAcademicYearService>;
339
+ }
340
+
341
+ declare class CideLytAcademicYearMappingService {
342
+ private http;
343
+ /**
344
+ * Get list of academic year mappings
345
+ * @param payload - Query parameters for filtering/pagination
346
+ * @returns Observable of academic year mapping list response
347
+ */
348
+ getAcademicYearMappingList(payload: MAcademicYearMapping): Observable<academicYearMappingControllerResponse>;
349
+ /**
350
+ * Get academic year mapping by ID
351
+ * @param payload - Academic year mapping ID payload
352
+ * @returns Observable of academic year mapping data
353
+ */
354
+ getAcademicYearMappingById(payload: MAcademicYearMappingGetByIdPayload): Observable<academicYearMappingByIdControllerResponse>;
355
+ /**
356
+ * Create or update academic year mapping
357
+ * @param data - Academic year mapping data to save
358
+ * @returns Observable of the save response
359
+ */
360
+ saveUpdateAcademicYearMapping(data: MAcademicYearMappingInsertUpdatePayload): Observable<academicYearMappingInsertUpdateControllerResponse>;
361
+ /**
362
+ * Delete academic year mapping
363
+ * @param payload - Academic year mapping ID payload
364
+ * @returns Observable of the delete response
365
+ */
366
+ deleteAcademicYearMapping(payload: MAcademicYearMappingDeletePayload): Observable<academicYearMappingDeleteControllerResponse>;
367
+ /**
368
+ * Toggle academic year mapping status
369
+ * @param payload - Academic year mapping ID payload
370
+ * @returns Observable of the toggle response
371
+ */
372
+ toggleAcademicYearMappingStatus(payload: MAcademicYearMappingToggleStatusPayload): Observable<academicYearMappingToggleStatusControllerResponse>;
373
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CideLytAcademicYearMappingService, never>;
374
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<CideLytAcademicYearMappingService>;
375
+ }
376
+
377
+ export { AcademicYearCreateComponent, AcademicYearListComponent, CideLytAcademicYearMappingService, CideLytAcademicYearService, academicsRoutes };
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "cloud-ide-academics",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^20.1.0",
6
+ "@angular/core": "^20.1.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false,
12
+ "module": "fesm2022/cloud-ide-academics.mjs",
13
+ "typings": "index.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./index.d.ts",
20
+ "default": "./fesm2022/cloud-ide-academics.mjs"
21
+ }
22
+ }
23
+ }