cloud-ide-academics 0.0.10 → 0.0.21
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-BwiUbPa2.mjs → cloud-ide-academics-class-program-term-create.component--_32xUHz.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-class-program-term-create.component-BwiUbPa2.mjs.map → cloud-ide-academics-class-program-term-create.component--_32xUHz.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-cloud-ide-academics-dePLGTa3.mjs → cloud-ide-academics-cloud-ide-academics-COFzfbQg.mjs} +254 -128
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-COFzfbQg.mjs.map +1 -0
- package/fesm2022/{cloud-ide-academics-program-class-create.component-D0FzkdlS.mjs → cloud-ide-academics-program-class-create.component-DZGdqzE7.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-program-class-create.component-D0FzkdlS.mjs.map → cloud-ide-academics-program-class-create.component-DZGdqzE7.mjs.map} +1 -1
- package/fesm2022/{cloud-ide-academics-program-class-list.component-gBXC0GN7.mjs → cloud-ide-academics-program-class-list.component-DPUjW-UV.mjs} +2 -2
- package/fesm2022/{cloud-ide-academics-program-class-list.component-gBXC0GN7.mjs.map → cloud-ide-academics-program-class-list.component-DPUjW-UV.mjs.map} +1 -1
- package/fesm2022/cloud-ide-academics.mjs +1 -1
- package/index.d.ts +25 -1
- package/package.json +1 -1
- package/fesm2022/cloud-ide-academics-cloud-ide-academics-dePLGTa3.mjs.map +0 -1
|
@@ -11,7 +11,7 @@ import { of, forkJoin } from 'rxjs';
|
|
|
11
11
|
import { switchMap, catchError, map } from 'rxjs/operators';
|
|
12
12
|
import { CideInputComponent, CideTextareaComponent, CideEleButtonComponent, CideEleTabComponent, CideIconComponent, CideSelectComponent, CideFormFieldErrorComponent, ConfirmationService, NotificationService, CideEleDataGridComponent, CideEleDropdownComponent } from 'cloud-ide-element';
|
|
13
13
|
import { HttpClient } from '@angular/common/http';
|
|
14
|
-
import { generateStringFromObject, cidePath, hostManagerRoutesUrl, academicsRoutesUrl, generateObjectFromString } from 'cloud-ide-lms-model';
|
|
14
|
+
import { generateStringFromObject, cidePath, hostManagerRoutesUrl, academicsRoutesUrl, generateObjectFromString, AcaClassPrgBranchListPayload } from 'cloud-ide-lms-model';
|
|
15
15
|
import { ENTITY_SERVICE_TOKEN, CideCoreGeneralMasterService } from 'cloud-ide-shared';
|
|
16
16
|
import { AppStateHelperService, CideLytSharedWrapperComponent } from 'cloud-ide-layout';
|
|
17
17
|
|
|
@@ -59,7 +59,7 @@ const academicsRoutes = [
|
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
path: 'program-class-management',
|
|
62
|
-
loadComponent: () => import('./cloud-ide-academics-program-class-list.component-
|
|
62
|
+
loadComponent: () => import('./cloud-ide-academics-program-class-list.component-DPUjW-UV.mjs').then(c => c.ProgramClassListComponent),
|
|
63
63
|
title: 'Program Class Management',
|
|
64
64
|
canActivate: [authGuard],
|
|
65
65
|
data: {
|
|
@@ -69,7 +69,7 @@ const academicsRoutes = [
|
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
path: 'program-class-management/create',
|
|
72
|
-
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-
|
|
72
|
+
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-DZGdqzE7.mjs').then(c => c.ProgramClassCreateComponent),
|
|
73
73
|
title: 'Create Program Class',
|
|
74
74
|
canActivate: [authGuard],
|
|
75
75
|
data: {
|
|
@@ -79,7 +79,7 @@ const academicsRoutes = [
|
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
path: 'program-class-management/edit/:query',
|
|
82
|
-
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-
|
|
82
|
+
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-DZGdqzE7.mjs').then(c => c.ProgramClassCreateComponent),
|
|
83
83
|
title: 'Edit Program Class',
|
|
84
84
|
canActivate: [authGuard],
|
|
85
85
|
data: {
|
|
@@ -89,7 +89,7 @@ const academicsRoutes = [
|
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
path: 'program-class-management/view/:query',
|
|
92
|
-
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-
|
|
92
|
+
loadComponent: () => import('./cloud-ide-academics-program-class-create.component-DZGdqzE7.mjs').then(c => c.ProgramClassCreateComponent),
|
|
93
93
|
title: 'View Program Class',
|
|
94
94
|
canActivate: [authGuard],
|
|
95
95
|
data: {
|
|
@@ -99,7 +99,7 @@ const academicsRoutes = [
|
|
|
99
99
|
},
|
|
100
100
|
{
|
|
101
101
|
path: 'program-term-management/create',
|
|
102
|
-
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component
|
|
102
|
+
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component--_32xUHz.mjs').then(c => c.ClassProgramTermCreateComponent),
|
|
103
103
|
title: 'Create Class Program Term',
|
|
104
104
|
canActivate: [authGuard],
|
|
105
105
|
data: {
|
|
@@ -109,7 +109,7 @@ const academicsRoutes = [
|
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
111
|
path: 'program-term-management/edit/:query',
|
|
112
|
-
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component
|
|
112
|
+
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component--_32xUHz.mjs').then(c => c.ClassProgramTermCreateComponent),
|
|
113
113
|
title: 'Edit Class Program Term',
|
|
114
114
|
canActivate: [authGuard],
|
|
115
115
|
data: {
|
|
@@ -119,7 +119,7 @@ const academicsRoutes = [
|
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
path: 'program-term-management/view/:query',
|
|
122
|
-
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component
|
|
122
|
+
loadComponent: () => import('./cloud-ide-academics-class-program-term-create.component--_32xUHz.mjs').then(c => c.ClassProgramTermCreateComponent),
|
|
123
123
|
title: 'View Class Program Term',
|
|
124
124
|
canActivate: [authGuard],
|
|
125
125
|
data: {
|
|
@@ -127,6 +127,16 @@ const academicsRoutes = [
|
|
|
127
127
|
sypg_page_code: "class_program_term_list"
|
|
128
128
|
}
|
|
129
129
|
},
|
|
130
|
+
{
|
|
131
|
+
path: 'program-term-management',
|
|
132
|
+
loadComponent: () => import('./cloud-ide-academics-class-program-term-list.component-CaWAHMHN.mjs').then(c => c.ClassProgramTermListComponent),
|
|
133
|
+
title: 'Class Program Term Management',
|
|
134
|
+
canActivate: [authGuard],
|
|
135
|
+
data: {
|
|
136
|
+
reuseTab: true,
|
|
137
|
+
sypg_page_code: "class_program_term_list"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
130
140
|
{
|
|
131
141
|
path: 'program-term-management/:query',
|
|
132
142
|
loadComponent: () => import('./cloud-ide-academics-class-program-term-list.component-CaWAHMHN.mjs').then(c => c.ClassProgramTermListComponent),
|
|
@@ -1786,6 +1796,94 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
1786
1796
|
}]
|
|
1787
1797
|
}] });
|
|
1788
1798
|
|
|
1799
|
+
class CideLytProgramClassService {
|
|
1800
|
+
http = inject(HttpClient);
|
|
1801
|
+
/**
|
|
1802
|
+
* Get list of program classes
|
|
1803
|
+
* @param payload - Query parameters for filtering/pagination
|
|
1804
|
+
* @returns Observable of program class list response
|
|
1805
|
+
*/
|
|
1806
|
+
getProgramClassList(payload) {
|
|
1807
|
+
console.log("Program Class List Payload:", payload);
|
|
1808
|
+
const query = generateStringFromObject(payload);
|
|
1809
|
+
const url = cidePath.join([
|
|
1810
|
+
hostManagerRoutesUrl.cideSuiteHost,
|
|
1811
|
+
academicsRoutesUrl.module,
|
|
1812
|
+
academicsRoutesUrl.classProgramMaster,
|
|
1813
|
+
query
|
|
1814
|
+
]);
|
|
1815
|
+
return this.http.get(url);
|
|
1816
|
+
}
|
|
1817
|
+
/**
|
|
1818
|
+
* Get program class by ID
|
|
1819
|
+
* @param payload - Program class ID payload
|
|
1820
|
+
* @returns Observable of program class data
|
|
1821
|
+
*/
|
|
1822
|
+
getProgramClassById(payload) {
|
|
1823
|
+
const query = generateStringFromObject(payload);
|
|
1824
|
+
const url = cidePath.join([
|
|
1825
|
+
hostManagerRoutesUrl.cideSuiteHost,
|
|
1826
|
+
academicsRoutesUrl.module,
|
|
1827
|
+
academicsRoutesUrl.classProgramMaster,
|
|
1828
|
+
'byId',
|
|
1829
|
+
query
|
|
1830
|
+
]);
|
|
1831
|
+
return this.http.get(url);
|
|
1832
|
+
}
|
|
1833
|
+
/**
|
|
1834
|
+
* Create or update program class
|
|
1835
|
+
* @param data - Program class data to save
|
|
1836
|
+
* @returns Observable of the save response
|
|
1837
|
+
*/
|
|
1838
|
+
saveProgramClass(data) {
|
|
1839
|
+
const url = cidePath.join([
|
|
1840
|
+
hostManagerRoutesUrl.cideSuiteHost,
|
|
1841
|
+
academicsRoutesUrl.module,
|
|
1842
|
+
academicsRoutesUrl.classProgramMaster
|
|
1843
|
+
]);
|
|
1844
|
+
return this.http.post(url, data);
|
|
1845
|
+
}
|
|
1846
|
+
/**
|
|
1847
|
+
* Delete program class
|
|
1848
|
+
* @param payload - Program class delete payload
|
|
1849
|
+
* @returns Observable of the delete response
|
|
1850
|
+
*/
|
|
1851
|
+
deleteProgramClass(payload) {
|
|
1852
|
+
const query = generateStringFromObject(payload);
|
|
1853
|
+
const url = cidePath.join([
|
|
1854
|
+
hostManagerRoutesUrl.cideSuiteHost,
|
|
1855
|
+
academicsRoutesUrl.module,
|
|
1856
|
+
academicsRoutesUrl.classProgramMaster,
|
|
1857
|
+
query
|
|
1858
|
+
]);
|
|
1859
|
+
return this.http.delete(url);
|
|
1860
|
+
}
|
|
1861
|
+
/**
|
|
1862
|
+
* Toggle program class status (active/inactive)
|
|
1863
|
+
* @param payload - Program class toggle status payload
|
|
1864
|
+
* @returns Observable of the toggle status response
|
|
1865
|
+
*/
|
|
1866
|
+
toggleProgramClassStatus(payload) {
|
|
1867
|
+
const query = generateStringFromObject(payload);
|
|
1868
|
+
const url = cidePath.join([
|
|
1869
|
+
hostManagerRoutesUrl.cideSuiteHost,
|
|
1870
|
+
academicsRoutesUrl.module,
|
|
1871
|
+
academicsRoutesUrl.classProgramMaster,
|
|
1872
|
+
'toggleStatus',
|
|
1873
|
+
query
|
|
1874
|
+
]);
|
|
1875
|
+
return this.http.put(url, {});
|
|
1876
|
+
}
|
|
1877
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytProgramClassService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1878
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytProgramClassService, providedIn: 'root' });
|
|
1879
|
+
}
|
|
1880
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytProgramClassService, decorators: [{
|
|
1881
|
+
type: Injectable,
|
|
1882
|
+
args: [{
|
|
1883
|
+
providedIn: 'root'
|
|
1884
|
+
}]
|
|
1885
|
+
}] });
|
|
1886
|
+
|
|
1789
1887
|
class CideLytClassProgramBranchListComponent {
|
|
1790
1888
|
// Dependency injection
|
|
1791
1889
|
destroyRef = inject(DestroyRef);
|
|
@@ -1795,12 +1893,15 @@ class CideLytClassProgramBranchListComponent {
|
|
|
1795
1893
|
notificationService = inject(NotificationService);
|
|
1796
1894
|
confirmationService = inject(ConfirmationService);
|
|
1797
1895
|
classProgramBranchService = inject(CideLytClassProgramBranchService);
|
|
1896
|
+
programClassService = inject(CideLytProgramClassService);
|
|
1798
1897
|
// State management
|
|
1799
1898
|
loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
1800
1899
|
error = signal(null, ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
1801
1900
|
branches = signal([], ...(ngDevMode ? [{ debugName: "branches" }] : []));
|
|
1802
1901
|
totalCount = signal(0, ...(ngDevMode ? [{ debugName: "totalCount" }] : []));
|
|
1803
1902
|
programId = signal(null, ...(ngDevMode ? [{ debugName: "programId" }] : []));
|
|
1903
|
+
programClasses = signal([], ...(ngDevMode ? [{ debugName: "programClasses" }] : []));
|
|
1904
|
+
selectedProgramClassId = signal(null, ...(ngDevMode ? [{ debugName: "selectedProgramClassId" }] : []));
|
|
1804
1905
|
// Signal for breadcrumb data that will be passed to shared wrapper
|
|
1805
1906
|
breadcrumbData = signal([], ...(ngDevMode ? [{ debugName: "breadcrumbData" }] : []));
|
|
1806
1907
|
// Template renderers
|
|
@@ -1910,17 +2011,16 @@ class CideLytClassProgramBranchListComponent {
|
|
|
1910
2011
|
},
|
|
1911
2012
|
scroll: {
|
|
1912
2013
|
enabled: true,
|
|
1913
|
-
maxHeight: '600px',
|
|
1914
|
-
minHeight: '400px',
|
|
1915
2014
|
stickyHeader: true,
|
|
1916
2015
|
virtualScroll: false,
|
|
1917
2016
|
rowHeight: 50
|
|
1918
2017
|
},
|
|
2018
|
+
fullHeight: true,
|
|
1919
2019
|
responsive: true,
|
|
1920
2020
|
striped: true,
|
|
1921
2021
|
bordered: true,
|
|
1922
2022
|
compact: false,
|
|
1923
|
-
tableClass: 'tw-table-fixed tw-w-full
|
|
2023
|
+
tableClass: 'tw-table-fixed tw-w-full',
|
|
1924
2024
|
dragDrop: {
|
|
1925
2025
|
enabled: true
|
|
1926
2026
|
},
|
|
@@ -1946,6 +2046,7 @@ class CideLytClassProgramBranchListComponent {
|
|
|
1946
2046
|
ngOnInit() {
|
|
1947
2047
|
console.log('🏢 Class Program Branch List Component initialized');
|
|
1948
2048
|
this.initializeBreadcrumbData();
|
|
2049
|
+
this.loadProgramClasses();
|
|
1949
2050
|
this.checkRouteParams();
|
|
1950
2051
|
// Load branches will be called when programId is set in checkRouteParams
|
|
1951
2052
|
}
|
|
@@ -1966,6 +2067,48 @@ class CideLytClassProgramBranchListComponent {
|
|
|
1966
2067
|
}
|
|
1967
2068
|
]);
|
|
1968
2069
|
}
|
|
2070
|
+
/**
|
|
2071
|
+
* Load program classes for dropdown
|
|
2072
|
+
*/
|
|
2073
|
+
loadProgramClasses() {
|
|
2074
|
+
const payload = {
|
|
2075
|
+
pagination: false,
|
|
2076
|
+
acacpm_isactive: true
|
|
2077
|
+
};
|
|
2078
|
+
this.programClassService.getProgramClassList(payload)
|
|
2079
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
2080
|
+
.subscribe({
|
|
2081
|
+
next: (response) => {
|
|
2082
|
+
console.log('✅ Program classes loaded:', response);
|
|
2083
|
+
if (response?.success && response.data) {
|
|
2084
|
+
this.programClasses.set(response.data);
|
|
2085
|
+
}
|
|
2086
|
+
else {
|
|
2087
|
+
console.warn('⚠️ No program class data received');
|
|
2088
|
+
this.programClasses.set([]);
|
|
2089
|
+
}
|
|
2090
|
+
},
|
|
2091
|
+
error: (error) => {
|
|
2092
|
+
console.error('❌ Error loading program classes:', error);
|
|
2093
|
+
this.programClasses.set([]);
|
|
2094
|
+
}
|
|
2095
|
+
});
|
|
2096
|
+
}
|
|
2097
|
+
/**
|
|
2098
|
+
* Handle Program Class selection change
|
|
2099
|
+
*/
|
|
2100
|
+
onProgramClassChange(programClassId) {
|
|
2101
|
+
const programId = typeof programClassId === 'string' ? programClassId : (programClassId ? String(programClassId) : null);
|
|
2102
|
+
console.log('🔄 Program Class changed:', programId);
|
|
2103
|
+
if (!programId) {
|
|
2104
|
+
// Class program is required, show error if cleared
|
|
2105
|
+
this.notificationService.warning('Class Program is required to view branches');
|
|
2106
|
+
return;
|
|
2107
|
+
}
|
|
2108
|
+
this.selectedProgramClassId.set(programId);
|
|
2109
|
+
this.programId.set(programId);
|
|
2110
|
+
this.loadBranches();
|
|
2111
|
+
}
|
|
1969
2112
|
/**
|
|
1970
2113
|
* Check route parameters for program ID
|
|
1971
2114
|
*/
|
|
@@ -1981,6 +2124,7 @@ class CideLytClassProgramBranchListComponent {
|
|
|
1981
2124
|
const programId = queryData?.programId;
|
|
1982
2125
|
if (programId) {
|
|
1983
2126
|
this.programId.set(programId);
|
|
2127
|
+
this.selectedProgramClassId.set(programId);
|
|
1984
2128
|
console.log('🏢 Program Class ID extracted from route:', programId);
|
|
1985
2129
|
console.log('🏢 Will filter branches by acabrn_class_program_id_acacpm:', programId);
|
|
1986
2130
|
this.loadBranches();
|
|
@@ -2004,15 +2148,19 @@ class CideLytClassProgramBranchListComponent {
|
|
|
2004
2148
|
const programId = queryParams['programId'];
|
|
2005
2149
|
if (programId) {
|
|
2006
2150
|
this.programId.set(programId);
|
|
2151
|
+
this.selectedProgramClassId.set(programId);
|
|
2007
2152
|
console.log('🏢 Program Class ID from query params:', programId);
|
|
2008
2153
|
console.log('🏢 Will filter branches by acabrn_class_program_id_acacpm:', programId);
|
|
2009
2154
|
this.loadBranches();
|
|
2010
2155
|
}
|
|
2011
2156
|
else {
|
|
2012
|
-
//
|
|
2013
|
-
console.log('🏢 No program class ID provided
|
|
2014
|
-
this.programId.set(null);
|
|
2015
|
-
this.
|
|
2157
|
+
// No program ID provided - class program is required
|
|
2158
|
+
console.log('🏢 No program class ID provided - class program is required');
|
|
2159
|
+
this.programId.set(null);
|
|
2160
|
+
this.selectedProgramClassId.set(null);
|
|
2161
|
+
// Don't load branches if no program ID - wait for user selection
|
|
2162
|
+
this.branches.set([]);
|
|
2163
|
+
this.updateGridData();
|
|
2016
2164
|
}
|
|
2017
2165
|
}
|
|
2018
2166
|
/**
|
|
@@ -2021,13 +2169,22 @@ class CideLytClassProgramBranchListComponent {
|
|
|
2021
2169
|
loadBranches() {
|
|
2022
2170
|
this.loading.set(true);
|
|
2023
2171
|
this.error.set(null);
|
|
2024
|
-
// Build payload with program ID
|
|
2025
|
-
const
|
|
2172
|
+
// Build payload with program ID - required field
|
|
2173
|
+
const currentProgramId = this.programId();
|
|
2174
|
+
// Class program is required, so we must have a program ID
|
|
2175
|
+
if (!currentProgramId) {
|
|
2176
|
+
this.loading.set(false);
|
|
2177
|
+
this.error.set('Class Program is required');
|
|
2178
|
+
this.branches.set([]);
|
|
2179
|
+
this.updateGridData();
|
|
2180
|
+
return;
|
|
2181
|
+
}
|
|
2182
|
+
const payload = new AcaClassPrgBranchListPayload({
|
|
2183
|
+
acabrn_class_program_id_acacpm: currentProgramId,
|
|
2026
2184
|
pagination: true,
|
|
2027
2185
|
pageIndex: 0,
|
|
2028
|
-
pageSize: 10
|
|
2029
|
-
|
|
2030
|
-
};
|
|
2186
|
+
pageSize: 10
|
|
2187
|
+
});
|
|
2031
2188
|
console.log('🏢 API Payload:', payload);
|
|
2032
2189
|
this.classProgramBranchService.getClassProgramBranchList(payload)
|
|
2033
2190
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
@@ -2132,17 +2289,24 @@ class CideLytClassProgramBranchListComponent {
|
|
|
2132
2289
|
/**
|
|
2133
2290
|
* Navigate to create branch
|
|
2134
2291
|
*/
|
|
2135
|
-
onCreateBranch() {
|
|
2292
|
+
onCreateBranch(event) {
|
|
2293
|
+
console.log('🏢 Create Branch button clicked', event);
|
|
2136
2294
|
const currentProgramId = this.programId();
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
this.
|
|
2141
|
-
|
|
2142
|
-
else {
|
|
2143
|
-
// No program ID, navigate to create without parameters
|
|
2144
|
-
this.router.navigate(['/control-panel/program_specialization/create']);
|
|
2295
|
+
console.log('🏢 Current Program ID:', currentProgramId);
|
|
2296
|
+
if (!currentProgramId) {
|
|
2297
|
+
// Class program is required
|
|
2298
|
+
this.notificationService.warning('Please select a Class Program first before creating a branch');
|
|
2299
|
+
return;
|
|
2145
2300
|
}
|
|
2301
|
+
// Use generateStringFromObject to pass programId as route parameter
|
|
2302
|
+
const queryParams = generateStringFromObject({ programId: currentProgramId });
|
|
2303
|
+
console.log('🏢 Navigating to create with programId:', queryParams);
|
|
2304
|
+
this.router.navigate(['/control-panel/program_specialization/create', queryParams]).then((success) => {
|
|
2305
|
+
console.log('✅ Navigation successful:', success);
|
|
2306
|
+
}, (error) => {
|
|
2307
|
+
console.error('❌ Navigation failed:', error);
|
|
2308
|
+
this.notificationService.error('Failed to navigate to create branch page');
|
|
2309
|
+
});
|
|
2146
2310
|
}
|
|
2147
2311
|
/**
|
|
2148
2312
|
* Navigate to view branch
|
|
@@ -2359,18 +2523,20 @@ class CideLytClassProgramBranchListComponent {
|
|
|
2359
2523
|
});
|
|
2360
2524
|
}
|
|
2361
2525
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytClassProgramBranchListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2362
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", type: CideLytClassProgramBranchListComponent, isStandalone: true, selector: "cide-academics-class-program-branch-list", viewQueries: [{ propertyName: "dragHandleRendererTemplate", first: true, predicate: ["dragHandleRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "classProgramRendererTemplate", first: true, predicate: ["classProgramRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "actionsDropdownRendererTemplate", first: true, predicate: ["actionsDropdownRendererTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Class Program Branch List Component -->\
|
|
2526
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", type: CideLytClassProgramBranchListComponent, isStandalone: true, selector: "cide-academics-class-program-branch-list", viewQueries: [{ propertyName: "dragHandleRendererTemplate", first: true, predicate: ["dragHandleRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "classProgramRendererTemplate", first: true, predicate: ["classProgramRendererTemplate"], descendants: true, isSignal: true }, { propertyName: "actionsDropdownRendererTemplate", first: true, predicate: ["actionsDropdownRendererTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Class Program Branch List Component -->\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'class_program_branch' }\"\n [breadcrumb_data]=\"breadcrumbData()\">\n \n <!-- Action Buttons in Breadcrumb Area -->\n <div breadcrumb-actions>\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"sm\" leftIcon=\"add\" (btnClick)=\"onCreateBranch($event)\">\n Create Branch\n </button>\n </div>\n\n <!-- Main Content -->\n <div class=\"tw-flex tw-flex-col tw-w-full tw-h-full\">\n <!-- Filter Section -->\n <div class=\"tw-flex-shrink-0 tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-items-center tw-gap-4\">\n <div class=\"tw-w-64\">\n <label class=\"tw-block tw-text-sm tw-font-medium tw-text-gray-700 tw-mb-2\">Class Program *</label>\n <cide-ele-select\n [options]=\"programClasses()\"\n [ngModel]=\"selectedProgramClassId() || ''\"\n (ngModelChange)=\"onProgramClassChange($event)\"\n placeholder=\"Select Class Program\"\n valueKey=\"_id\"\n labelKey=\"acacpm_alise_title\"\n [required]=\"true\">\n </cide-ele-select>\n </div>\n </div>\n </div>\n\n <!-- Data Grid Section -->\n <div class=\"tw-flex-1 tw-min-h-0 tw-p-0\">\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</cide-lyt-shared-wrapper>\n\n<!-- Template Renderers -->\n<ng-template #dragHandleRendererTemplate let-row=\"row\">\n <div class=\"tw-flex tw-justify-center tw-cursor-move drag-handle\" title=\"Drag to reorder\">\n <cide-ele-icon name=\"drag_indicator\" class=\"tw-w-4 tw-h-4 tw-text-gray-400 hover:tw-text-gray-600\"></cide-ele-icon>\n </div>\n</ng-template>\n\n\n<ng-template #classProgramRendererTemplate let-row=\"row\">\n <div class=\"tw-text-sm tw-text-gray-900\">\n {{ row.acabrn_class_program_id_acacpm?.acacpm_alise_title || 'N/A' }}\n </div>\n</ng-template>\n\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\">\n <div class=\"tw-relative tw-inline-block\">\n <cide-ele-dropdown \n [items]=\"getBranchActionDropdownItems(row)\" \n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n </div>\n</ng-template>\n\n", styles: [".drag-handle{cursor:move}.drag-handle:hover{background-color:#0000000d;border-radius:4px}.tw-table tbody tr{cursor:pointer}.tw-table tbody tr:hover{background-color:#00000005}.tw-table tbody tr.selected{background-color:#3b82f61a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CideEleDataGridComponent, selector: "cide-ele-data-grid", inputs: ["config", "templateRenderers", "customFormatters", "actionHandlers", "serverSidePagination", "totalServerItems", "currentServerPage", "currentServerPageSize", "dragDropEnabled"], outputs: ["gridEvent"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideEleDropdownComponent, selector: "cide-ele-dropdown", inputs: ["items", "config", "triggerTemplate", "menuTemplate"], outputs: ["itemClick", "dropdownToggle"] }, { kind: "component", type: CideSelectComponent, selector: "cide-ele-select", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput", "options", "multiple", "searchable", "showSearchInput", "loading", "valueKey", "labelKey"], outputs: ["ngModelChange", "change", "searchChange"] }, { kind: "component", type: CideLytSharedWrapperComponent, selector: "cide-lyt-shared-wrapper", inputs: ["shared_wrapper_setup_param", "breadcrumb_data"] }] });
|
|
2363
2527
|
}
|
|
2364
2528
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytClassProgramBranchListComponent, decorators: [{
|
|
2365
2529
|
type: Component,
|
|
2366
2530
|
args: [{ selector: 'cide-academics-class-program-branch-list', standalone: true, imports: [
|
|
2367
2531
|
CommonModule,
|
|
2532
|
+
FormsModule,
|
|
2368
2533
|
CideEleDataGridComponent,
|
|
2369
2534
|
CideIconComponent,
|
|
2370
2535
|
CideEleButtonComponent,
|
|
2371
2536
|
CideEleDropdownComponent,
|
|
2537
|
+
CideSelectComponent,
|
|
2372
2538
|
CideLytSharedWrapperComponent
|
|
2373
|
-
], template: "<!-- Class Program Branch List Component -->\
|
|
2539
|
+
], template: "<!-- Class Program Branch List Component -->\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'class_program_branch' }\"\n [breadcrumb_data]=\"breadcrumbData()\">\n \n <!-- Action Buttons in Breadcrumb Area -->\n <div breadcrumb-actions>\n <button cideEleButton type=\"button\" variant=\"primary\" size=\"sm\" leftIcon=\"add\" (btnClick)=\"onCreateBranch($event)\">\n Create Branch\n </button>\n </div>\n\n <!-- Main Content -->\n <div class=\"tw-flex tw-flex-col tw-w-full tw-h-full\">\n <!-- Filter Section -->\n <div class=\"tw-flex-shrink-0 tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-items-center tw-gap-4\">\n <div class=\"tw-w-64\">\n <label class=\"tw-block tw-text-sm tw-font-medium tw-text-gray-700 tw-mb-2\">Class Program *</label>\n <cide-ele-select\n [options]=\"programClasses()\"\n [ngModel]=\"selectedProgramClassId() || ''\"\n (ngModelChange)=\"onProgramClassChange($event)\"\n placeholder=\"Select Class Program\"\n valueKey=\"_id\"\n labelKey=\"acacpm_alise_title\"\n [required]=\"true\">\n </cide-ele-select>\n </div>\n </div>\n </div>\n\n <!-- Data Grid Section -->\n <div class=\"tw-flex-1 tw-min-h-0 tw-p-0\">\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</cide-lyt-shared-wrapper>\n\n<!-- Template Renderers -->\n<ng-template #dragHandleRendererTemplate let-row=\"row\">\n <div class=\"tw-flex tw-justify-center tw-cursor-move drag-handle\" title=\"Drag to reorder\">\n <cide-ele-icon name=\"drag_indicator\" class=\"tw-w-4 tw-h-4 tw-text-gray-400 hover:tw-text-gray-600\"></cide-ele-icon>\n </div>\n</ng-template>\n\n\n<ng-template #classProgramRendererTemplate let-row=\"row\">\n <div class=\"tw-text-sm tw-text-gray-900\">\n {{ row.acabrn_class_program_id_acacpm?.acacpm_alise_title || 'N/A' }}\n </div>\n</ng-template>\n\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\">\n <div class=\"tw-relative tw-inline-block\">\n <cide-ele-dropdown \n [items]=\"getBranchActionDropdownItems(row)\" \n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n </div>\n</ng-template>\n\n", styles: [".drag-handle{cursor:move}.drag-handle:hover{background-color:#0000000d;border-radius:4px}.tw-table tbody tr{cursor:pointer}.tw-table tbody tr:hover{background-color:#00000005}.tw-table tbody tr.selected{background-color:#3b82f61a}\n"] }]
|
|
2374
2540
|
}] });
|
|
2375
2541
|
|
|
2376
2542
|
var classProgramBranchList_component = /*#__PURE__*/Object.freeze({
|
|
@@ -2378,94 +2544,6 @@ var classProgramBranchList_component = /*#__PURE__*/Object.freeze({
|
|
|
2378
2544
|
CideLytClassProgramBranchListComponent: CideLytClassProgramBranchListComponent
|
|
2379
2545
|
});
|
|
2380
2546
|
|
|
2381
|
-
class CideLytProgramClassService {
|
|
2382
|
-
http = inject(HttpClient);
|
|
2383
|
-
/**
|
|
2384
|
-
* Get list of program classes
|
|
2385
|
-
* @param payload - Query parameters for filtering/pagination
|
|
2386
|
-
* @returns Observable of program class list response
|
|
2387
|
-
*/
|
|
2388
|
-
getProgramClassList(payload) {
|
|
2389
|
-
console.log("Program Class List Payload:", payload);
|
|
2390
|
-
const query = generateStringFromObject(payload);
|
|
2391
|
-
const url = cidePath.join([
|
|
2392
|
-
hostManagerRoutesUrl.cideSuiteHost,
|
|
2393
|
-
academicsRoutesUrl.module,
|
|
2394
|
-
academicsRoutesUrl.classProgramMaster,
|
|
2395
|
-
query
|
|
2396
|
-
]);
|
|
2397
|
-
return this.http.get(url);
|
|
2398
|
-
}
|
|
2399
|
-
/**
|
|
2400
|
-
* Get program class by ID
|
|
2401
|
-
* @param payload - Program class ID payload
|
|
2402
|
-
* @returns Observable of program class data
|
|
2403
|
-
*/
|
|
2404
|
-
getProgramClassById(payload) {
|
|
2405
|
-
const query = generateStringFromObject(payload);
|
|
2406
|
-
const url = cidePath.join([
|
|
2407
|
-
hostManagerRoutesUrl.cideSuiteHost,
|
|
2408
|
-
academicsRoutesUrl.module,
|
|
2409
|
-
academicsRoutesUrl.classProgramMaster,
|
|
2410
|
-
'byId',
|
|
2411
|
-
query
|
|
2412
|
-
]);
|
|
2413
|
-
return this.http.get(url);
|
|
2414
|
-
}
|
|
2415
|
-
/**
|
|
2416
|
-
* Create or update program class
|
|
2417
|
-
* @param data - Program class data to save
|
|
2418
|
-
* @returns Observable of the save response
|
|
2419
|
-
*/
|
|
2420
|
-
saveProgramClass(data) {
|
|
2421
|
-
const url = cidePath.join([
|
|
2422
|
-
hostManagerRoutesUrl.cideSuiteHost,
|
|
2423
|
-
academicsRoutesUrl.module,
|
|
2424
|
-
academicsRoutesUrl.classProgramMaster
|
|
2425
|
-
]);
|
|
2426
|
-
return this.http.post(url, data);
|
|
2427
|
-
}
|
|
2428
|
-
/**
|
|
2429
|
-
* Delete program class
|
|
2430
|
-
* @param payload - Program class delete payload
|
|
2431
|
-
* @returns Observable of the delete response
|
|
2432
|
-
*/
|
|
2433
|
-
deleteProgramClass(payload) {
|
|
2434
|
-
const query = generateStringFromObject(payload);
|
|
2435
|
-
const url = cidePath.join([
|
|
2436
|
-
hostManagerRoutesUrl.cideSuiteHost,
|
|
2437
|
-
academicsRoutesUrl.module,
|
|
2438
|
-
academicsRoutesUrl.classProgramMaster,
|
|
2439
|
-
query
|
|
2440
|
-
]);
|
|
2441
|
-
return this.http.delete(url);
|
|
2442
|
-
}
|
|
2443
|
-
/**
|
|
2444
|
-
* Toggle program class status (active/inactive)
|
|
2445
|
-
* @param payload - Program class toggle status payload
|
|
2446
|
-
* @returns Observable of the toggle status response
|
|
2447
|
-
*/
|
|
2448
|
-
toggleProgramClassStatus(payload) {
|
|
2449
|
-
const query = generateStringFromObject(payload);
|
|
2450
|
-
const url = cidePath.join([
|
|
2451
|
-
hostManagerRoutesUrl.cideSuiteHost,
|
|
2452
|
-
academicsRoutesUrl.module,
|
|
2453
|
-
academicsRoutesUrl.classProgramMaster,
|
|
2454
|
-
'toggleStatus',
|
|
2455
|
-
query
|
|
2456
|
-
]);
|
|
2457
|
-
return this.http.put(url, {});
|
|
2458
|
-
}
|
|
2459
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytProgramClassService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2460
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytProgramClassService, providedIn: 'root' });
|
|
2461
|
-
}
|
|
2462
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytProgramClassService, decorators: [{
|
|
2463
|
-
type: Injectable,
|
|
2464
|
-
args: [{
|
|
2465
|
-
providedIn: 'root'
|
|
2466
|
-
}]
|
|
2467
|
-
}] });
|
|
2468
|
-
|
|
2469
2547
|
class CideLytClassProgramBranchFormComponent {
|
|
2470
2548
|
// Dependency injection
|
|
2471
2549
|
destroyRef = inject(DestroyRef);
|
|
@@ -2491,6 +2569,8 @@ class CideLytClassProgramBranchFormComponent {
|
|
|
2491
2569
|
branchMasters = signal([], ...(ngDevMode ? [{ debugName: "branchMasters" }] : []));
|
|
2492
2570
|
// Signal for breadcrumb data that will be passed to shared wrapper
|
|
2493
2571
|
breadcrumbData = signal([], ...(ngDevMode ? [{ debugName: "breadcrumbData" }] : []));
|
|
2572
|
+
// Signal to control Program Class dropdown visibility
|
|
2573
|
+
showProgramClassDropdown = signal(true, ...(ngDevMode ? [{ debugName: "showProgramClassDropdown" }] : []));
|
|
2494
2574
|
// Flag to prevent auto-populate during data load
|
|
2495
2575
|
isLoadingData = false;
|
|
2496
2576
|
constructor() {
|
|
@@ -2522,6 +2602,27 @@ class CideLytClassProgramBranchFormComponent {
|
|
|
2522
2602
|
this.onBranchMasterChange(sygmsId);
|
|
2523
2603
|
}
|
|
2524
2604
|
});
|
|
2605
|
+
// Listen to Program Class field changes
|
|
2606
|
+
this.branchForm.get('acabrn_class_program_id_acacpm')?.valueChanges
|
|
2607
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
2608
|
+
.subscribe((programClassId) => {
|
|
2609
|
+
// Only trigger if not loading existing data and dropdown is visible
|
|
2610
|
+
if (programClassId && !this.isLoadingData && this.showProgramClassDropdown()) {
|
|
2611
|
+
this.onProgramClassChange(programClassId);
|
|
2612
|
+
}
|
|
2613
|
+
});
|
|
2614
|
+
}
|
|
2615
|
+
/**
|
|
2616
|
+
* Handle Program Class selection change
|
|
2617
|
+
* This can be used to filter or update dependent lists
|
|
2618
|
+
*/
|
|
2619
|
+
onProgramClassChange(programClassId) {
|
|
2620
|
+
if (!programClassId) {
|
|
2621
|
+
return;
|
|
2622
|
+
}
|
|
2623
|
+
console.log('🔄 Program Class changed:', programClassId);
|
|
2624
|
+
// Add any logic here to update dependent lists based on Program Class selection
|
|
2625
|
+
// For example, you could filter branch masters or load additional data
|
|
2525
2626
|
}
|
|
2526
2627
|
ngOnDestroy() {
|
|
2527
2628
|
console.log('🏢 Class Program Branch Form Component destroyed');
|
|
@@ -2541,19 +2642,29 @@ class CideLytClassProgramBranchFormComponent {
|
|
|
2541
2642
|
const queryParams = this.route.snapshot.queryParams;
|
|
2542
2643
|
const routeParams = this.route.snapshot.params;
|
|
2543
2644
|
// Check for program ID from route parameters or query parameters
|
|
2544
|
-
|
|
2545
|
-
|
|
2645
|
+
let programId = null;
|
|
2646
|
+
// Check route parameters for programId or acacpm_id (for create operations)
|
|
2546
2647
|
if (routeParams['query']) {
|
|
2547
2648
|
const params = generateObjectFromString(routeParams['query']);
|
|
2548
2649
|
console.log('🏢 Params:generateObjectFromString', params);
|
|
2549
|
-
programId = params?.programId;
|
|
2650
|
+
programId = params?.programId || params?.acacpm_id || null;
|
|
2651
|
+
}
|
|
2652
|
+
// Also check queryParams for programId or acacpm_id
|
|
2653
|
+
if (!programId) {
|
|
2654
|
+
programId = queryParams['programId'] || queryParams['acacpm_id'] || null;
|
|
2550
2655
|
}
|
|
2551
2656
|
if (programId) {
|
|
2552
|
-
console.log('🏢 Program ID from
|
|
2553
|
-
//
|
|
2657
|
+
console.log('🏢 Program Class Management ID from URL:', programId);
|
|
2658
|
+
// Hide the dropdown and set the value
|
|
2659
|
+
this.showProgramClassDropdown.set(false);
|
|
2554
2660
|
this.branchForm.patchValue({
|
|
2555
2661
|
acabrn_class_program_id_acacpm: programId
|
|
2556
2662
|
});
|
|
2663
|
+
// Keep the field enabled so it's included in form.value, but it will be hidden
|
|
2664
|
+
}
|
|
2665
|
+
else {
|
|
2666
|
+
// Show the dropdown if no ID from URL
|
|
2667
|
+
this.showProgramClassDropdown.set(true);
|
|
2557
2668
|
}
|
|
2558
2669
|
if (url.includes('/view/')) {
|
|
2559
2670
|
this.isViewMode.set(true);
|
|
@@ -2724,12 +2835,27 @@ class CideLytClassProgramBranchFormComponent {
|
|
|
2724
2835
|
next: (response) => {
|
|
2725
2836
|
if (response?.success && response.data) {
|
|
2726
2837
|
const branchData = response.data;
|
|
2838
|
+
// Check if program class ID is in URL - if so, hide dropdown
|
|
2839
|
+
const routeParams = this.route.snapshot.params;
|
|
2840
|
+
const queryParams = this.route.snapshot.queryParams;
|
|
2841
|
+
let programIdFromUrl = null;
|
|
2842
|
+
if (routeParams['query']) {
|
|
2843
|
+
const params = generateObjectFromString(routeParams['query']);
|
|
2844
|
+
programIdFromUrl = params?.programId || params?.acacpm_id || null;
|
|
2845
|
+
}
|
|
2846
|
+
if (!programIdFromUrl) {
|
|
2847
|
+
programIdFromUrl = queryParams['programId'] || queryParams['acacpm_id'] || null;
|
|
2848
|
+
}
|
|
2849
|
+
if (programIdFromUrl) {
|
|
2850
|
+
this.showProgramClassDropdown.set(false);
|
|
2851
|
+
// Keep the field enabled so it's included in form.value
|
|
2852
|
+
}
|
|
2727
2853
|
// Populate form with branch data
|
|
2728
2854
|
this.branchForm.patchValue({
|
|
2729
2855
|
acabrn_name: branchData.acabrn_name,
|
|
2730
2856
|
acabrn_code: branchData.acabrn_code,
|
|
2731
2857
|
acabrn_sequence: branchData.acabrn_sequence,
|
|
2732
|
-
acabrn_class_program_id_acacpm: branchData.acabrn_class_program_id_acacpm?._id,
|
|
2858
|
+
acabrn_class_program_id_acacpm: branchData.acabrn_class_program_id_acacpm?._id || branchData.acabrn_class_program_id_acacpm,
|
|
2733
2859
|
acabrn_branch_id_sygms: branchData.acabrn_branch_id_sygms?._id || branchData.acabrn_branch_id_sygms || '',
|
|
2734
2860
|
acabrn_isactive: (branchData).acabrn_isactive,
|
|
2735
2861
|
acabrn_islocked: branchData.acabrn_islocked
|
|
@@ -2930,7 +3056,7 @@ class CideLytClassProgramBranchFormComponent {
|
|
|
2930
3056
|
this.breadcrumbData.set(additionalItems);
|
|
2931
3057
|
}
|
|
2932
3058
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytClassProgramBranchFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2933
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: CideLytClassProgramBranchFormComponent, isStandalone: true, selector: "cide-academics-class-program-branch-form", ngImport: i0, template: "<!-- \
|
|
3059
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: CideLytClassProgramBranchFormComponent, isStandalone: true, selector: "cide-academics-class-program-branch-form", ngImport: i0, template: "<!-- \n CLASS PROGRAM BRANCH FORM COMPONENT\n \n Enterprise-Level Styling with Tailwind CSS\n Features: Responsive grids, proper typography, enhanced user experience\n-->\n\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'class_program_branch' }\"\n [breadcrumb_data]=\"breadcrumbData()\">\n <div class=\"tw-w-full tw-h-full\">\n <form class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\" [formGroup]=\"branchForm\"\n [class.tw-opacity-60]=\"loading()\" (ngSubmit)=\"onSubmit()\">\n\n <!-- Form Content -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mb-6 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon name=\"error\"\n class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n\n <!-- Basic Branch Information -->\n <div class=\"tw-space-y-6\">\n <!-- Class Program Selection -->\n @if (showProgramClassDropdown()) {\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-1 tw-gap-6\">\n <div class=\"tw-space-y-2\">\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Class Program *</label>\n <cide-ele-select formControlName=\"acabrn_class_program_id_acacpm\" placeholder=\"Select class program\"\n [disabled]=\"isViewMode()\" valueKey=\"_id\" labelKey=\"acacpm_alise_title\" [options]=\"programClasses()\">\n </cide-ele-select>\n <p class=\"tw-text-xs tw-text-gray-500 tw-mt-1\">\n <cide-ele-icon name=\"info\" class=\"tw-w-4 tw-h-4 tw-mr-1\"></cide-ele-icon>\n Sequence will be automatically assigned based on the order in the listing\n </p>\n </div>\n </div>\n }\n\n <!-- Standard Branch Name (SYGMS) -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-1 tw-gap-6\">\n <div class=\"tw-space-y-2\">\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Standard Branch Name</label>\n <cide-ele-select formControlName=\"acabrn_branch_id_sygms\" placeholder=\"Select standard branch name\"\n [disabled]=\"isViewMode()\" valueKey=\"_id\" labelKey=\"sygms_title\" [options]=\"branchMasters()\">\n </cide-ele-select>\n <p class=\"tw-text-xs tw-text-gray-500 tw-mt-1\">\n <cide-ele-icon name=\"info\" class=\"tw-w-4 tw-h-4 tw-mr-1\"></cide-ele-icon>\n Selecting a standard branch will auto-populate the branch name and code\n </p>\n </div>\n </div>\n\n <!-- Branch Name and Code -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <div>\n <cide-ele-input label=\"Branch Name *\" formControlName=\"acabrn_name\"\n placeholder=\"e.g., Computer Science Branch\" size=\"md\" [disabled]=\"isViewMode()\">\n </cide-ele-input>\n </div>\n\n <div>\n <cide-ele-input label=\"Branch Code *\" formControlName=\"acabrn_code\" placeholder=\"e.g., CS\" size=\"md\"\n leadingIcon=\"code\" [disabled]=\"isViewMode()\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Status and Lock Options -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <div\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 tw-cursor-pointer hover:tw-bg-gray-100 tw-transition-colors tw-duration-200\"\n [class.tw-cursor-not-allowed]=\"isViewMode()\" [class.tw-opacity-60]=\"isViewMode()\"\n (click)=\"onActiveCardClick()\">\n <cide-ele-input formControlName=\"acabrn_isactive\" type=\"checkbox\" size=\"md\" [disabled]=\"isViewMode()\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Active</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Enable/disable this branch</span>\n </div>\n </div>\n\n <div\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 tw-cursor-pointer hover:tw-bg-gray-100 tw-transition-colors tw-duration-200\"\n [class.tw-cursor-not-allowed]=\"isViewMode()\" [class.tw-opacity-60]=\"isViewMode()\"\n (click)=\"onLockedCardClick()\">\n <cide-ele-input formControlName=\"acabrn_islocked\" type=\"checkbox\" size=\"md\" [disabled]=\"isViewMode()\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Form Actions -->\n <div class=\"tw-table-row tw-h-0\">\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\">\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"resetForm()\" leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"onCancel()\" leftIcon=\"close\"\n [disabled]=\"loading()\">\n {{ isViewMode() ? 'Close' : 'Cancel' }}\n </button>\n\n @if (!isViewMode()) {\n <button cideEleButton type=\"submit\" variant=\"primary\" [disabled]=\"loading() || branchForm.invalid\"\n [loading]=\"loading()\" leftIcon=\"save\">\n {{ submitButtonText }}\n </button>\n }\n </div>\n </div>\n </div>\n </form>\n </div>\n</cide-lyt-shared-wrapper>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "size"], outputs: ["ngModelChange"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideSelectComponent, selector: "cide-ele-select", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput", "options", "multiple", "searchable", "showSearchInput", "loading", "valueKey", "labelKey"], outputs: ["ngModelChange", "change", "searchChange"] }, { kind: "component", type: CideLytSharedWrapperComponent, selector: "cide-lyt-shared-wrapper", inputs: ["shared_wrapper_setup_param", "breadcrumb_data"] }] });
|
|
2934
3060
|
}
|
|
2935
3061
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CideLytClassProgramBranchFormComponent, decorators: [{
|
|
2936
3062
|
type: Component,
|
|
@@ -2942,7 +3068,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImpor
|
|
|
2942
3068
|
CideIconComponent,
|
|
2943
3069
|
CideSelectComponent,
|
|
2944
3070
|
CideLytSharedWrapperComponent,
|
|
2945
|
-
], template: "<!-- \
|
|
3071
|
+
], template: "<!-- \n CLASS PROGRAM BRANCH FORM COMPONENT\n \n Enterprise-Level Styling with Tailwind CSS\n Features: Responsive grids, proper typography, enhanced user experience\n-->\n\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'class_program_branch' }\"\n [breadcrumb_data]=\"breadcrumbData()\">\n <div class=\"tw-w-full tw-h-full\">\n <form class=\"tw-w-full tw-table tw-h-full tw-bg-transparent\" [formGroup]=\"branchForm\"\n [class.tw-opacity-60]=\"loading()\" (ngSubmit)=\"onSubmit()\">\n\n <!-- Form Content -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-w-full tw-px-6 tw-py-6\">\n <div class=\"tw-transition-opacity tw-duration-300\" [class.tw-opacity-60]=\"loading()\">\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mb-6 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\n <div class=\"tw-flex tw-items-start\">\n <cide-ele-icon name=\"error\"\n class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\n <div class=\"tw-ml-3\">\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\n </div>\n </div>\n </div>\n }\n\n <!-- Basic Branch Information -->\n <div class=\"tw-space-y-6\">\n <!-- Class Program Selection -->\n @if (showProgramClassDropdown()) {\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-1 tw-gap-6\">\n <div class=\"tw-space-y-2\">\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Class Program *</label>\n <cide-ele-select formControlName=\"acabrn_class_program_id_acacpm\" placeholder=\"Select class program\"\n [disabled]=\"isViewMode()\" valueKey=\"_id\" labelKey=\"acacpm_alise_title\" [options]=\"programClasses()\">\n </cide-ele-select>\n <p class=\"tw-text-xs tw-text-gray-500 tw-mt-1\">\n <cide-ele-icon name=\"info\" class=\"tw-w-4 tw-h-4 tw-mr-1\"></cide-ele-icon>\n Sequence will be automatically assigned based on the order in the listing\n </p>\n </div>\n </div>\n }\n\n <!-- Standard Branch Name (SYGMS) -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-1 tw-gap-6\">\n <div class=\"tw-space-y-2\">\n <label class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Standard Branch Name</label>\n <cide-ele-select formControlName=\"acabrn_branch_id_sygms\" placeholder=\"Select standard branch name\"\n [disabled]=\"isViewMode()\" valueKey=\"_id\" labelKey=\"sygms_title\" [options]=\"branchMasters()\">\n </cide-ele-select>\n <p class=\"tw-text-xs tw-text-gray-500 tw-mt-1\">\n <cide-ele-icon name=\"info\" class=\"tw-w-4 tw-h-4 tw-mr-1\"></cide-ele-icon>\n Selecting a standard branch will auto-populate the branch name and code\n </p>\n </div>\n </div>\n\n <!-- Branch Name and Code -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <div>\n <cide-ele-input label=\"Branch Name *\" formControlName=\"acabrn_name\"\n placeholder=\"e.g., Computer Science Branch\" size=\"md\" [disabled]=\"isViewMode()\">\n </cide-ele-input>\n </div>\n\n <div>\n <cide-ele-input label=\"Branch Code *\" formControlName=\"acabrn_code\" placeholder=\"e.g., CS\" size=\"md\"\n leadingIcon=\"code\" [disabled]=\"isViewMode()\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Status and Lock Options -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <div\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 tw-cursor-pointer hover:tw-bg-gray-100 tw-transition-colors tw-duration-200\"\n [class.tw-cursor-not-allowed]=\"isViewMode()\" [class.tw-opacity-60]=\"isViewMode()\"\n (click)=\"onActiveCardClick()\">\n <cide-ele-input formControlName=\"acabrn_isactive\" type=\"checkbox\" size=\"md\" [disabled]=\"isViewMode()\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Active</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Enable/disable this branch</span>\n </div>\n </div>\n\n <div\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 tw-cursor-pointer hover:tw-bg-gray-100 tw-transition-colors tw-duration-200\"\n [class.tw-cursor-not-allowed]=\"isViewMode()\" [class.tw-opacity-60]=\"isViewMode()\"\n (click)=\"onLockedCardClick()\">\n <cide-ele-input formControlName=\"acabrn_islocked\" type=\"checkbox\" size=\"md\" [disabled]=\"isViewMode()\">\n </cide-ele-input>\n <div class=\"tw-flex tw-flex-col\">\n <span class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Locked</span>\n <span class=\"tw-text-xs tw-text-gray-500\">Prevent modifications</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Form Actions -->\n <div class=\"tw-table-row tw-h-0\">\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\">\n <div class=\"tw-flex tw-justify-end tw-gap-4\">\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"resetForm()\" leftIcon=\"refresh\"\n [disabled]=\"loading()\">\n Reset Form\n </button>\n\n <button cideEleButton type=\"button\" variant=\"secondary\" (click)=\"onCancel()\" leftIcon=\"close\"\n [disabled]=\"loading()\">\n {{ isViewMode() ? 'Close' : 'Cancel' }}\n </button>\n\n @if (!isViewMode()) {\n <button cideEleButton type=\"submit\" variant=\"primary\" [disabled]=\"loading() || branchForm.invalid\"\n [loading]=\"loading()\" leftIcon=\"save\">\n {{ submitButtonText }}\n </button>\n }\n </div>\n </div>\n </div>\n </form>\n </div>\n</cide-lyt-shared-wrapper>" }]
|
|
2946
3072
|
}], ctorParameters: () => [] });
|
|
2947
3073
|
|
|
2948
3074
|
var classProgramBranchForm_component = /*#__PURE__*/Object.freeze({
|
|
@@ -2963,4 +3089,4 @@ var classProgramBranchForm_component = /*#__PURE__*/Object.freeze({
|
|
|
2963
3089
|
*/
|
|
2964
3090
|
|
|
2965
3091
|
export { AcademicYearCreateComponent as A, CideLytProgramClassService as C, CideLytAcademicYearService as a, CideLytClassProgramBranchService as b, academicsRoutes as c, AcademicYearListComponent as d, CideLytAcademicYearMappingService as e, CideLytClassProgramBranchListComponent as f, CideLytClassProgramBranchFormComponent as g };
|
|
2966
|
-
//# sourceMappingURL=cloud-ide-academics-cloud-ide-academics-
|
|
3092
|
+
//# sourceMappingURL=cloud-ide-academics-cloud-ide-academics-COFzfbQg.mjs.map
|