cloud-ide-core 2.0.20 → 2.0.22
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-core.mjs +7422 -15
- package/fesm2022/cloud-ide-core.mjs.map +1 -1
- package/index.d.ts +1782 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-ide-core.mjs","sources":["../../../projects/cloud-ide-core/src/lib/cloud-ide-core.routes.ts","../../../projects/cloud-ide-core/src/lib/cloud-ide-core.service.ts","../../../projects/cloud-ide-core/src/lib/cloud-ide-core.component.ts","../../../projects/cloud-ide-core/src/public-api.ts","../../../projects/cloud-ide-core/src/cloud-ide-core.ts"],"sourcesContent":["import { Route } from '@angular/router';\nimport { authGuard } from 'cloud-ide-auth';\n\nexport const coreRoutes: Route[] = [\n // {\n // path: 'menu-management',\n // loadComponent: () => import('./core/menu-management/components/menu-list/menu-list.component').then(c => c.MenuListComponent),\n // title: 'Menu Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_menu_list\"\n // }\n // }, \n // {\n // path: 'department',\n // loadComponent: () => import('./core/department-management/components/department-list/department-list.component').then(c => c.CideCoreDepartmentListComponent),\n // title: 'Department Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_department_list\"\n // }\n // },\n // {\n // path: 'designation',\n // loadComponent: () => import('./core/designation-management/components/designation-list/designation-list.component').then(c => c.CideCoreDesignationListComponent),\n // title: 'Designation Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_designation_list\"\n // }\n // },\n // {\n // path: 'grade-level',\n // loadComponent: () => import('./core/grade-level-management/components/grade-level-list/grade-level-list.component').then(c => c.CideCoreGradeLevelListComponent),\n // title: 'Grade Level Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_grade_level_list\"\n // }\n // },\n // {\n // path: 'page',\n // loadComponent: () => import('./core/page-management/components/page-list/page-list.component').then(c => c.CideCorePageListComponent),\n // title: 'Page Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_management\"\n // }\n // },\n // {\n // path: 'page-form',\n // loadComponent: () => import('./core/page-management/components/page-form/page-form.component').then(c => c.CideCorePageFormComponent),\n // title: 'Page Form',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_management\"\n // }\n // },\n // {\n // path: 'page-form/:query',\n // loadComponent: () => import('./core/page-management/components/page-form/page-form.component').then(c => c.CideCorePageFormComponent),\n // title: 'Page Form',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_management\"\n // }\n // },\n // {\n // path: 'page-theme',\n // loadComponent: () => import('./core/page-management/components/page-theme/page-theme.component').then(c => c.CideCorePageThemeComponent),\n // title: 'Page Theme Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_theme\"\n // }\n // },\n // {\n // path: 'page-theme/:query',\n // loadComponent: () => import('./core/page-management/components/page-theme/page-theme.component').then(c => c.CideCorePageThemeComponent),\n // title: 'Page Theme Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_theme\"\n // }\n // },\n // {\n // path: 'page-controls',\n // loadComponent: () => import('./core/page-management/components/page-controls/page-controls.component').then(c => c.CideCorePageControlsComponent),\n // title: 'Page Controls Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_controls\"\n // }\n // },\n // {\n // path: 'page-controls/:query',\n // loadComponent: () => import('./core/page-management/components/page-controls/page-controls.component').then(c => c.CideCorePageControlsComponent),\n // title: 'Page Controls Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_controls\"\n // }\n // },\n // {\n // path: 'general_master_entry',\n // loadComponent: () => import('./core/general-master-management/components/general-master/general-master.component').then(c => c.CideCoreGeneralMasterComponent),\n // title: 'General Master Entry',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_general_master\"\n // }\n // },\n // {\n // path: 'general_master_entry/:query',\n // loadComponent: () => import('./core/general-master-management/components/general-master/general-master.component').then(c => c.CideCoreGeneralMasterComponent),\n // title: 'General Master Entry',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_general_master\"\n // }\n // },\n // {\n // path: 'general_type_entry',\n // loadComponent: () => import('./core/general-master-management/components/general-master-type/general-master-type.component').then(c => c.CideCoreGeneralMasterTypeComponent),\n // title: 'General Type Entry',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_general_master_type\"\n // }\n // },\n // {\n // path: 'general_type_entry/:query',\n // loadComponent: () => import('./core/general-master-management/components/general-master-type/general-master-type.component').then(c => c.CideCoreGeneralMasterTypeComponent),\n // title: 'General Type Entry',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_general_master_type\"\n // }\n // },\n // User Management Routes\n // {\n // path: 'user-master',\n // loadComponent: () => import('./core/user-management/components/user-list/user-list.component').then(c => c.CideCoreUserListComponent),\n // title: 'User Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"auth_user_mst\"\n // }\n // },\n // {\n // path: 'user-master/create',\n // loadComponent: () => import('./core/user-management/components/user-create/user-create.component').then(c => c.CideCoreUserCreateComponent),\n // title: 'Create User',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_management_create\"\n // }\n // },\n // {\n // path: 'user-master/edit/:query',\n // loadComponent: () => import('./core/user-management/components/user-create/user-create.component').then(c => c.CideCoreUserCreateComponent),\n // title: 'Edit User',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_management_create\"\n // }\n // },\n // {\n // path: 'user-master/view/:query',\n // loadComponent: () => import('./core/user-management/components/user-create/user-create.component').then(c => c.CideCoreUserCreateComponent),\n // title: 'View User',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_management_create\"\n // }\n // },\n // {\n // path: \"entity-list\",\n // loadComponent: () => import('./core/entity-management/components/entity-list/entity-list.component').then(c => c.CideCoreEntityListComponent),\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"admin_entity_list\"\n // }\n // },\n // {\n // path: \"entity-create\",\n // loadComponent: () => import('./core/entity-management/components/entity-create/entity-create.component').then(c => c.CideCoreEntityCreateComponent),\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_entity_form\"\n // }\n // },\n // {\n // path: \"entity-create/:query\",\n // loadComponent: () => import('./core/entity-management/components/entity-create/entity-create.component').then(c => c.CideCoreEntityCreateComponent),\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_entity_form\"\n // }\n // },\n // {\n // path: \"org-structure\",\n // loadComponent: () => import('./core/entity-management/components/org-structure/org-structure.component').then(c => c.CideCoreOrgStructureComponent),\n // title: 'Organization Structure',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_org_structure\"\n // }\n // },\n // User Role Management Routes\n // {\n // path: 'user-role',\n // loadComponent: () => import('./core/user-role-management/components/user-role-list/user-role-list.component').then(c => c.CideCoreUserRoleListComponent),\n // title: 'User Role Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_role\"\n // }\n // },\n // {\n // path: 'user-role/create',\n // loadComponent: () => import('./core/user-role-management/components/user-role-form/user-role-form.component').then(c => c.CideCoreUserRoleFormComponent),\n // title: 'Create User Role',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_role\"\n // }\n // },\n // {\n // path: 'user-role/edit/:query',\n // loadComponent: () => import('./core/user-role-management/components/user-role-form/user-role-form.component').then(c => c.CideCoreUserRoleFormComponent),\n // title: 'Edit User Role',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_role\"\n // }\n // },\n // {\n // path: 'user-role/view/:query',\n // loadComponent: () => import('./core/user-role-management/components/user-role-form/user-role-form.component').then(c => c.CideCoreUserRoleFormComponent),\n // title: 'View User Role',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_role_view\"\n // }\n // }\n];\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CloudIdeCoreService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cide-core',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n cloud-ide-core works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class CloudIdeCoreComponent {\r\n\r\n}\r\n","/*\n * Public API Surface of cloud-ide-core\n */\nexport * from './lib/cloud-ide-core.routes';\nexport * from './lib/cloud-ide-core.service';\nexport * from './lib/cloud-ide-core.component';\n\n// // Menu Management Module\n// export * from './lib/core/menu-management';\n\n// // Department Management Module\n// export * from './lib/core/department-management';\n\n// // Designation Management Module\n// export * from './lib/core/designation-management';\n\n// // Grade Level Management Module\n// export * from './lib/core/grade-level-management';\n\n// // Page Management Components\n// export * from './lib/core/page-management';\n\n// // User Management Module\n// export * from './lib/core/user-management';\n\n// // User Role Management Module\n// export * from './lib/core/user-role-management';\n\n// // Entity Management Module\n// export * from './lib/core/entity-management';\n\n// // General Master Management Module\n// export * from './lib/core/general-master-management';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAGO,MAAM,UAAU,GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;MC3QS,mBAAmB,CAAA;AAE9B,IAAA,WAAA,GAAA;uGAFW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCSY,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPtB,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EACD,CAAA;;;;AAIT,EAAA,CAAA,EAAA;;;ACVH;;AAEG;AAKH;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;;AChCA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"cloud-ide-core.mjs","sources":["../../../projects/cloud-ide-core/src/lib/cloud-ide-core.routes.ts","../../../projects/cloud-ide-core/src/lib/cloud-ide-core.service.ts","../../../projects/cloud-ide-core/src/lib/cloud-ide-core.component.ts","../../../projects/cloud-ide-core/src/lib/core/menu-management/services/menu-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/general-master-management/services/general-master.service.ts","../../../projects/cloud-ide-core/src/lib/core/general-master-management/services/general-master-type.service.ts","../../../projects/cloud-ide-core/src/lib/core/menu-management/components/menu-list/menu-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/menu-management/components/menu-list/menu-list.component.html","../../../projects/cloud-ide-core/src/lib/core/menu-management/index.ts","../../../projects/cloud-ide-core/src/lib/core/department-management/services/department-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/department-management/components/department-list/department-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/department-management/components/department-list/department-list.component.html","../../../projects/cloud-ide-core/src/lib/core/department-management/index.ts","../../../projects/cloud-ide-core/src/lib/core/designation-management/services/designation-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/grade-level-management/services/grade-level-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/designation-management/components/designation-list/designation-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/designation-management/components/designation-list/designation-list.component.html","../../../projects/cloud-ide-core/src/lib/core/designation-management/index.ts","../../../projects/cloud-ide-core/src/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/grade-level-management/components/grade-level-list/grade-level-list.component.html","../../../projects/cloud-ide-core/src/lib/core/grade-level-management/index.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/services/page-management.service.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-list/page-list.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-list/page-list.component.html","../../../projects/cloud-ide-core/src/lib/core/page-management/services/page-theme.service.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-theme/page-theme.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-theme/page-theme.component.html","../../../projects/cloud-ide-core/src/lib/core/page-management/services/page-controls.service.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-controls/page-controls.component.ts","../../../projects/cloud-ide-core/src/lib/core/page-management/components/page-controls/page-controls.component.html","../../../projects/cloud-ide-core/src/lib/core/page-management/index.ts","../../../projects/cloud-ide-core/src/public-api.ts","../../../projects/cloud-ide-core/src/cloud-ide-core.ts"],"sourcesContent":["import { Route } from '@angular/router';\nimport { authGuard } from 'cloud-ide-auth';\n\nexport const coreRoutes: Route[] = [\n // {\n // path: 'menu-management',\n // loadComponent: () => import('./core/menu-management/components/menu-list/menu-list.component').then(c => c.MenuListComponent),\n // title: 'Menu Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_menu_list\"\n // }\n // }, \n // {\n // path: 'department',\n // loadComponent: () => import('./core/department-management/components/department-list/department-list.component').then(c => c.CideCoreDepartmentListComponent),\n // title: 'Department Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_department_list\"\n // }\n // },\n // {\n // path: 'designation',\n // loadComponent: () => import('./core/designation-management/components/designation-list/designation-list.component').then(c => c.CideCoreDesignationListComponent),\n // title: 'Designation Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_designation_list\"\n // }\n // },\n // {\n // path: 'grade-level',\n // loadComponent: () => import('./core/grade-level-management/components/grade-level-list/grade-level-list.component').then(c => c.CideCoreGradeLevelListComponent),\n // title: 'Grade Level Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_grade_level_list\"\n // }\n // },\n // {\n // path: 'page',\n // loadComponent: () => import('./core/page-management/components/page-list/page-list.component').then(c => c.CideCorePageListComponent),\n // title: 'Page Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_management\"\n // }\n // },\n // {\n // path: 'page-form',\n // loadComponent: () => import('./core/page-management/components/page-form/page-form.component').then(c => c.CideCorePageFormComponent),\n // title: 'Page Form',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_management\"\n // }\n // },\n // {\n // path: 'page-form/:query',\n // loadComponent: () => import('./core/page-management/components/page-form/page-form.component').then(c => c.CideCorePageFormComponent),\n // title: 'Page Form',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_management\"\n // }\n // },\n // {\n // path: 'page-theme',\n // loadComponent: () => import('./core/page-management/components/page-theme/page-theme.component').then(c => c.CideCorePageThemeComponent),\n // title: 'Page Theme Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_theme\"\n // }\n // },\n // {\n // path: 'page-theme/:query',\n // loadComponent: () => import('./core/page-management/components/page-theme/page-theme.component').then(c => c.CideCorePageThemeComponent),\n // title: 'Page Theme Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_theme\"\n // }\n // },\n // {\n // path: 'page-controls',\n // loadComponent: () => import('./core/page-management/components/page-controls/page-controls.component').then(c => c.CideCorePageControlsComponent),\n // title: 'Page Controls Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_controls\"\n // }\n // },\n // {\n // path: 'page-controls/:query',\n // loadComponent: () => import('./core/page-management/components/page-controls/page-controls.component').then(c => c.CideCorePageControlsComponent),\n // title: 'Page Controls Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_page_controls\"\n // }\n // },\n // {\n // path: 'general_master_entry',\n // loadComponent: () => import('./core/general-master-management/components/general-master/general-master.component').then(c => c.CideCoreGeneralMasterComponent),\n // title: 'General Master Entry',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_general_master\"\n // }\n // },\n // {\n // path: 'general_master_entry/:query',\n // loadComponent: () => import('./core/general-master-management/components/general-master/general-master.component').then(c => c.CideCoreGeneralMasterComponent),\n // title: 'General Master Entry',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_general_master\"\n // }\n // },\n // {\n // path: 'general_type_entry',\n // loadComponent: () => import('./core/general-master-management/components/general-master-type/general-master-type.component').then(c => c.CideCoreGeneralMasterTypeComponent),\n // title: 'General Type Entry',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_general_master_type\"\n // }\n // },\n // {\n // path: 'general_type_entry/:query',\n // loadComponent: () => import('./core/general-master-management/components/general-master-type/general-master-type.component').then(c => c.CideCoreGeneralMasterTypeComponent),\n // title: 'General Type Entry',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_general_master_type\"\n // }\n // },\n // // User Management Routes\n // {\n // path: 'user-master',\n // loadComponent: () => import('./core/user-management/components/user-list/user-list.component').then(c => c.CideCoreUserListComponent),\n // title: 'User Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"auth_user_mst\"\n // }\n // },\n // {\n // path: 'user-master/create',\n // loadComponent: () => import('./core/user-management/components/user-create/user-create.component').then(c => c.CideCoreUserCreateComponent),\n // title: 'Create User',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_management_create\"\n // }\n // },\n // {\n // path: 'user-master/edit/:query',\n // loadComponent: () => import('./core/user-management/components/user-create/user-create.component').then(c => c.CideCoreUserCreateComponent),\n // title: 'Edit User',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_management_create\"\n // }\n // },\n // {\n // path: 'user-master/view/:query',\n // loadComponent: () => import('./core/user-management/components/user-create/user-create.component').then(c => c.CideCoreUserCreateComponent),\n // title: 'View User',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_management_create\"\n // }\n // },\n // {\n // path: \"entity-list\",\n // loadComponent: () => import('./core/entity-management/components/entity-list/entity-list.component').then(c => c.CideCoreEntityListComponent),\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"admin_entity_list\"\n // }\n // },\n // {\n // path: \"entity-create\",\n // loadComponent: () => import('./core/entity-management/components/entity-create/entity-create.component').then(c => c.CideCoreEntityCreateComponent),\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_entity_form\"\n // }\n // },\n // {\n // path: \"entity-create/:query\",\n // loadComponent: () => import('./core/entity-management/components/entity-create/entity-create.component').then(c => c.CideCoreEntityCreateComponent),\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_entity_form\"\n // }\n // },\n // {\n // path: \"org-structure\",\n // loadComponent: () => import('./core/entity-management/components/org-structure/org-structure.component').then(c => c.CideCoreOrgStructureComponent),\n // title: 'Organization Structure',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_org_structure\"\n // }\n // },\n // // User Role Management Routes\n // {\n // path: 'user-role',\n // loadComponent: () => import('./core/user-role-management/components/user-role-list/user-role-list.component').then(c => c.CideCoreUserRoleListComponent),\n // title: 'User Role Management',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_role\"\n // }\n // },\n // {\n // path: 'user-role/create',\n // loadComponent: () => import('./core/user-role-management/components/user-role-form/user-role-form.component').then(c => c.CideCoreUserRoleFormComponent),\n // title: 'Create User Role',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_role\"\n // }\n // },\n // {\n // path: 'user-role/edit/:query',\n // loadComponent: () => import('./core/user-role-management/components/user-role-form/user-role-form.component').then(c => c.CideCoreUserRoleFormComponent),\n // title: 'Edit User Role',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_role\"\n // }\n // },\n // {\n // path: 'user-role/view/:query',\n // loadComponent: () => import('./core/user-role-management/components/user-role-form/user-role-form.component').then(c => c.CideCoreUserRoleFormComponent),\n // title: 'View User Role',\n // canActivate: [authGuard],\n // data: {\n // reuseTab: true,\n // sypg_page_code: \"core_user_role_view\"\n // }\n // }\n];\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CloudIdeCoreService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cide-core',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n cloud-ide-core works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class CloudIdeCoreComponent {\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject, of } from 'rxjs';\r\nimport { catchError, tap, map } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl, \r\n ICoreSyme, \r\n MCoreSymeDeletePayload, \r\n MCoreSymeGetByIdPayload, \r\n menuByIdControllerResponse, \r\n menuChangeSequenceControllerResponse, \r\n menuDeleteControllerResponse, \r\n menuListControllerResponse, \r\n MMenuChangeSequencePayload, \r\n MMenuListPayload\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MenuManagementService {\r\n private apiUrl = `${coreRoutesUrl?.getSidebarMenues}`;\r\n private menuListSubject = new BehaviorSubject<ICoreSyme[]>([]);\r\n public menuList$ = this.menuListSubject.asObservable();\r\n\r\n constructor(private http: HttpClient) {\r\n console.log('MenuManagementService initialized - using real API');\r\n }\r\n\r\n\r\n /**\r\n * Get menu list from API\r\n */\r\n getMenuList(body: MMenuListPayload): Observable<menuListControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<menuListControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, query]))\r\n .pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response?.success) {\r\n this.menuListSubject.next(response?.data || []);\r\n }\r\n }),\r\n catchError(error => {\r\n console.error('CideCoreMenuManagementService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get menu list from cache (if available)\r\n */\r\n getMenuListFromCache(): ICoreSyme[] {\r\n return this.menuListSubject.value;\r\n }\r\n\r\n /**\r\n * Create new menu item\r\n * POST ${coreRoutesUrl?.menu} - payload: MCoreSymeInsertUpdatePayload, response: menuInsertUpdateControllerResponse\r\n */\r\n createMenuItem(menuItem: ICoreSyme): Observable<menuListControllerResponse> {\r\n console.log('Creating menu item:', menuItem);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu]);\r\n return this.http.post<menuListControllerResponse>(url, menuItem)\r\n .pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing menu item\r\n * POST ${coreRoutesUrl?.menu} - payload: MCoreSymeInsertUpdatePayload, response: menuInsertUpdateControllerResponse\r\n */\r\n updateMenuItem(id: string, menuItem: ICoreSyme): Observable<menuListControllerResponse> {\r\n console.log('Updating menu item:', id, menuItem);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu]);\r\n return this.http.post<menuListControllerResponse>(url, menuItem)\r\n .pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get menu item by ID\r\n * GET ${coreRoutesUrl?.menu}/byId/:query - payload: MCoreSymeGetByIdPayload, response: menuByIdControllerResponse\r\n * TODO: Update to use MCoreSymeGetByIdPayload and menuByIdControllerResponse when available\r\n */\r\n getMenuItemById(id: string): Observable<menuByIdControllerResponse> {\r\n console.log('Getting menu item by ID:', id);\r\n const payload: MCoreSymeGetByIdPayload = { syme_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, 'byId', query]);\r\n return this.http.get<menuByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete menu item\r\n * DELETE ${coreRoutesUrl?.menu}/:query - payload: MCoreSymeDeletePayload, response: menuDeleteControllerResponse\r\n * TODO: Update to use MCoreSymeDeletePayload and menuDeleteControllerResponse when available\r\n */\r\n deleteMenuItem(id: string): Observable<menuDeleteControllerResponse> {\r\n const payload: MCoreSymeDeletePayload = { syme_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, query]);\r\n return this.http.delete<menuDeleteControllerResponse>(url)\r\n .pipe(\r\n tap((response: menuDeleteControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete multiple menu items\r\n * DELETE ${coreRoutesUrl?.menu}/:query - payload: MCoreSymeDeletePayload, response: menuDeleteControllerResponse\r\n * TODO: Update to use MCoreSymeDeletePayload and menuDeleteControllerResponse when available\r\n */\r\n deleteMultipleMenuItems(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\r\n console.log('Deleting multiple menu items:', ids);\r\n const payload = { ids };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, query]);\r\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\r\n .pipe(\r\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle menu item active status\r\n */\r\n toggleMenuItemStatus(id: string): Observable<menuListControllerResponse> {\r\n console.log('Toggling menu item status:', id);\r\n const payload = { id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, query]);\r\n return this.http.put<menuListControllerResponse>(url, {})\r\n .pipe(\r\n tap((response: menuListControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Change menu sequence\r\n * PATCH ${coreRoutesUrl?.menu}/change-sequence - payload: menu sequence data, response: menuChangeSequenceControllerResponse\r\n */\r\n changeMenuSequence(payload: MMenuChangeSequencePayload): Observable<menuChangeSequenceControllerResponse> {\r\n console.log('Changing menu sequence:', payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.menu, 'change-sequence']);\r\n return this.http.patch<menuChangeSequenceControllerResponse>(url, payload)\r\n .pipe(\r\n tap((response: menuChangeSequenceControllerResponse) => {\r\n if (response.success) {\r\n this.refreshMenuList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get available menu types\r\n */\r\n getMenuTypes(): Observable<string[]> {\r\n return this.http.get<{ data: string[] }>('/api/menu/types')\r\n .pipe(\r\n map((response: { data: string[] }) => response.data),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get available icons\r\n */\r\n getAvailableIcons(): Observable<string[]> {\r\n return this.http.get<{ data: string[] }>('/api/menu/icons')\r\n .pipe(\r\n map((response: { data: string[] }) => response.data),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Find menu item by ID (including nested items)\r\n */\r\n findMenuItemById(id: string, items: ICoreSyme[] = this.menuListSubject.value): ICoreSyme | null {\r\n // Local search in current menu list\r\n for (const item of items) {\r\n if (item._id === id) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Get parent menu items for dropdown selection\r\n */\r\n getParentMenuItems(excludeId?: string): ICoreSyme[] {\r\n const allItems: ICoreSyme[] = [];\r\n\r\n const flattenItems = (items: ICoreSyme[], level: number = 0) => {\r\n items.forEach(item => {\r\n if (item._id !== excludeId) {\r\n allItems.push({\r\n ...item,\r\n syme_title: ' '.repeat(level) + item.syme_title\r\n });\r\n }\r\n });\r\n };\r\n\r\n flattenItems(this.menuListSubject.value);\r\n return allItems;\r\n }\r\n\r\n /**\r\n * Refresh menu list from server\r\n */\r\n private refreshMenuList(): void {\r\n // Create a default body for getting all menu items\r\n const defaultBody: MMenuListPayload = {\r\n pageIndex: 1,\r\n pageSize: 10\r\n };\r\n this.getMenuList(defaultBody).subscribe({\r\n next: () => {\r\n console.log('Menu list refreshed successfully');\r\n },\r\n error: (error) => {\r\n console.error('Error refreshing menu list:', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Menu Management Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { \n cidePath,\n coreRoutesUrl,\n generateStringFromObject,\n hostManagerRoutesUrl,\n generalMasterListControllerResponse,\n generalMasterByIdControllerResponse,\n generalMasterInsertUpdateControllerResponse,\n generalMasterDeleteControllerResponse,\n generalMasterToggleStatusControllerResponse,\n ICoreSygms,\n IGeneralMasterListRequest,\n} from 'cloud-ide-lms-model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CideCoreGeneralMasterService {\n private http = inject(HttpClient);\n private generalMasterListSubject = new BehaviorSubject<ICoreSygms[]>([]);\n public generalMasterList$ = this.generalMasterListSubject.asObservable();\n\n constructor() {\n console.log('CideCoreGeneralMasterService initialized - using real API');\n }\n\n /**\n * Get general master list from API\n */\n getMasterList(payload: IGeneralMasterListRequest): Observable<generalMasterListControllerResponse> {\n const query = generateStringFromObject(payload);\n return this.http?.get<generalMasterListControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]))\n .pipe(\n tap((response: generalMasterListControllerResponse) => {\n if (response?.success) {\n this.generalMasterListSubject.next(response?.data || []);\n }\n }),\n catchError(error => {\n console.error('CideCoreGeneralMasterService API error:', error);\n return this.handleError(error);\n })\n );\n }\n\n /**\n * Get general master list from cache (if available)\n */\n getMasterListFromCache(): ICoreSygms[] {\n return this.generalMasterListSubject.value;\n }\n\n /**\n * Save general master (create or update)\n * POST ${coreRoutesUrl?.generalMaster} - payload: ICoreSygms, response: generalMasterInsertUpdateControllerResponse\n */\n saveMaster(master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n const isUpdate = !!master._id;\n console.log(`${isUpdate ? 'Updating' : 'Creating'} general master:`, master);\n \n // Create proper payload\n const payload: ICoreSygms = {\n ...(master._id && { _id: master._id }), // Only include _id if it exists\n sygms_code: master.sygms_code,\n sygms_id_sygmt: master.sygms_id_sygmt,\n sygms_title: master.sygms_title,\n sygms_desc: master.sygms_desc,\n sygms_isactive: master.sygms_isactive,\n sygms_id_sygms: master.sygms_id_sygms,\n sygms_configuration: master.sygms_configuration,\n sygms_entity_id_syen: master.sygms_entity_id_syen\n };\n \n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster]);\n return this.http.post<generalMasterInsertUpdateControllerResponse>(url, payload)\n .pipe(\n tap((response: generalMasterInsertUpdateControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Create new general master (backward compatibility)\n */\n createMaster(master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n return this.saveMaster(master);\n }\n\n /**\n * Update existing general master (backward compatibility)\n */\n updateMaster(id: string, master: ICoreSygms): Observable<generalMasterInsertUpdateControllerResponse> {\n return this.saveMaster({ ...master, _id: id });\n }\n\n /**\n * Get general master by ID\n * GET ${coreRoutesUrl?.generalMaster}/byId/:query - payload: { sygms_id: string }, response: generalMasterByIdControllerResponse\n */\n getMasterById(id: string): Observable<generalMasterByIdControllerResponse> {\n console.log('Getting general master by ID:', id);\n const payload = { sygms_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, 'byId', query]);\n return this.http.get<generalMasterByIdControllerResponse>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete general master\n * DELETE ${coreRoutesUrl?.generalMaster}/:query - payload: { sygms_id: string }, response: generalMasterDeleteControllerResponse\n */\n deleteMaster(id: string): Observable<generalMasterDeleteControllerResponse> {\n const payload = { sygms_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]);\n return this.http.delete<generalMasterDeleteControllerResponse>(url)\n .pipe(\n tap((response: generalMasterDeleteControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Toggle general master active status\n */\n toggleMasterStatus(id: string): Observable<generalMasterToggleStatusControllerResponse> {\n console.log('Toggling general master status:', id);\n const payload = { id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, query]);\n return this.http.put<generalMasterToggleStatusControllerResponse>(url, {})\n .pipe(\n tap((response: generalMasterToggleStatusControllerResponse) => {\n if (response.success) {\n this.refreshMasterList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Check if master code exists\n */\n checkMasterCodeExists(code: string, typeId: string, excludeId?: string): Observable<{ success: boolean; message: string; exists: boolean }> {\n const payload: Record<string, string> = { code, typeId };\n if (excludeId) {\n payload['excludeId'] = excludeId;\n }\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMaster, 'checkCodeExists', query]);\n return this.http.get<{ success: boolean; message: string; exists: boolean }>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Refresh general master list from server\n */\n private refreshMasterList(): void {\n const defaultPayload: IGeneralMasterListRequest = {};\n this.getMasterList(defaultPayload).subscribe({\n next: () => {\n console.log('General master list refreshed successfully');\n },\n error: (error) => {\n console.error('Error refreshing general master list:', error);\n }\n });\n }\n\n /**\n * Handle errors\n */\n private handleError(error: unknown): Observable<never> {\n let errorMessage = 'An error occurred';\n\n if (error instanceof Error) {\n errorMessage = error.message;\n } else if (typeof error === 'string') {\n errorMessage = error;\n }\n\n console.error('General Master Service Error:', errorMessage);\n return throwError(() => new Error(errorMessage));\n }\n} ","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { \n cidePath,\n coreRoutesUrl,\n generateStringFromObject,\n hostManagerRoutesUrl,\n generalMasterTypeListControllerResponse,\n generalMasterTypeByIdControllerResponse,\n generalMasterTypeInsertUpdateControllerResponse,\n generalMasterTypeDeleteControllerResponse,\n generalMasterTypeToggleStatusControllerResponse,\n MGeneralMasterType,\n MGeneralMasterTypeToggleStatusPayload,\n ICoreSygmt\n} from 'cloud-ide-lms-model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CideCoreGeneralMasterTypeService {\n private http = inject(HttpClient);\n private generalMasterTypeListSubject = new BehaviorSubject<ICoreSygmt[]>([]);\n public generalMasterTypeList$ = this.generalMasterTypeListSubject.asObservable();\n\n constructor() {\n console.log('CideCoreGeneralMasterTypeService initialized - using real API');\n }\n\n /**\n * Get general master type list from API\n */\n getTypeList(body: MGeneralMasterType): Observable<generalMasterTypeListControllerResponse> {\n const query = generateStringFromObject(body);\n return this.http?.get<generalMasterTypeListControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMasterType, query]))\n .pipe(\n tap((response: generalMasterTypeListControllerResponse) => {\n if (response?.success) {\n this.generalMasterTypeListSubject.next(response?.data || []);\n }\n }),\n catchError(error => {\n console.error('CideCoreGeneralMasterTypeService API error:', error);\n return this.handleError(error);\n })\n );\n }\n\n /**\n * Get general master type list from cache (if available)\n */\n getTypeListFromCache(): ICoreSygmt[] {\n return this.generalMasterTypeListSubject.value;\n }\n\n /**\n * Create or update general master type\n * POST ${coreRoutesUrl?.generalMasterType} - payload: IGeneralMasterTypeCreateUpdatePayload, response: generalMasterTypeInsertUpdateControllerResponse\n * If type._id exists, it will update; otherwise, it will create a new type\n */\n saveType(type: ICoreSygmt): Observable<generalMasterTypeInsertUpdateControllerResponse> {\n const isUpdate = !!type._id;\n console.log(`${isUpdate ? 'Updating' : 'Creating'} general master type:`, type);\n \n // Create proper payload - backend will determine create vs update based on _id presence\n const payload: ICoreSygmt = {\n ...(type._id && { _id: type._id }), // Only include _id if it exists\n sygmt_code: type.sygmt_code,\n sygmt_title: type.sygmt_title,\n sygmt_desc: type.sygmt_desc,\n sygmt_isactive: type.sygmt_isactive,\n sygmt_configuration: type.sygmt_configuration,\n sygmt_id_sygmt: type.sygmt_id_sygmt\n };\n \n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMasterType]);\n return this.http.post<generalMasterTypeInsertUpdateControllerResponse>(url, payload)\n .pipe(\n tap((response: generalMasterTypeInsertUpdateControllerResponse) => {\n if (response.success) {\n this.refreshTypeList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Get general master type by ID\n * GET ${coreRoutesUrl?.generalMasterType}/byId/:query - payload: { sygmt_id: string }, response: generalMasterTypeByIdControllerResponse\n */\n getTypeById(id: string): Observable<generalMasterTypeByIdControllerResponse> {\n console.log('Getting general master type by ID:', id);\n const payload = { sygmt_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMasterType, 'byId', query]);\n return this.http.get<generalMasterTypeByIdControllerResponse>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete general master type\n * DELETE ${coreRoutesUrl?.generalMasterType}/:query - payload: { sygmt_id: string }, response: generalMasterTypeDeleteControllerResponse\n */\n deleteType(id: string): Observable<generalMasterTypeDeleteControllerResponse> {\n const payload = { sygmt_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMasterType, query]);\n return this.http.delete<generalMasterTypeDeleteControllerResponse>(url)\n .pipe(\n tap((response: generalMasterTypeDeleteControllerResponse) => {\n if (response.success) {\n this.refreshTypeList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete multiple general master types\n */\n deleteMultipleTypes(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\n console.log('Deleting multiple general master types:', ids);\n const payload = { ids };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMasterType, query]);\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\n .pipe(\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\n if (response.success) {\n this.refreshTypeList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Toggle general master type active status\n */\n toggleTypeStatus(payload: MGeneralMasterTypeToggleStatusPayload): Observable<generalMasterTypeToggleStatusControllerResponse> {\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMasterType, query]);\n return this.http.put<generalMasterTypeToggleStatusControllerResponse>(url, {})\n .pipe(\n tap((response: generalMasterTypeToggleStatusControllerResponse) => {\n if (response.success) {\n this.refreshTypeList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Check if type code exists\n */\n checkTypeCodeExists(code: string, excludeId?: string): Observable<{ success: boolean; message: string; exists: boolean }> {\n const payload: Record<string, string> = { code };\n if (excludeId) {\n payload['excludeId'] = excludeId;\n }\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMasterType, 'checkCodeExists', query]);\n return this.http.get<{ success: boolean; message: string; exists: boolean }>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Get hierarchical tree structure\n */\n getTypeTree(): Observable<generalMasterTypeListControllerResponse> {\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.generalMasterType, 'tree']);\n return this.http.get<generalMasterTypeListControllerResponse>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Find general master type by ID\n */\n findTypeById(id: string, items: ICoreSygmt[] = this.generalMasterTypeListSubject.value): ICoreSygmt | null {\n for (const item of items) {\n if (item._id === id) {\n return item;\n }\n }\n return null;\n }\n\n /**\n * Get parent general master types for dropdown selection\n */\n getParentTypes(excludeId?: string): ICoreSygmt[] {\n const allItems: ICoreSygmt[] = [];\n\n const flattenItems = (items: ICoreSygmt[], level: number = 0) => {\n items.forEach(item => {\n if (item._id !== excludeId) {\n allItems.push({\n ...item,\n sygmt_title: ' '.repeat(level) + item.sygmt_title\n });\n }\n });\n };\n\n flattenItems(this.generalMasterTypeListSubject.value);\n return allItems;\n }\n\n /**\n * Refresh general master type list from server\n */\n private refreshTypeList(): void {\n const defaultBody: MGeneralMasterType = {};\n this.getTypeList(defaultBody).subscribe({\n next: () => {\n console.log('General master type list refreshed successfully');\n },\n error: (error) => {\n console.error('Error refreshing general master type list:', error);\n }\n });\n }\n\n /**\n * Handle errors\n */\n private handleError(error: unknown): Observable<never> {\n let errorMessage = 'An error occurred';\n\n if (error instanceof Error) {\n errorMessage = error.message;\n } else if (typeof error === 'string') {\n errorMessage = error;\n }\n\n console.error('General Master Type Service Error:', errorMessage);\n return throwError(() => new Error(errorMessage));\n }\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ICoreSyme, MMenuListPayload, ICoreSygms, IGeneralMasterListRequest } from 'cloud-ide-lms-model';\nimport { MenuManagementService } from '../../services/menu-management.service';\nimport { CideCoreGeneralMasterService } from '../../../general-master-management/services/general-master.service';\nimport { CideCoreGeneralMasterTypeService } from '../../../general-master-management/services/general-master-type.service';\nimport { CideEleButtonComponent, CideIconComponent, CideInputComponent, CideTextareaComponent, GridConfiguration, GridEvent, DropdownItem, CideEleDropdownComponent, NotificationService } from 'cloud-ide-element';\nimport { CideSelectComponent } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\nimport { CideEleDataGridComponent } from 'cloud-ide-element';\n\n\n\n@Component({\n selector: 'cide-core-app-menu-list',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n templateUrl: './menu-list.component.html',\n styleUrls: []\n})\nexport class MenuListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private menuService = inject(MenuManagementService);\n private generalMasterService = inject(CideCoreGeneralMasterService);\n private generalMasterTypeService = inject(CideCoreGeneralMasterTypeService);\n private notificationService = inject(NotificationService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n menuDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<ICoreSyme>>>('menuDetailsRendererTemplate');\n menuTypeRendererTemplate = viewChild.required<TemplateRef<TemplateContext<ICoreSyme>>>('menuTypeRendererTemplate');\n permissionsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<ICoreSyme>>>('permissionsRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<ICoreSyme>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n menuItems = signal<ICoreSyme[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n permissions = signal<ICoreSygms[]>([]);\n userRightsTypeId = signal<string | null>(null);\n searchTerm = signal('');\n\n // Modern reactive forms with signals\n selectedParentItem = signal<ICoreSyme | null>(null);\n\n // Retrieved menu item data\n retrievedMenuItem = signal<ICoreSyme | null>(null);\n\n // Edit mode flag\n isEditMode = signal(false);\n\n // Drag order management\n originalOrder = signal<ICoreSyme[]>([]);\n hasOrderChanged = signal(false);\n \n\n\n // Server-side pagination state\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n\n\n // Modern reactive form with typed controls\n quickAddForm = this.fb.group({\n syme_title: this.fb.control('', [Validators.required, Validators.minLength(2), Validators.maxLength(100)]),\n syme_desc: this.fb.control('', [Validators.maxLength(255)]),\n syme_type: this.fb.control<'module' | 'section' | 'menu' | 'title'>('module', [Validators.required]),\n syme_id_syme: this.fb.control(''),\n syme_path: this.fb.control('', [Validators.maxLength(255)]),\n syme_icon: this.fb.control('', [Validators.maxLength(50)]),\n syme_link: this.fb.control('', [Validators.maxLength(255)]),\n syme_isactive: this.fb.control(true, [Validators.required]),\n syme_order_by: this.fb.control(1, [Validators.required, Validators.min(1)]),\n syme_permissions_id_sygms: this.fb.control<string[]>([])\n });\n\n\n\n // Menu type options for quick add - dynamic based on parent selection\n menuTypeOptions = computed(() => {\n if (this.selectedParentItem()) {\n // When parent is selected, allow creating child types only\n return [\n { value: 'section', label: 'Section' },\n { value: 'menu', label: 'Menu Item' },\n { value: 'title', label: 'Title' },\n { value: 'internal', label: 'Internal Menu' }\n ];\n } else {\n // When no parent is selected, only allow module creation\n return [\n { value: 'module', label: 'Module' }\n ];\n }\n });\n\n // Permission options for multi-select\n permissionOptions = computed(() => {\n return this.permissions().map(permission => ({\n value: permission._id || '',\n label: permission.sygms_title || permission.sygms_code || 'Unknown'\n }));\n });\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSyme>>({\n id: 'menu-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Menu Item',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'menuDetailsRenderer'\n },\n {\n key: 'syme_type',\n header: 'Type',\n type: 'custom',\n width: '120px',\n truncate: false,\n align: 'center',\n renderer: 'menuTypeRenderer'\n },\n {\n key: 'syme_path',\n header: 'Path',\n type: 'text',\n width: '200px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'syme_isactive',\n header: 'Status',\n type: 'status',\n width: '100px',\n truncate: false,\n align: 'center',\n statusConfig: {\n activeValue: true,\n activeLabel: 'Active',\n inactiveLabel: 'Inactive',\n activeClass: 'tw-bg-green-100 tw-text-green-800',\n inactiveClass: 'tw-bg-red-100 tw-text-red-800'\n }\n },\n {\n key: 'syme_permissions_id_sygms',\n header: 'Permissions',\n type: 'custom',\n width: '200px',\n truncate: true,\n align: 'left',\n renderer: 'permissionsRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '60px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: false,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search menu items...',\n searchableColumns: ['syme_title', 'syme_desc', 'syme_path'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n dragDrop: {\n enabled: true,\n orderField: 'syme_order_by',\n dragClass: 'tw-opacity-50 tw-bg-blue-50',\n dropClass: 'tw-bg-green-50'\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none',\n onRefresh: 'onMenuItemRefresh',\n onRowReorder: 'onRowReorder',\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'syme_id_syme',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'isExpanded',\n hasChildrenKey: 'hasChildren'\n }\n });\n\n // Template renderers using Angular best practices\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext<ICoreSyme>>> => ({\n menuDetailsRenderer: this.menuDetailsRendererTemplate(),\n menuTypeRenderer: this.menuTypeRendererTemplate(),\n permissionsRenderer: this.permissionsRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Get template renderers for data grid\n * These templates are available for enhanced data grid components\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext<ICoreSyme>>> {\n return this.templateRenderers();\n }\n\n // Mixed renderers (templates + string functions)\n customRenderers = computed(() => ({\n ...this.templateRenderers()\n }));\n\n /**\n * Get custom renderers adapted for current data grid compatibility\n * Uses template-based renderers converted to string functions\n */\n getCustomRenderers(): Record<string, (value: unknown, row: ICoreSyme) => string> {\n // This method is no longer needed since we're using templates directly\n return {};\n }\n\n // Action handlers for grid actions\n actionHandlers = {\n onEditMenuItem: (row: ICoreSyme) => this.editMenuItem(row._id || ''),\n onToggleMenuItem: (row: ICoreSyme) => this.toggleItemStatus(row._id || ''),\n onDeleteMenuItem: (row: ICoreSyme) => this.deleteMenuItem(row._id || ''),\n onMenuItemRowClick: (row: ICoreSyme) => this.onMenuItemRowClick(row),\n onMenuItemRefresh: () => this.onMenuItemRefresh(),\n onAddChild: (row: ICoreSyme) => this.onAddChild(row),\n resetOrder: () => this.resetDragOrder(),\n saveOrder: () => this.saveMenuOrder()\n };\n\n\n\n hasSelection = computed(() => this.selectedItems().length > 0);\n\n // Pagination computed properties\n totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n hasNextPage = computed(() => this.currentPage() < this.totalPages());\n hasPreviousPage = computed(() => this.currentPage() > 1);\n\n // Modern constructor with effects for initialization\n constructor() {\n // Initialize component once on construction\n this.initializeComponent();\n\n // Cleanup effect for event listeners\n this.destroyRef.onDestroy(() => {\n this.cleanupEventListeners();\n });\n }\n\n /**\n * Initialize component with modern patterns\n */\n private initializeComponent(): void {\n console.log('MenuListComponent initialized with modern Angular patterns');\n this.loadUserRightsTypeId();\n this.loadMenuItems();\n this.setupEventListeners();\n this.exposeGlobalFunctions();\n }\n\n /**\n * Setup event listeners for dropdown interactions\n */\n private setupEventListeners(): void {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n document.addEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n document.removeEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Expose global functions for dropdown interactions\n */\n private exposeGlobalFunctions(): void {\n if (typeof window !== 'undefined') {\n (window as unknown as { toggleDropdown: (id: string) => void }).toggleDropdown = this.toggleDropdown.bind(this);\n (window as unknown as { handleMenuAction: (action: string, id: string) => void }).handleMenuAction = this.handleMenuAction.bind(this);\n\n }\n }\n\n /**\n * Get default type based on parent selection (computed for reactivity)\n */\n private getDefaultType = computed(() => {\n return this.selectedParentItem() ? 'section' : 'module';\n });\n\n /**\n * Load menu items from service\n */\n loadMenuItems(): void {\n console.log('🚀 MenuListComponent.loadMenuItems() called');\n this.loading.set(true);\n this.error.set(null);\n\n console.log('📞 Calling menuService.getMenuList()...');\n const requestBody: MMenuListPayload = {\n total: this.totalItems(),\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n query: this.searchTerm(),\n sort: { order: 'asc', key: 'syme_order_by' }\n };\n console.log('📋 Request body:', requestBody);\n\n // Check if service exists\n if (!this.menuService) {\n console.error('❌ MenuService is not available');\n this.error.set('Menu service is not available');\n this.loading.set(false);\n return;\n }\n\n this.menuService.getMenuList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 MenuListComponent received response:', response);\n if (response?.success) {\n console.log('✅ Response successful, setting menu items:', response.data);\n console.log('📊 Total items:', response.total);\n const menuData = response?.data || [];\n this.menuItems.set(menuData);\n this.totalItems.set(response.total || 0);\n\n // Save original order for drag reset functionality\n if (this.originalOrder().length === 0) {\n this.originalOrder.set([...menuData]);\n console.log('💾 Original order saved for drag reset');\n }\n\n this.updateGridData(menuData);\n } else {\n console.error('❌ Response was not successful:', response);\n this.error.set('Failed to load menu items');\n }\n },\n error: (err) => {\n console.error('❌ MenuListComponent error:', err);\n this.error.set(err.message || 'An error occurred while loading menu items');\n },\n complete: () => {\n console.log('MenuListComponent loadMenuItems completed');\n this.loading.set(false);\n }\n });\n }\n\n\n\n\n\n\n\n /**\n * Handle click outside dropdown\n */\n private handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n\n // Check if click is outside any dropdown\n if (!target?.closest('[data-dropdown]') && !target?.closest('[data-action=\"more-actions\"]')) {\n // Close all dropdowns\n document.querySelectorAll('[data-dropdown]').forEach((el: Element) => {\n const dropdown = el as HTMLElement;\n dropdown.classList.add('tw-hidden');\n });\n\n // Reset all button states\n document.querySelectorAll('[data-action=\"more-actions\"]').forEach((el: Element) => {\n const button = el as HTMLElement;\n button.setAttribute('aria-expanded', 'false');\n });\n }\n }\n\n /**\n * Handle dropdown action clicks\n */\n private handleDropdownAction(event: Event): void {\n const target = event.target as HTMLElement;\n const actionButton = target.closest('[data-action]') as HTMLElement;\n\n if (actionButton) {\n const action = actionButton.getAttribute('data-action');\n const itemId = actionButton.getAttribute('data-item-id');\n\n if (action && itemId) {\n event.preventDefault();\n event.stopPropagation();\n\n // Close the dropdown\n const dropdown = actionButton.closest('[data-dropdown]') as HTMLElement;\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n // Handle the action\n switch (action) {\n case 'edit':\n this.editMenuItem(itemId);\n break;\n case 'toggle':\n this.toggleItemStatus(itemId);\n break;\n case 'delete':\n this.deleteMenuItem(itemId);\n break;\n }\n }\n }\n }\n\n\n\n \n\n /**\n * Update grid data\n */\n private updateGridData(menuItems: ICoreSyme[]): void {\n console.log('🔄 updateGridData called with:', menuItems);\n console.log('🔄 Number of items:', menuItems.length);\n \n this.gridConfig.update(config => {\n const newConfig = {\n ...config,\n data: menuItems\n };\n console.log('⚙️ Updated grid config with menu items');\n return newConfig;\n });\n \n console.log('✅ Grid config after update');\n }\n\n\n\n\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSyme>): void {\n console.log('onGridEvent', event);\n switch (event.type) {\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadMenuItems();\n break;\n case 'pageChange': {\n // Handle pagination from data grid\n const pageData = event.data as { page: number; pageSize: number };\n if (pageData) {\n this.currentPage.set(pageData.page);\n this.pageSize.set(pageData.pageSize);\n this.loadMenuItems();\n } else {\n // Handle simple page number\n const page = event.data as number;\n if (page) {\n this.currentPage.set(page);\n this.loadMenuItems();\n }\n }\n break;\n }\n case 'refresh':\n this.onMenuItemRefresh();\n break;\n case 'rowClick':\n this.onMenuItemRowClick(event.data as ICoreSyme);\n break;\n case 'action':\n if (event.action?.key === 'edit') {\n this.editMenuItem(event.data as string);\n } else if (event.action?.key === 'toggle') {\n this.toggleItemStatus(event.data as string);\n } else if (event.action?.key === 'delete') {\n this.deleteMenuItem(event.data as string);\n }\n break;\n case 'rowReorder': {\n this.onRowReorder(event.data as { sourceIndex: number; targetIndex: number; newOrder: ICoreSyme[] });\n break;\n }\n }\n }\n\n /**\n * Handle menu item search\n */\n\n\n\n\n /**\n * Handle menu item refresh\n */\n onMenuItemRefresh(): void {\n this.loadMenuItems();\n }\n\n /**\n * Handle menu item row click\n */\n onMenuItemRowClick(menuItem: ICoreSyme): void {\n // Navigate to edit page or show details\n this.editMenuItem(menuItem._id || '');\n }\n\n /**\n * Handle row reorder event\n */\n onRowReorder(data: { sourceIndex: number; targetIndex: number; newOrder: ICoreSyme[]; allOrders?: ICoreSyme[] }) {\n console.log('🔄 Row reorder event:', data);\n console.log('🔄 Changed items (newOrder):', data.newOrder.length);\n console.log('🔄 All items (allOrders):', data.allOrders?.length || 0);\n\n // Save original order if not already saved\n if (this.originalOrder().length === 0) {\n this.originalOrder.set([...this.menuItems()]);\n }\n\n // Use allOrders if available (complete order), otherwise fallback to newOrder (changed items only)\n const reorderedData = data.allOrders && data.allOrders.length > 0 ? data.allOrders : data.newOrder;\n console.log('🔄 Using reordered data with', reorderedData.length, 'items');\n\n // Update the displayed data with new order\n this.menuItems.set(reorderedData);\n\n // Mark that order has changed\n this.hasOrderChanged.set(true);\n\n // Update grid data\n this.updateGridDataAfterReorder();\n console.log('Updated menuItems:', this.menuItems());\n }\n\n /**\n * Update grid data after reordering\n */\n private updateGridDataAfterReorder() {\n const currentConfig = this.gridConfig();\n this.gridConfig.set({\n ...currentConfig,\n data: this.menuItems()\n });\n }\n\n /**\n * Save menu order using the change sequence API\n * This method is called by the data grid when save-order action is triggered\n * Handles both single-level and multi-level (hierarchical) menu structures\n */\n saveMenuOrder() {\n console.log('💾 Saving menu order...');\n \n // Get all menu items including children (handle both hierarchical and flat structures)\n const allMenuItems = this.getAllMenuItemsIncludingChildren(this.menuItems());\n \n // Update sequence numbers for all items based on their current order\n const itemsWithUpdatedSequences = allMenuItems.map((item, index) => ({\n ...item,\n syme_order_by: index + 1\n }));\n \n // Prepare payload for change sequence API with all menu items (including children)\n const payload = {\n menu_sequences: itemsWithUpdatedSequences.map(item => ({\n syme_id: item._id || '',\n syme_order_by: item.syme_order_by || 1\n }))\n };\n\n console.log('📤 Sending change sequence payload for', itemsWithUpdatedSequences.length, 'items:', payload);\n\n // Call the change sequence API\n this.menuService.changeMenuSequence(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Menu sequence updated successfully for', itemsWithUpdatedSequences.length, 'items');\n this.notificationService.success(`Menu sequence updated successfully for ${itemsWithUpdatedSequences.length} items`);\n // Reset change flag first\n this.hasOrderChanged.set(false);\n // Update original order to current state\n this.originalOrder.set([...this.menuItems()]);\n // Refresh the menu list from server to get updated order\n this.loadMenuItems();\n } else {\n console.error('❌ Failed to update menu sequence:', response);\n this.error.set('Failed to update menu sequence');\n this.notificationService.error('Failed to update menu sequence');\n }\n },\n error: (error) => {\n console.error('❌ Error updating menu sequence:', error);\n this.error.set('Failed to update menu sequence');\n this.notificationService.error(`Error updating menu sequence: ${error.message || 'Unknown error occurred'}`);\n }\n });\n }\n\n /**\n * Get all menu items including children from the current data structure\n * This handles both hierarchical and flat menu structures\n */\n private getAllMenuItemsIncludingChildren(menuItems: ICoreSyme[]): ICoreSyme[] {\n const allItems: ICoreSyme[] = [];\n const processedIds = new Set<string>();\n \n const collectItems = (items: ICoreSyme[]) => {\n items.forEach(item => {\n // Avoid duplicates by checking if item is already processed\n if (item._id && !processedIds.has(item._id)) {\n allItems.push(item);\n processedIds.add(item._id);\n \n // Check if item has children property (for hierarchical data from data grid)\n if ((item as any).children && (item as any).children.length > 0) {\n collectItems((item as any).children);\n }\n }\n });\n };\n \n // For flat data structure (which is what data grid sends), just return all items\n // since they're already in the correct order\n if (this.isFlatDataStructure(menuItems)) {\n console.log('🔄 Detected flat data structure, returning all items as-is');\n return menuItems;\n }\n \n // For hierarchical data structure, collect all items recursively\n collectItems(menuItems);\n \n console.log('🔄 Collected', allItems.length, 'menu items including children');\n console.log('📊 Items structure:', allItems.map(item => ({ \n id: item._id, \n title: item.syme_title, \n parent: item.syme_id_syme,\n hasChildren: (item as any).children ? (item as any).children.length : 0\n })));\n \n return allItems;\n }\n\n /**\n * Check if the data structure is flat (no children property) or hierarchical\n */\n private isFlatDataStructure(menuItems: ICoreSyme[]): boolean {\n // If any item has a children property with items, it's hierarchical\n return !menuItems.some(item => (item as any).children && (item as any).children.length > 0);\n }\n\n /**\n * Reset drag order to original state\n */\n resetDragOrder() {\n console.log('🔄 Resetting drag order to original state');\n\n // Restore the original order\n const originalItems = this.originalOrder();\n if (originalItems.length > 0) {\n this.menuItems.set([...originalItems]);\n this.updateGridDataAfterReorder();\n }\n\n // Reset the change flag\n this.hasOrderChanged.set(false);\n\n console.log('✅ Drag order reset successfully');\n }\n\n /**\n * Check if order has changed\n */\n hasOrderChanges(): boolean {\n return this.hasOrderChanged();\n }\n\n /**\n * Toggle item selection\n */\n toggleItemSelection(itemId: string): void {\n const current = this.selectedItems();\n const index = current.indexOf(itemId);\n\n if (index > -1) {\n current.splice(index, 1);\n } else {\n current.push(itemId);\n }\n\n this.selectedItems.set([...current]);\n }\n\n /**\n * Select all items on current page\n */\n selectAllOnPage(): void {\n // This method is no longer needed with data grid\n // Data grid handles selection internally\n }\n\n /**\n * Clear all selections\n */\n clearSelection(): void {\n this.selectedItems.set([]);\n }\n\n /**\n * Navigate to edit menu form\n */\n editMenuItem(itemId: string): void {\n console.log('🔵 editMenuItem called with:', itemId);\n // Set edit mode and get the menu item by ID\n this.isEditMode.set(true);\n this.getMenuItemById(itemId);\n }\n\n /**\n * Get menu item by ID using the API\n * GET ${coreRoutesUrl?.menu}/byId/:query - payload: MCoreSymeGetByIdPayload, response: menuByIdControllerResponse\n */\n getMenuItemById(itemId: string): void {\n console.log('🔵 getMenuItemById called with:', itemId);\n this.loading.set(true);\n\n this.menuService.getMenuItemById(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Menu item retrieved successfully:', response.data);\n // Store the retrieved menu item data in the signal\n // Handle both single item and array responses\n let menuItem: ICoreSyme | null = null;\n menuItem = response.data || null;\n\n this.retrievedMenuItem.set(menuItem);\n\n // If in edit mode, populate the form with the retrieved data\n if (this.isEditMode() && menuItem) {\n this.populateFormForEdit(menuItem);\n }\n } else {\n this.error.set('Failed to retrieve menu item');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while retrieving the menu item');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Populate form with menu item data for editing\n */\n populateFormForEdit(menuItem: ICoreSyme): void {\n console.log('🔵 populateFormForEdit called with:', menuItem);\n\n // Populate the form with the menu item data\n this.quickAddForm.patchValue({\n syme_title: menuItem.syme_title || '',\n syme_desc: menuItem.syme_desc || '',\n syme_type: (menuItem.syme_type as 'module' | 'section' | 'menu' | 'title') || 'module',\n syme_id_syme: menuItem.syme_id_syme || '',\n syme_path: menuItem.syme_path || '',\n syme_icon: menuItem.syme_icon || '',\n syme_link: menuItem.syme_link || '',\n syme_permissions_id_sygms: menuItem.syme_permissions_id_sygms || [],\n syme_isactive: menuItem.syme_isactive ?? true,\n syme_order_by: menuItem.syme_order_by || 1\n });\n\n // Set the selected parent if this item has a parent\n if (menuItem.syme_id_syme) {\n // Find the parent item in the current menu items\n const parentItem = this.menuItems().find(item => item._id === menuItem.syme_id_syme);\n if (parentItem) {\n this.selectedParentItem.set(parentItem);\n }\n }\n\n console.log('✅ Form populated for editing:', this.quickAddForm.value);\n }\n\n /**\n * Delete menu item\n */\n deleteMenuItem(itemId: string): void {\n console.log('🔵 deleteMenuItem called with:', itemId);\n if (confirm('Are you sure you want to delete this menu item?')) {\n this.loading.set(true);\n\n this.menuService.deleteMenuItem(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMenuItems(); // Reload the list\n } else {\n this.error.set('Failed to delete menu item');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while deleting the menu item');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Delete multiple selected items\n */\n deleteSelectedItems(): void {\n const selected = this.selectedItems();\n\n if (selected.length === 0) {\n return;\n }\n\n if (confirm(`Are you sure you want to delete ${selected.length} selected menu item(s)?`)) {\n this.loading.set(true);\n\n // Use bulk delete service method\n this.menuService.deleteMultipleMenuItems(selected)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Multiple menu items deleted successfully');\n this.loadMenuItems(); // Reload the list\n this.clearSelection();\n } else {\n this.error.set('Failed to delete some menu items');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while deleting menu items');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle menu item status\n */\n toggleItemStatus(itemId: string): void {\n console.log('🔵 toggleItemStatus called with:', itemId);\n this.loading.set(true);\n\n this.menuService.toggleMenuItemStatus(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadMenuItems(); // Reload the list\n } else {\n this.error.set('Failed to toggle menu item status');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while toggling status');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update search term\n */\n onSearchChange(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchTerm.set(value);\n }\n\n /**\n * Navigate to specific page\n */\n goToPage(): void {\n // Data grid handles pagination internally\n }\n\n /**\n * Get menu type display name\n */\n getMenuTypeDisplay(type: string): string {\n const typeMap: Record<string, string> = {\n 'module': 'Module',\n 'section': 'Section',\n 'menu': 'Menu Item',\n 'title': 'Title'\n };\n return typeMap[type] || type;\n }\n\n /**\n * Get status display\n */\n getStatusDisplay(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n /**\n * Get status class for styling\n */\n getStatusClass(isActive: boolean): string {\n return isActive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800';\n }\n\n /**\n * Get menu type class for styling\n */\n getMenuTypeClass(type: string): string {\n switch (type) {\n case 'module': return 'tw-bg-purple-100 tw-text-purple-800';\n case 'section': return 'tw-bg-blue-100 tw-text-blue-800';\n case 'menu': return 'tw-bg-green-100 tw-text-green-800';\n case 'title': return 'tw-bg-gray-100 tw-text-gray-800';\n default: return 'tw-bg-gray-100 tw-text-gray-800';\n }\n }\n\n\n\n /**\n * Check if item is selected\n */\n isItemSelected(itemId: string): boolean {\n return this.selectedItems().includes(itemId);\n }\n\n /**\n * Check if all items on current page are selected\n */\n isAllSelectedOnPage(): boolean {\n // This method is no longer needed with data grid\n // Data grid handles selection internally\n return false;\n }\n\n /**\n * Get pagination range\n */\n getPaginationRange(): number[] {\n // This method is no longer needed with data grid\n // Data grid handles pagination internally\n return [];\n }\n\n\n\n /**\n * Track by function for ngFor\n */\n trackByItemId(index: number, item: ICoreSyme): string {\n return item._id || '';\n }\n\n\n\n /**\n * Quick add or update menu item using reactive form\n */\n quickAddMenuItem() {\n if (this.quickAddForm.invalid) return;\n\n const formValue = this.quickAddForm.value;\n\n // Prepare the menu item using ICoreSyme model structure\n const menuItem: Partial<ICoreSyme> = {\n _id: this.retrievedMenuItem()?._id || '',\n syme_title: formValue.syme_title,\n syme_desc: formValue.syme_desc || '',\n syme_type: formValue.syme_type,\n syme_id_syme: formValue.syme_id_syme || undefined,\n syme_path: formValue.syme_path || '',\n syme_icon: formValue.syme_icon || '',\n syme_link: formValue.syme_link || '',\n syme_order_by: formValue.syme_order_by,\n syme_isactive: formValue.syme_isactive,\n syme_permissions_id_sygms: formValue.syme_permissions_id_sygms || []\n } as any;\n\n // Check if we're in edit mode\n if (this.isEditMode() && this.retrievedMenuItem()) {\n // Update existing menu item\n const itemId = this.retrievedMenuItem()?._id;\n if (itemId) {\n console.log('🔵 Updating menu item:', itemId);\n this.menuService.updateMenuItem(itemId, menuItem).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Menu item updated successfully');\n // Reset form and exit edit mode\n this.resetQuickAddForm();\n this.isEditMode.set(false);\n this.retrievedMenuItem.set(null);\n // Reload menu items\n this.loadMenuItems();\n }\n },\n error: () => {\n this.error.set('Failed to update menu item');\n }\n });\n }\n } else {\n // Create new menu item\n console.log('🔵 Creating new menu item');\n this.menuService.createMenuItem(menuItem).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Menu item created successfully');\n // Reset reactive form with default values\n this.resetQuickAddForm();\n // Reload menu items\n this.loadMenuItems();\n }\n },\n error: () => {\n this.error.set('Failed to create menu item');\n }\n });\n }\n }\n\n /**\n * Reset the quick add form to default values\n */\n resetQuickAddForm(): void {\n // Clear selected parent to return to module creation mode\n this.selectedParentItem.set(null);\n\n // Clear edit mode and retrieved item\n this.isEditMode.set(false);\n this.retrievedMenuItem.set(null);\n\n this.quickAddForm.reset({\n syme_title: '',\n syme_desc: '',\n syme_type: 'module', // Always default to module on reset\n syme_id_syme: '',\n syme_path: '',\n syme_icon: '',\n syme_link: '',\n syme_isactive: true,\n syme_order_by: 1,\n syme_permissions_id_sygms: []\n });\n }\n\n /**\n * Handle add child button click from row action\n */\n onAddChild(parentItem: ICoreSyme): void {\n console.log('🔵 onAddChild called with:', parentItem);\n console.log('🔵 Parent title:', parentItem.syme_title);\n\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.retrievedMenuItem.set(null);\n\n // Set the selected parent item first using signal\n this.selectedParentItem.set(parentItem);\n console.log('🔵 selectedParentItem set to:', this.selectedParentItem());\n\n // Update form with parent context (don't call resetQuickAddForm as it clears the parent)\n this.quickAddForm.patchValue({\n syme_title: '',\n syme_desc: '',\n syme_type: 'section', // Default to section for child items\n syme_id_syme: parentItem._id,\n syme_path: '',\n syme_icon: '',\n syme_link: '',\n syme_isactive: true,\n syme_order_by: 1,\n syme_permissions_id_sygms: []\n });\n\n console.log('🔵 Form updated, parent should be visible:', this.selectedParentItem()?.syme_title);\n }\n\n /**\n * Handle row reorder event\n */\n\n\n /**\n * Toggle dropdown visibility\n */\n toggleDropdown(itemId: string) {\n // Close all other dropdowns first\n document.querySelectorAll('.dropdown-menu').forEach(menu => {\n if (menu.getAttribute('data-dropdown') !== itemId) {\n menu.classList.add('tw-hidden');\n }\n });\n\n // Toggle the clicked dropdown\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.toggle('tw-hidden');\n }\n }\n\n /**\n * Handle menu action clicks\n */\n handleMenuAction(action: string, itemId: string) {\n const item = this.menuItems().find(item => item._id === itemId);\n if (!item) return;\n\n // Close the dropdown\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n // Handle the action\n switch (action) {\n case 'addChild':\n this.addChildMenuItem(itemId, item);\n break;\n case 'edit':\n this.editMenuItem(itemId);\n break;\n case 'toggle':\n this.toggleItemStatus(itemId);\n break;\n case 'delete':\n this.deleteMenuItem(itemId);\n break;\n }\n }\n\n /**\n * Add child menu item - sets parent and scrolls to form\n */\n addChildMenuItem(parentId: string, parentItem: ICoreSyme) {\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.retrievedMenuItem.set(null);\n\n // Set the parent ID in the form\n this.quickAddForm.patchValue({\n syme_id_syme: parentId\n });\n\n // Update UI to show which parent is selected\n this.selectedParentItem.set(parentItem);\n\n // Scroll to the form\n const formElement = document.querySelector('.tw-px-6.tw-py-4.tw-border-b');\n if (formElement) {\n formElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n\n // Focus on the title input\n setTimeout(() => {\n const titleInput = document.getElementById('syme_title');\n if (titleInput) {\n titleInput.focus();\n }\n }, 300);\n }\n\n /**\n * Clear selected parent\n */\n clearSelectedParent() {\n this.selectedParentItem.set(null);\n this.quickAddForm.patchValue({\n syme_id_syme: '',\n syme_type: 'module' // Reset to module when no parent\n });\n }\n\n /**\n * Helper methods for templates\n */\n getMenuTypeLabel(type: string): string {\n const typeMap: { [key: string]: string } = {\n 'module': 'Module',\n 'section': 'Section',\n 'menu': 'Menu Item',\n 'title': 'Title'\n };\n return typeMap[type] || 'Unknown';\n }\n\n\n\n\n\n\n\n /**\n * Test method to load sample data for debugging\n */\n loadTestData(): void {\n console.log('🧪 Loading test data manually...');\n const testData: ICoreSyme[] = [\n {\n _id: 'test-1',\n syme_title: 'Dashboard',\n syme_desc: 'Main dashboard module',\n syme_type: 'module' as 'module' | 'section' | 'menu' | 'title',\n syme_path: '/dashboard',\n syme_icon: 'dashboard',\n syme_link: '',\n syme_isactive: true,\n syme_order_by: 1,\n syme_id_syme: ''\n },\n {\n _id: 'test-2',\n syme_title: 'User Management',\n syme_desc: 'Manage users and permissions',\n syme_type: 'section' as 'module' | 'section' | 'menu' | 'title',\n syme_path: '/users',\n syme_icon: 'people',\n syme_link: '',\n syme_isactive: true,\n syme_order_by: 1,\n syme_id_syme: 'test-1'\n },\n {\n _id: 'test-3',\n syme_title: 'Settings',\n syme_desc: 'Application settings',\n syme_type: 'menu' as 'module' | 'section' | 'menu' | 'title',\n syme_path: '/settings',\n syme_icon: 'settings',\n syme_link: '/settings',\n syme_isactive: true,\n syme_order_by: 2,\n syme_id_syme: 'test-1'\n }\n ];\n\n this.loading.set(false);\n this.error.set(null);\n this.menuItems.set(testData);\n this.totalItems.set(testData.length);\n\n\n\n this.updateGridData(testData);\n console.log('✅ Test data loaded successfully');\n }\n\n /**\n * Load user rights type ID from general master types\n */\n private loadUserRightsTypeId(): void {\n this.generalMasterTypeService.getTypeList({\n sygmt_code: \"user_rights\"\n })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response?.success && response.data) {\n const userRightsType = response.data.find(type =>\n type.sygmt_code === 'user_rights' || type.sygmt_title?.toLowerCase().includes('user_rights')\n );\n if (userRightsType) {\n this.userRightsTypeId.set(userRightsType._id || null);\n this.loadPermissions();\n } else {\n this.error.set('User rights type not found in general master types');\n }\n }\n },\n error: (err) => {\n this.error.set('Failed to load user rights type');\n }\n });\n }\n\n /**\n * Load permissions from general master\n */\n private loadPermissions(): void {\n const typeId = this.userRightsTypeId();\n if (!typeId) {\n this.error.set('User rights type not found. Please ensure the \"user_rights\" type exists in general master types.');\n return;\n }\n\n const payload: IGeneralMasterListRequest = { sygms_id_sygmt: typeId };\n this.generalMasterService.getMasterList(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response?.success && response.data) {\n this.permissions.set(response.data);\n if (this.error()?.includes('permissions')) {\n this.error.set(null);\n }\n } else {\n this.permissions.set([]);\n this.error.set('No permissions found. Please ensure permissions are configured in general master.');\n }\n },\n error: (err) => {\n this.permissions.set([]);\n this.error.set('Failed to load permissions from general master. Please check your configuration.');\n }\n });\n }\n\n /**\n * Get permission names from permission IDs\n */\n getPermissionNames(permissionIds: string[]): string {\n if (!permissionIds || permissionIds.length === 0) {\n return 'No permissions';\n }\n \n const permissionNames = permissionIds\n .map(id => {\n const permission = this.permissions().find(p => p._id === id);\n return permission ? (permission.sygms_title || permission.sygms_code || 'Unknown') : 'Unknown';\n })\n .filter(name => name !== 'Unknown');\n \n return permissionNames.length > 0 ? permissionNames.join(', ') : 'No valid permissions';\n }\n\n /**\n * Get permission by ID\n */\n getPermissionById(permissionId: string): ICoreSygms | undefined {\n return this.permissions().find(p => p._id === permissionId);\n }\n\n /**\n * Get all permission names for tooltip\n */\n getAllPermissionNames(permissionIds: string[]): string {\n if (!permissionIds || permissionIds.length === 0) {\n return 'No permissions';\n }\n \n const permissionNames = permissionIds\n .map(id => {\n const permission = this.permissions().find(p => p._id === id);\n return permission ? (permission.sygms_title || permission.sygms_code || 'Unknown') : 'Unknown';\n })\n .filter(name => name !== 'Unknown');\n \n return permissionNames.length > 0 ? permissionNames.join(', ') : 'No valid permissions';\n }\n\n /**\n * Handle menu type change - clear permissions for non-menu types\n */\n onMenuTypeChange(): void {\n const currentType = this.quickAddForm.get('syme_type')?.value;\n if (currentType !== 'menu') {\n this.quickAddForm.patchValue({\n syme_permissions_id_sygms: []\n });\n }\n }\n\n /**\n * Get dropdown items for menu actions\n */\n getDropdownItems(menuItem: ICoreSyme): DropdownItem[] {\n return [\n {\n id: 'addChild',\n label: 'Add Child',\n icon: 'add',\n disabled: false\n },\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n disabled: false\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n disabled: false\n },\n {\n id: 'toggle',\n label: menuItem.syme_isactive ? 'Deactivate' : 'Activate',\n icon: menuItem.syme_isactive ? 'block' : 'check_circle',\n disabled: false\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, menuItem: ICoreSyme): void {\n switch (item.id) {\n case 'addChild':\n this.addChildMenuItem(menuItem._id || '', menuItem);\n break;\n case 'edit':\n this.editMenuItem(menuItem._id || '');\n break;\n case 'delete':\n this.deleteMenuItem(menuItem._id || '');\n break;\n case 'toggle':\n this.toggleItemStatus(menuItem._id || '');\n break;\n }\n }\n\n} ","<!-- Menu List Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-3\">\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Menu Item' : 'Quick Add Menu Item' }}</h6>\n </div>\n @if (selectedParentItem()) {\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-blue-50 tw-border tw-border-blue-200 tw-px-4 tw-py-2 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">account_tree</cide-ele-icon>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-text-sm tw-text-blue-600 tw-font-medium\">{{ isEditMode() ? 'Parent:' : 'Creating child under:' }}</span>\n <span class=\"tw-text-sm tw-text-blue-800 tw-font-semibold\">{{ selectedParentItem()?.syme_title }}</span>\n </div>\n <button \n cideEleButton \n variant=\"ghost\" \n size=\"xs\" \n type=\"button\" \n (click)=\"clearSelectedParent()\" \n class=\"tw-text-blue-400 hover:tw-text-blue-600\">\n <svg class=\"tw-w-4 tw-h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </button>\n </div>\n }\n </div>\n \n <form [formGroup]=\"quickAddForm\" (ngSubmit)=\"quickAddMenuItem()\">\n <!-- First Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-mb-3\">\n <!-- Menu Title -->\n <div>\n <cide-ele-input \n id=\"syme_title\" \n label=\"Title\" \n formControlName=\"syme_title\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Menu Type -->\n <div>\n <cide-ele-select \n label=\"Type*\" \n [options]=\"menuTypeOptions()\" \n formControlName=\"syme_type\"\n placeholder=\"Select type\"\n size=\"sm\"\n (ngModelChange)=\"onMenuTypeChange()\">\n </cide-ele-select>\n </div>\n \n <!-- Path -->\n <div>\n <cide-ele-input \n id=\"quickPath\" \n type=\"text\"\n label=\"Path\" \n formControlName=\"syme_path\"\n placeholder=\"/path/to/route\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Icon -->\n <div>\n <cide-ele-input \n id=\"quickIcon\" \n type=\"text\"\n label=\"Icon\" \n formControlName=\"syme_icon\"\n placeholder=\"Icon name\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Empty div for spacing -->\n <div></div>\n </div>\n \n <!-- Second Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-items-end\">\n <!-- Description -->\n <div>\n <cide-ele-textarea \n id=\"syme_desc\" \n label=\"Description\" \n formControlName=\"syme_desc\"\n placeholder=\"Menu description\"\n rows=\"2\"\n size=\"sm\">\n </cide-ele-textarea>\n </div>\n \n <!-- Permissions (only show for menu and title types) -->\n @if (quickAddForm.get('syme_type')?.value === 'menu') {\n <div>\n <cide-ele-select \n label=\"Permissions\" \n [options]=\"permissionOptions()\" \n formControlName=\"syme_permissions_id_sygms\"\n placeholder=\"Select permissions for this menu\"\n [multiple]=\"true\"\n size=\"sm\">\n </cide-ele-select>\n </div>\n }\n \n <!-- Link -->\n <div>\n <cide-ele-input \n id=\"quickLink\" \n type=\"text\"\n label=\"Link\" \n formControlName=\"syme_link\"\n placeholder=\"External link\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Active Status and Action Buttons -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <!-- Active Checkbox -->\n <cide-ele-input \n id=\"quickIsActive\"\n type=\"checkbox\"\n label=\"Active\"\n formControlName=\"syme_isactive\"\n size=\"sm\">\n </cide-ele-input>\n \n <!-- Action Buttons -->\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n [disabled]=\"quickAddForm.invalid\"\n class=\"tw-px-2 tw-py-1 tw-w-20\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Add' }}\n </button>\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\"\n (click)=\"resetQuickAddForm()\"\n class=\"tw-px-2 tw-py-1 tw-w-16\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">refresh</cide-ele-icon>\n Reset\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative tw-p-0\">\n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-w-full tw-overflow-auto\">\n \n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [dragDropEnabled]=\"true\" \n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n\n </div>\n </div>\n\n</div>\n\n<!-- \n Angular Template References for Grid Renderers (Best Practice)\n \n These ng-template elements represent the Angular best practice for custom rendering.\n They provide:\n - Type safety with template context\n - Component lifecycle integration\n - Change detection optimization\n - Proper event handling\n - Accessibility features\n \n Note: Current data grid uses string renderers for compatibility.\n Templates are maintained for future component enhancement.\n-->\n\n\n\n<!-- Menu Details Renderer Template -->\n<ng-template #menuDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Menu Icon -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon \n class=\"tw-text-gray-400\" \n size=\"xs\">\n {{ row.syme_icon || 'folder_open' }}\n </cide-ele-icon>\n </div>\n \n <!-- Menu Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-text-xs tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.syme_title\">\n {{ row.syme_title || 'Untitled' }}\n </div>\n @if (row.syme_desc) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.syme_desc\">\n {{ row.syme_desc }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Menu Type Renderer Template -->\n<ng-template #menuTypeRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"getMenuTypeClass(row.syme_type)\">\n {{ getMenuTypeLabel(row.syme_type) }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown \n [items]=\"getDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template>\n\n<!-- Permissions Renderer Template -->\n<ng-template #permissionsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-flex-wrap tw-gap-1 tw-max-w-full tw-items-center\">\n @if (row.syme_type === 'menu') {\n @if (row.syme_permissions_id_sygms && row.syme_permissions_id_sygms.length > 0) {\n @for (permissionId of row.syme_permissions_id_sygms.slice(0, 3); track permissionId) {\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-blue-100 tw-text-blue-800 tw-whitespace-nowrap tw-h-5\">\n {{ getPermissionById(permissionId)?.sygms_title || getPermissionById(permissionId)?.sygms_code || 'Unknown' }}\n </span>\n }\n @if (row.syme_permissions_id_sygms.length > 3) {\n <span \n class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-gray-100 tw-text-gray-600 tw-whitespace-nowrap tw-cursor-help tw-h-5\"\n [title]=\"getAllPermissionNames(row.syme_permissions_id_sygms)\">\n +{{ row.syme_permissions_id_sygms.length - 3 }} more\n </span>\n }\n } @else {\n <span class=\"tw-text-xs tw-text-gray-500 tw-h-5 tw-flex tw-items-center\">No permissions</span>\n }\n } @else {\n <!-- Show N/A for module, section, and title types -->\n <span class=\"tw-text-xs tw-text-gray-400 tw-h-5 tw-flex tw-items-center\">N/A</span>\n }\n </div>\n</ng-template>\n\n","/*\r\n * Menu Management Module Exports\r\n */\r\n\r\n// Components\r\nexport * from './components/menu-list/menu-list.component';\r\n\r\n// Services\r\nexport * from './services/menu-management.service';","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl, \r\n ICoreSydept, \r\n MDepartmentDeletePayload, \r\n MDepartmentGetByIdPayload, \r\n departmentByIdControllerResponse, \r\n departmentDeleteControllerResponse, \r\n departmentControllerResponse,\r\n MDepartment,\r\n MDepartmentToggleStatusPayload,\r\n departmentToggleStatusControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideCoreDepartmentManagementService {\r\n private departmentListSubject = new BehaviorSubject<ICoreSydept[]>([]);\r\n public departmentList$ = this.departmentListSubject.asObservable();\r\n\r\n constructor(private http: HttpClient) {\r\n console.log('CideCoreDepartmentManagementService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get department list from API\r\n */\r\n getDepartmentList(body: MDepartment): Observable<departmentControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<departmentControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, query]))\r\n .pipe(\r\n tap((response: departmentControllerResponse) => {\r\n if (response?.success) {\r\n this.departmentListSubject.next(response?.data || []);\r\n }\r\n }),\r\n catchError(error => {\r\n console.error('CideCoreDepartmentManagementService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get department list from cache (if available)\r\n */\r\n getDepartmentListFromCache(): ICoreSydept[] {\r\n return this.departmentListSubject.value;\r\n }\r\n\r\n /**\r\n * Create new department\r\n * POST ${coreRoutesUrl?.department} - payload: MDepartmentInsertUpdatePayload, response: departmentInsertUpdateControllerResponse\r\n */\r\n createDepartment(department: ICoreSydept): Observable<departmentControllerResponse> {\r\n console.log('Creating department:', department);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department]);\r\n return this.http.post<departmentControllerResponse>(url, department)\r\n .pipe(\r\n tap((response: departmentControllerResponse) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing department\r\n * POST ${coreRoutesUrl?.department} - payload: MDepartmentInsertUpdatePayload, response: departmentInsertUpdateControllerResponse\r\n */\r\n updateDepartment(id: string, department: ICoreSydept): Observable<departmentControllerResponse> {\r\n console.log('Updating department:', id, department);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department]);\r\n return this.http.post<departmentControllerResponse>(url, department)\r\n .pipe(\r\n tap((response: departmentControllerResponse) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get department by ID\r\n * GET ${coreRoutesUrl?.department}/byId/:query - payload: MDepartmentGetByIdPayload, response: departmentByIdControllerResponse\r\n */\r\n getDepartmentById(id: string): Observable<departmentByIdControllerResponse> {\r\n console.log('Getting department by ID:', id);\r\n const payload: MDepartmentGetByIdPayload = { sydept_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, 'byId', query]);\r\n return this.http.get<departmentByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete department\r\n * DELETE ${coreRoutesUrl?.department}/:query - payload: MDepartmentDeletePayload, response: departmentDeleteControllerResponse\r\n */\r\n deleteDepartment(id: string): Observable<departmentDeleteControllerResponse> {\r\n const payload: MDepartmentDeletePayload = { sydept_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, query]);\r\n return this.http.delete<departmentDeleteControllerResponse>(url)\r\n .pipe(\r\n tap((response: departmentDeleteControllerResponse) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete multiple departments\r\n */\r\n deleteMultipleDepartments(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\r\n console.log('Deleting multiple departments:', ids);\r\n const payload = { ids };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, query]);\r\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\r\n .pipe(\r\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle department active status\r\n */\r\n toggleDepartmentStatus(payload: MDepartmentToggleStatusPayload): Observable<departmentToggleStatusControllerResponse> {\r\n const query = generateStringFromObject(payload); \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.department, 'toggleStatus', query]);\r\n return this.http.put<departmentToggleStatusControllerResponse>(url, {})\r\n .pipe(\r\n tap((response: departmentToggleStatusControllerResponse) => {\r\n if (response.success) {\r\n this.refreshDepartmentList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Find department by ID\r\n */\r\n findDepartmentById(id: string, items: ICoreSydept[] = this.departmentListSubject.value): ICoreSydept | null {\r\n for (const item of items) {\r\n if (item._id === id) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Get parent departments for dropdown selection\r\n */\r\n getParentDepartments(excludeId?: string): ICoreSydept[] {\r\n const allItems: ICoreSydept[] = [];\r\n\r\n const flattenItems = (items: ICoreSydept[], level: number = 0) => {\r\n items.forEach(item => {\r\n if (item._id !== excludeId) {\r\n allItems.push({\r\n ...item,\r\n sydept_name: ' '.repeat(level) + item.sydept_name\r\n });\r\n }\r\n });\r\n };\r\n\r\n flattenItems(this.departmentListSubject.value);\r\n return allItems;\r\n }\r\n\r\n /**\r\n * Refresh department list from server\r\n */\r\n private refreshDepartmentList(): void {\r\n const defaultBody = {\r\n pageIndex: 1,\r\n pageSize: 10\r\n };\r\n this.getDepartmentList(defaultBody).subscribe({\r\n next: () => {\r\n console.log('Department list refreshed successfully');\r\n },\r\n error: (error) => {\r\n console.error('Error refreshing department list:', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Department Management Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ICoreSydept } from 'cloud-ide-lms-model';\nimport { CideCoreDepartmentManagementService } from '../../services/department-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideLytSharedWrapperComponent } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, ConfirmationService, NotificationService, CideEleGlobalNotificationsComponent } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\n\n@Component({\n selector: 'cide-core-department-list',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleGlobalNotificationsComponent,\n CideLytSharedWrapperComponent\n ],\n templateUrl: './department-list.component.html',\n styleUrls: []\n})\nexport class CideCoreDepartmentListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private departmentService = inject(CideCoreDepartmentManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private confirmationService = inject(ConfirmationService);\n private notificationService = inject(NotificationService);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n departmentDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('departmentDetailsRendererTemplate');\n departmentStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('departmentStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n departments = signal<ICoreSydept[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Modern reactive forms with signals\n selectedParentDepartment = signal<ICoreSydept | null>(null);\n\n // Retrieved department data\n retrievedDepartment = signal<ICoreSydept | null>(null);\n\n // Edit mode flag\n isEditMode = signal(false);\n\n // Server-side pagination state\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive form with typed controls\n quickAddForm = this.fb.group({\n sydept_code: this.fb.control('', []),\n sydept_name: this.fb.control('', []),\n sydept_description: this.fb.control('', []),\n sydept_isactive: this.fb.control(true, []),\n sydept_department_id_sydept: this.fb.control(''),\n sydept_entity_id_syen: this.fb.control(this.appState.getActiveEntityId() || '', [])\n });\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSydept>>({\n id: 'department-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Department',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'departmentDetailsRenderer'\n },\n {\n key: 'sydept_code',\n header: 'Code',\n type: 'text',\n width: '120px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'sydept_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'departmentStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '60px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'sydept_department_id_sydept',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'expanded',\n hasChildrenKey: 'hasChildren'\n },\n trackBy: '_id',\n pagination: {\n enabled: false,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search departments...',\n searchableColumns: ['sydept_name', 'sydept_code', 'sydept_description'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none',\n onRefresh: 'onDepartmentRefresh'\n });\n\n // Template renderers using Angular best practices\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\n departmentDetailsRenderer: this.departmentDetailsRendererTemplate(),\n departmentStatusRenderer: this.departmentStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Get template renderers for data grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return this.templateRenderers();\n }\n\n // Mixed renderers (templates + string functions)\n customRenderers = computed(() => ({\n ...this.templateRenderers()\n }));\n\n /**\n * Get custom renderers adapted for current data grid compatibility\n */\n getCustomRenderers(): Record<string, (value: unknown, row: ICoreSydept) => string> {\n return {};\n }\n\n // Action handlers for grid actions\n actionHandlers = {\n onEditDepartment: (row: ICoreSydept) => this.editDepartment(row._id || ''),\n onToggleDepartment: (row: ICoreSydept) => this.toggleDepartmentStatus(row._id || ''),\n onDeleteDepartment: (row: ICoreSydept) => this.deleteDepartment(row._id || ''),\n onDepartmentRowClick: (row: ICoreSydept) => this.onDepartmentRowClick(row),\n onDepartmentRefresh: () => this.onDepartmentRefresh(),\n onAddChild: (row: ICoreSydept) => this.onAddChild(row)\n };\n\n // Computed properties\n filteredItems = computed(() => {\n const items = this.departments();\n const search = this.searchTerm()?.toLowerCase();\n\n if (!search) return items;\n\n return items.filter(item => {\n return item.sydept_name?.toLowerCase().includes(search) ||\n item.sydept_code?.toLowerCase().includes(search) ||\n item.sydept_description?.toLowerCase().includes(search);\n });\n });\n\n hasSelection = computed(() => this.selectedItems().length > 0);\n\n // Pagination computed properties\n totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n hasNextPage = computed(() => this.currentPage() < this.totalPages());\n hasPreviousPage = computed(() => this.currentPage() > 1);\n\n // Modern constructor with effects for initialization\n constructor() {\n this.initializeComponent();\n this.destroyRef.onDestroy(() => {\n this.cleanupEventListeners();\n });\n }\n\n /**\n * Initialize component with modern patterns\n */\n private initializeComponent(): void {\n console.log('CideCoreDepartmentListComponent initialized with modern Angular patterns');\n this.loadDepartments();\n this.setupEventListeners();\n this.exposeGlobalFunctions();\n }\n\n /**\n * Setup event listeners for dropdown interactions\n */\n private setupEventListeners(): void {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n document.addEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n document.removeEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Expose global functions for dropdown interactions\n */\n private exposeGlobalFunctions(): void {\n if (typeof window !== 'undefined') {\n (window as unknown as { toggleDropdown: (id: string) => void }).toggleDropdown = this.toggleDropdown.bind(this);\n (window as unknown as { handleDepartmentAction: (action: string, id: string) => void }).handleDepartmentAction = this.handleDepartmentAction.bind(this);\n }\n }\n\n /**\n * Load departments from service\n */\n loadDepartments(): void {\n console.log('🚀 CideCoreDepartmentListComponent.loadDepartments() called');\n this.loading.set(true);\n this.error.set(null);\n\n const requestBody = {\n total: this.totalItems(),\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n query: this.searchTerm()\n };\n console.log('📋 Request body:', requestBody);\n\n if (!this.departmentService) {\n console.error('❌ DepartmentService is not available');\n this.error.set('Department service is not available');\n this.loading.set(false);\n return;\n }\n\n this.departmentService.getDepartmentList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 CideCoreDepartmentListComponent received response:', response);\n if (response?.success) {\n console.log('✅ Response successful, setting departments:', response.data);\n const departmentData = response?.data || [];\n this.departments.set(departmentData);\n this.totalItems.set(response.total || 0);\n this.updateGridData(departmentData);\n } else {\n console.error('❌ Response was not successful:', response);\n this.error.set('Failed to load departments');\n }\n },\n error: (err) => {\n console.error('❌ CideCoreDepartmentListComponent error:', err);\n this.error.set(err.message || 'An error occurred while loading departments');\n },\n complete: () => {\n console.log('CideCoreDepartmentListComponent loadDepartments completed');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(departments: ICoreSydept[]): void {\n console.log('🔄 updateGridData called with:', departments);\n \n this.gridConfig.update(config => {\n const newConfig = {\n ...config,\n data: departments\n };\n console.log('⚙️ Updated grid config with departments');\n return newConfig;\n });\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSydept>): void {\n console.log('onGridEvent', event);\n switch (event.type) {\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadDepartments();\n break;\n case 'pageChange': {\n const pageData = event.data as { page: number; pageSize: number };\n if (pageData) {\n this.currentPage.set(pageData.page);\n this.pageSize.set(pageData.pageSize);\n this.loadDepartments();\n } else {\n const page = event.data as number;\n if (page) {\n this.currentPage.set(page);\n this.loadDepartments();\n }\n }\n break;\n }\n case 'refresh':\n this.onDepartmentRefresh();\n break;\n case 'rowClick':\n this.onDepartmentRowClick(event.data as ICoreSydept);\n break;\n case 'action':\n if (event.action?.key === 'edit') {\n this.editDepartment(event.data as string);\n } else if (event.action?.key === 'toggle') {\n this.toggleDepartmentStatus(event.data as string);\n } else if (event.action?.key === 'delete') {\n this.deleteDepartment(event.data as string);\n }\n break;\n }\n }\n\n /**\n * Handle department refresh\n */\n onDepartmentRefresh(): void {\n this.loadDepartments();\n }\n\n /**\n * Handle department row click\n */\n onDepartmentRowClick(department: ICoreSydept): void {\n this.editDepartment(department._id || '');\n }\n\n /**\n * Navigate to edit department form\n */\n editDepartment(itemId: string): void {\n console.log('🔵 editDepartment called with:', itemId);\n this.isEditMode.set(true);\n this.getDepartmentById(itemId);\n }\n\n /**\n * Get department by ID using the API\n */\n getDepartmentById(itemId: string): void {\n console.log('🔵 getDepartmentById called with:', itemId);\n this.loading.set(true);\n\n this.departmentService.getDepartmentById(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Department retrieved successfully:', response.data);\n let department: ICoreSydept | null = null;\n department = response.data || null;\n\n this.retrievedDepartment.set(department);\n\n if (this.isEditMode() && department) {\n this.populateFormForEdit(department);\n }\n } else {\n this.error.set('Failed to retrieve department');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while retrieving the department');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Populate form with department data for editing\n */\n populateFormForEdit(department: ICoreSydept): void {\n console.log('🔵 populateFormForEdit called with:', department);\n\n this.quickAddForm.patchValue({\n sydept_code: department.sydept_code || '',\n sydept_name: department.sydept_name || '',\n sydept_description: department.sydept_description || '',\n sydept_isactive: department.sydept_isactive ?? true,\n sydept_department_id_sydept: department.sydept_department_id_sydept || '',\n sydept_entity_id_syen: department.sydept_entity_id_syen || ''\n });\n\n if (department.sydept_department_id_sydept) {\n const parentDepartment = this.departments().find(item => item._id === department.sydept_department_id_sydept);\n if (parentDepartment) {\n this.selectedParentDepartment.set(parentDepartment);\n }\n }\n\n console.log('✅ Form populated for editing:', this.quickAddForm.value);\n }\n\n /**\n * Delete department\n */\n async deleteDepartment(itemId: string): Promise<void> {\n console.log('🔵 deleteDepartment called with:', itemId);\n \n // Find the department name for better confirmation message\n const department = this.departments().find(d => d._id === itemId);\n const departmentName = department?.sydept_name || 'this department';\n \n try {\n const confirmed = await this.confirmationService.confirmDelete(departmentName);\n \n if (confirmed) {\n this.loading.set(true);\n\n this.departmentService.deleteDepartment(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success(`Department \"${departmentName}\" deleted successfully`);\n this.loadDepartments();\n } else {\n this.notificationService.error('Failed to delete department');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'An error occurred while deleting the department');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n } catch (error) {\n console.log('User cancelled deletion');\n }\n }\n\n /**\n * Toggle department status\n */\n toggleDepartmentStatus(itemId: string): void {\n console.log('🔵 toggleDepartmentStatus called with:', itemId);\n \n // Find the department for better notification message\n const department = this.departments().find(d => d._id === itemId);\n const departmentName = department?.sydept_name || 'department';\n const newStatus = department?.sydept_isactive ? 'inactive' : 'active';\n \n this.loading.set(true);\n\n this.departmentService.toggleDepartmentStatus({ sydept_id: itemId })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success(`Department \"${departmentName}\" ${newStatus} successfully`);\n this.loadDepartments();\n } else {\n this.notificationService.error('Failed to toggle department status');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'An error occurred while toggling status');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Quick add or update department using reactive form\n */\n quickAddDepartment() {\n if (this.quickAddForm.invalid) return;\n\n const formValue = this.quickAddForm.value;\n\n const department: Partial<ICoreSydept> = {\n _id: this.retrievedDepartment()?._id || '',\n sydept_code: formValue.sydept_code,\n sydept_name: formValue.sydept_name,\n sydept_description: formValue.sydept_description || '',\n sydept_isactive: formValue.sydept_isactive,\n sydept_department_id_sydept: formValue.sydept_department_id_sydept || undefined,\n sydept_entity_id_syen: formValue.sydept_entity_id_syen\n };\n\n if (this.isEditMode() && this.retrievedDepartment()) {\n const itemId = this.retrievedDepartment()?._id;\n if (itemId) {\n console.log('🔵 Updating department:', itemId);\n this.departmentService.updateDepartment(itemId, department).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Department updated successfully');\n this.notificationService.success(`Department \"${department.sydept_name}\" updated successfully`);\n this.resetQuickAddForm();\n this.isEditMode.set(false);\n this.retrievedDepartment.set(null);\n this.loadDepartments();\n } else {\n this.notificationService.error('Failed to update department');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'Failed to update department');\n }\n });\n }\n } else {\n console.log('🔵 Creating new department');\n this.departmentService.createDepartment(department).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Department created successfully');\n this.notificationService.success(`Department \"${department.sydept_name}\" created successfully`);\n this.resetQuickAddForm();\n this.loadDepartments();\n } else {\n this.notificationService.error('Failed to create department');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'Failed to create department');\n }\n });\n }\n }\n\n /**\n * Reset the quick add form to default values\n */\n resetQuickAddForm(): void {\n this.selectedParentDepartment.set(null);\n this.isEditMode.set(false);\n this.retrievedDepartment.set(null);\n\n this.quickAddForm.reset({\n sydept_code: '',\n sydept_name: '',\n sydept_description: '',\n sydept_isactive: true,\n sydept_department_id_sydept: '',\n sydept_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n }\n\n /**\n * Handle adding a child department\n */\n onAddChild(parentItem: ICoreSydept): void {\n console.log('🔵 onAddChild called with:', parentItem);\n console.log('🔵 Parent name:', parentItem.sydept_name);\n\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.retrievedDepartment.set(null);\n\n // Set the selected parent item first using signal\n this.selectedParentDepartment.set(parentItem);\n console.log('🔵 selectedParentDepartment set to:', this.selectedParentDepartment());\n\n // Update form with parent context (don't call resetQuickAddForm as it clears the parent)\n this.quickAddForm.patchValue({\n sydept_code: '',\n sydept_name: '',\n sydept_description: '',\n sydept_isactive: true,\n sydept_department_id_sydept: parentItem._id,\n sydept_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n\n console.log('🔵 Form updated, parent should be visible:', this.selectedParentDepartment()?.sydept_name);\n }\n\n /**\n * Clear selected parent department\n */\n clearSelectedParent() {\n this.selectedParentDepartment.set(null);\n this.quickAddForm.patchValue({\n sydept_department_id_sydept: ''\n });\n }\n\n /**\n * Handle click outside dropdown\n */\n private handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n\n if (!target?.closest('[data-dropdown]') && !target?.closest('[data-action=\"more-actions\"]')) {\n document.querySelectorAll('[data-dropdown]').forEach((el: Element) => {\n const dropdown = el as HTMLElement;\n dropdown.classList.add('tw-hidden');\n });\n\n document.querySelectorAll('[data-action=\"more-actions\"]').forEach((el: Element) => {\n const button = el as HTMLElement;\n button.setAttribute('aria-expanded', 'false');\n });\n }\n }\n\n /**\n * Handle dropdown action clicks\n */\n private handleDropdownAction(event: Event): void {\n const target = event.target as HTMLElement;\n const actionButton = target.closest('[data-action]') as HTMLElement;\n\n if (actionButton) {\n const action = actionButton.getAttribute('data-action');\n const itemId = actionButton.getAttribute('data-item-id');\n\n if (action && itemId) {\n event.preventDefault();\n event.stopPropagation();\n\n const dropdown = actionButton.closest('[data-dropdown]') as HTMLElement;\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editDepartment(itemId);\n break;\n case 'toggle':\n this.toggleDepartmentStatus(itemId);\n break;\n case 'delete':\n this.deleteDepartment(itemId);\n break;\n }\n }\n }\n }\n\n /**\n * Toggle dropdown visibility\n */\n toggleDropdown(itemId: string) {\n document.querySelectorAll('.dropdown-menu').forEach(menu => {\n if (menu.getAttribute('data-dropdown') !== itemId) {\n menu.classList.add('tw-hidden');\n }\n });\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.toggle('tw-hidden');\n }\n }\n\n /**\n * Handle department action clicks\n */\n handleDepartmentAction(action: string, itemId: string) {\n const item = this.departments().find(item => item._id === itemId);\n if (!item) return;\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editDepartment(itemId);\n break;\n case 'toggle':\n this.toggleDepartmentStatus(itemId);\n break;\n case 'delete':\n this.deleteDepartment(itemId);\n break;\n }\n }\n\n /**\n * Get status display\n */\n getStatusDisplay(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n /**\n * Get status class for styling\n */\n getStatusClass(isActive: boolean): string {\n return isActive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800';\n }\n\n /**\n * Generate dropdown items for department actions\n */\n getDropdownItems(row: ICoreSydept): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'addChild',\n label: 'Add Child',\n icon: 'add',\n iconColor: 'tw-text-blue-400',\n textColor: 'tw-text-blue-600',\n hoverBgColor: 'hover:tw-bg-blue-50'\n },\n {\n id: 'toggle',\n label: row.sydept_isactive ? 'Deactivate' : 'Activate',\n icon: 'power_settings_new',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n iconColor: 'tw-text-red-400',\n textColor: 'tw-text-red-600',\n hoverBgColor: 'hover:tw-bg-red-50'\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSydept): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n this.editDepartment(row._id || '');\n break;\n case 'addChild':\n this.onAddChild(row);\n break;\n case 'toggle':\n this.toggleDepartmentStatus(row._id || '');\n break;\n case 'delete':\n this.deleteDepartment(row._id || '');\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n /**\n * Track by function for ngFor\n */\n trackByItemId(index: number, item: ICoreSydept): string {\n return item._id || '';\n }\n} ","<!-- Department List with Shared Wrapper -->\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'core_department_list' }\">\n <div class=\"tw-table tw-w-full tw-h-full\">\n\n<!-- Global Notifications -->\n<cide-ele-global-notifications></cide-ele-global-notifications>\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-0\">\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-mb-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Department' : 'Quick Add Department' }}</h6>\n </div>\n @if (selectedParentDepartment()) {\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-blue-50 tw-border tw-border-blue-200 tw-px-4 tw-py-1 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">account_tree</cide-ele-icon>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-text-sm tw-text-blue-600 tw-font-medium\">{{ isEditMode() ? 'Parent:' : 'Creating child under:' }}</span>\n <span class=\"tw-text-sm tw-text-blue-800 tw-font-semibold\">{{ selectedParentDepartment()?.sydept_name }}</span>\n </div>\n <button \n cideEleButton \n variant=\"ghost\" \n size=\"xs\" \n type=\"button\" \n (click)=\"clearSelectedParent()\" \n class=\"tw-text-blue-400 hover:tw-text-blue-600\">\n <svg class=\"tw-w-4 tw-h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n </svg>\n </button>\n </div>\n }\n </div>\n \n <form [formGroup]=\"quickAddForm\" (ngSubmit)=\"quickAddDepartment()\">\n <!-- First Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-mb-3\">\n <!-- Department Code -->\n <div>\n <cide-ele-input \n id=\"sydept_code\" \n label=\"Code*\" \n formControlName=\"sydept_code\"\n placeholder=\"DEPT001\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Department Name -->\n <div>\n <cide-ele-input \n id=\"sydept_name\" \n label=\"Name*\" \n formControlName=\"sydept_name\"\n placeholder=\"Department name\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n\n \n <!-- Active Status -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <cide-ele-input \n id=\"sydept_isactive\"\n type=\"checkbox\"\n label=\"Active\"\n formControlName=\"sydept_isactive\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n \n <!-- Second Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-items-end\">\n <!-- Description -->\n <div>\n <cide-ele-textarea \n id=\"sydept_description\" \n label=\"Description\" \n formControlName=\"sydept_description\"\n placeholder=\"Department description\"\n rows=\"2\"\n size=\"sm\">\n </cide-ele-textarea>\n </div>\n \n\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <div class=\"tw-flex tw-space-x-2\">\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n [disabled]=\"quickAddForm.invalid\"\n class=\"tw-px-2 tw-py-1 tw-w-20\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Add' }}\n </button>\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\"\n (click)=\"resetQuickAddForm()\"\n class=\"tw-px-2 tw-py-1 tw-w-16\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">refresh</cide-ele-icon>\n Reset\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n\n <!-- Actions -->\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Search functionality is handled by the data grid -->\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 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\" 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 </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n \n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [serverSidePagination]=\"true\" \n [totalServerItems]=\"totalItems()\" \n [currentServerPage]=\"currentPage()\"\n [currentServerPageSize]=\"pageSize()\" \n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Department Details Renderer Template -->\n<ng-template #departmentDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Department Icon -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon \n class=\"tw-text-gray-400\" \n size=\"xs\">\n business\n </cide-ele-icon>\n </div>\n \n <!-- Department Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.sydept_name\">\n {{ row.sydept_name || 'Untitled' }}\n </div>\n @if (row.sydept_description) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.sydept_description\">\n {{ row.sydept_description }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Department Status Renderer Template -->\n<ng-template #departmentStatusRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"getStatusClass(row.sydept_isactive)\">\n {{ getStatusDisplay(row.sydept_isactive) }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown \n [items]=\"getDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template>\n</cide-lyt-shared-wrapper> ","// Department Management Components\r\nexport * from './components/department-list/department-list.component';\r\n\r\n// Department Management Services\r\nexport * from './services/department-management.service'; ","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport {\n cidePath,\n coreRoutesUrl,\n generateStringFromObject,\n hostManagerRoutesUrl,\n ICoreSydsg,\n MDesignationDeletePayload,\n MDesignationGetByIdPayload,\n MDesignationInsertUpdatePayload,\n designationByIdControllerResponse,\n designationDeleteControllerResponse,\n designationControllerResponse,\n designationInsertUpdateControllerResponse,\n MDesignation,\n MDesignationToggleStatusPayload,\n designationToggleStatusControllerResponse,\n} from 'cloud-ide-lms-model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CideCoreDesignationManagementService {\n private apiUrl = `${coreRoutesUrl?.designation}`;\n private designationListSubject = new BehaviorSubject<ICoreSydsg[]>([]);\n public designationList$ = this.designationListSubject.asObservable();\n\n constructor(private http: HttpClient) {\n console.log('CideCoreDesignationManagementService initialized - using real API');\n }\n\n /**\n * Get designation list from API\n */\n getDesignationList(body: MDesignation): Observable<designationControllerResponse> {\n const query = generateStringFromObject(body);\n return this.http?.get<designationControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, query]))\n .pipe(\n tap((response: designationControllerResponse) => {\n if (response?.success) {\n this.designationListSubject.next(response?.data || []);\n }\n }),\n catchError(error => {\n console.error('CideCoreDesignationManagementService API error:', error);\n return this.handleError(error);\n })\n );\n }\n\n /**\n * Get designation list from cache (if available)\n */\n getDesignationListFromCache(): ICoreSydsg[] {\n return this.designationListSubject.value;\n }\n\n /**\n * Create new designation\n * POST ${coreRoutesUrl?.designation} - payload: MDesignationInsertUpdatePayload, response: designationInsertUpdateControllerResponse\n */\n createDesignation(designation: ICoreSydsg): Observable<designationInsertUpdateControllerResponse> {\n console.log('Creating designation:', designation);\n\n // Create proper payload using MDesignationInsertUpdatePayload\n const payload = new MDesignationInsertUpdatePayload(designation);\n\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation]);\n return this.http.post<designationInsertUpdateControllerResponse>(url, payload)\n .pipe(\n tap((response: designationInsertUpdateControllerResponse) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Update existing designation\n * POST ${coreRoutesUrl?.designation} - payload: MDesignationInsertUpdatePayload, response: designationInsertUpdateControllerResponse\n */\n updateDesignation(id: string, designation: ICoreSydsg): Observable<designationInsertUpdateControllerResponse> {\n console.log('Updating designation:', id, designation);\n\n // Create proper payload using MDesignationInsertUpdatePayload\n const payload = new MDesignationInsertUpdatePayload(designation);\n\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation]);\n return this.http.post<designationInsertUpdateControllerResponse>(url, payload)\n .pipe(\n tap((response: designationInsertUpdateControllerResponse) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Get designation by ID\n * GET ${coreRoutesUrl?.designation}/byId/:query - payload: MDesignationGetByIdPayload, response: designationByIdControllerResponse\n */\n getDesignationById(id: string): Observable<designationByIdControllerResponse> {\n console.log('Getting designation by ID:', id);\n const payload: MDesignationGetByIdPayload = { sydsg_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, 'byId', query]);\n return this.http.get<designationByIdControllerResponse>(url)\n .pipe(\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete designation\n * DELETE ${coreRoutesUrl?.designation}/:query - payload: MDesignationDeletePayload, response: designationDeleteControllerResponse\n */\n deleteDesignation(id: string): Observable<designationDeleteControllerResponse> {\n const payload: MDesignationDeletePayload = { sydsg_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, query]);\n return this.http.delete<designationDeleteControllerResponse>(url)\n .pipe(\n tap((response: designationDeleteControllerResponse) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Delete multiple designations\n */\n deleteMultipleDesignations(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\n console.log('Deleting multiple designations:', ids);\n const payload = { ids };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, query]);\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\n .pipe(\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Toggle designation active status\n */\n toggleDesignationStatus(id: string): Observable<designationToggleStatusControllerResponse> {\n console.log('Toggling designation status:', id);\n const payload: MDesignationToggleStatusPayload = { sydsg_id: id };\n const query = generateStringFromObject(payload);\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.designation, \"toggleStatus\", query]);\n return this.http.put<designationToggleStatusControllerResponse>(url, {})\n .pipe(\n tap((response: designationToggleStatusControllerResponse) => {\n if (response.success) {\n this.refreshDesignationList();\n }\n }),\n catchError(this.handleError)\n );\n }\n\n /**\n * Find designation by ID\n */\n findDesignationById(id: string, items: ICoreSydsg[] = this.designationListSubject.value): ICoreSydsg | null {\n for (const item of items) {\n if (item._id === id) {\n return item;\n }\n }\n return null;\n }\n\n /**\n * Get parent designations for dropdown selection\n */\n getParentDesignations(excludeId?: string): ICoreSydsg[] {\n const allItems: ICoreSydsg[] = [];\n\n const flattenItems = (items: ICoreSydsg[], level: number = 0) => {\n items.forEach(item => {\n if (item._id !== excludeId) {\n allItems.push({\n ...item,\n sydsg_name: ' '.repeat(level) + item.sydsg_name\n });\n }\n });\n };\n\n flattenItems(this.designationListSubject.value);\n return allItems;\n }\n\n /**\n * Refresh designation list from server\n */\n private refreshDesignationList(): void {\n const defaultBody = {\n pageIndex: 1,\n pageSize: 10\n };\n this.getDesignationList(defaultBody).subscribe({\n next: () => {\n console.log('Designation list refreshed successfully');\n },\n error: (error) => {\n console.error('Error refreshing designation list:', error);\n }\n });\n }\n\n /**\n * Handle errors\n */\n private handleError(error: unknown): Observable<never> {\n let errorMessage = 'An error occurred';\n\n if (error instanceof Error) {\n errorMessage = error.message;\n } else if (typeof error === 'string') {\n errorMessage = error;\n }\n\n console.error('Designation Management Service Error:', errorMessage);\n return throwError(() => new Error(errorMessage));\n }\n} ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError, BehaviorSubject } from 'rxjs';\r\nimport { catchError, tap } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl, \r\n ICoreSydsgl, \r\n gradeLevelControllerResponse, \r\n gradeLevelByIdControllerResponse,\r\n gradeLevelToggleStatusControllerResponse,\r\n MGradeLevel,\r\n MGradeLevelGetByIdPayload,\r\n MGradeLevelToggleStatusPayload,\r\n MGradeLevelDeletePayload,\r\n gradeLevelDeleteControllerResponse,\r\n MGradeLevelChangeSequencePayload,\r\n gradeLevelChangeSequenceControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideCoreGradeLevelManagementService {\r\n private apiUrl = `${coreRoutesUrl?.gradeLevel}`;\r\n private gradeLevelListSubject = new BehaviorSubject<ICoreSydsgl[]>([]);\r\n public gradeLevelList$ = this.gradeLevelListSubject.asObservable();\r\n\r\n constructor(private http: HttpClient) {\r\n console.log('CideCoreGradeLevelManagementService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get grade level list from API\r\n */\r\n getGradeLevelList(body: MGradeLevel): Observable<gradeLevelControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<gradeLevelControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, query]))\r\n .pipe(\r\n tap((response: gradeLevelControllerResponse) => {\r\n if (response?.success) {\r\n this.gradeLevelListSubject.next(response?.data || []);\r\n }\r\n }),\r\n catchError(error => {\r\n console.error('CideCoreGradeLevelManagementService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Get grade level list from cache (if available)\r\n */\r\n getGradeLevelListFromCache(): ICoreSydsgl[] {\r\n return this.gradeLevelListSubject.value;\r\n }\r\n\r\n /**\r\n * Create new grade level\r\n * POST ${coreRoutesUrl?.gradeLevel} - payload: MGradeLevel, response: gradeLevelInsertUpdateControllerResponse\r\n */\r\n createGradeLevel(gradeLevel: ICoreSydsgl): Observable<gradeLevelControllerResponse> {\r\n console.log('Creating grade level:', gradeLevel);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel]);\r\n return this.http.post<gradeLevelControllerResponse>(url, gradeLevel)\r\n .pipe(\r\n tap((response: gradeLevelControllerResponse) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing grade level\r\n * POST ${coreRoutesUrl?.gradeLevel} - payload: MGradeLevel, response: gradeLevelInsertUpdateControllerResponse\r\n */\r\n updateGradeLevel(id: string, gradeLevel: ICoreSydsgl): Observable<gradeLevelControllerResponse> {\r\n console.log('Updating grade level:', id, gradeLevel);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel]);\r\n return this.http.post<gradeLevelControllerResponse>(url, gradeLevel)\r\n .pipe(\r\n tap((response: gradeLevelControllerResponse) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get grade level by ID\r\n * GET ${coreRoutesUrl?.gradeLevel}/byId/:query - payload: { id }, response: gradeLevelByIdControllerResponse\r\n */\r\n getGradeLevelById(payload: MGradeLevelGetByIdPayload): Observable<gradeLevelByIdControllerResponse> {\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, 'byId', query]);\r\n return this.http.get<gradeLevelByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete grade level\r\n * DELETE ${coreRoutesUrl?.gradeLevel}/:query - payload: { id }, response: { success: boolean }\r\n */\r\n deleteGradeLevel(id: string): Observable<gradeLevelDeleteControllerResponse> {\r\n const payload: MGradeLevelDeletePayload = { sydsgl_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, query]);\r\n return this.http.delete<gradeLevelDeleteControllerResponse>(url)\r\n .pipe(\r\n tap((response: gradeLevelDeleteControllerResponse) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete multiple grade levels\r\n */\r\n deleteMultipleGradeLevels(ids: string[]): Observable<{ success: boolean; message?: string; data?: unknown }> {\r\n console.log('Deleting multiple grade levels:', ids);\r\n const payload = { ids };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, query]);\r\n return this.http.delete<{ success: boolean; message?: string; data?: unknown }>(url)\r\n .pipe(\r\n tap((response: { success: boolean; message?: string; data?: unknown }) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle grade level active status\r\n * PATCH ${coreRoutesUrl?.gradeLevel}/toggle-status - payload: { id }, response: gradeLevelToggleStatusControllerResponse\r\n */\r\n toggleGradeLevelStatus(id: string): Observable<gradeLevelToggleStatusControllerResponse> {\r\n console.log('Toggling grade level status:', id);\r\n const payload: MGradeLevelToggleStatusPayload = { sydsgl_id: id };\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, 'toggle-status']);\r\n return this.http.patch<gradeLevelToggleStatusControllerResponse>(url, payload)\r\n .pipe(\r\n tap((response: gradeLevelToggleStatusControllerResponse) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Change grade level sequence\r\n * PATCH ${coreRoutesUrl?.gradeLevel}/change-sequence - payload: MGradeLevelChangeSequencePayload, response: gradeLevelChangeSequenceControllerResponse\r\n */\r\n changeGradeLevelSequence(payload: MGradeLevelChangeSequencePayload): Observable<gradeLevelChangeSequenceControllerResponse> {\r\n console.log('Changing grade level sequence:', payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.gradeLevel, 'change-sequence']);\r\n return this.http.patch<gradeLevelChangeSequenceControllerResponse>(url, payload)\r\n .pipe(\r\n tap((response: gradeLevelChangeSequenceControllerResponse) => {\r\n if (response.success) {\r\n this.refreshGradeLevelList();\r\n }\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Find grade level by ID\r\n */\r\n findGradeLevelById(id: string, items: ICoreSydsgl[] = this.gradeLevelListSubject.value): ICoreSydsgl | null {\r\n for (const item of items) {\r\n if (item._id === id) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Refresh grade level list from server\r\n */\r\n private refreshGradeLevelList(): void {\r\n const defaultBody = {\r\n pageIndex: 1,\r\n pageSize: 10\r\n };\r\n this.getGradeLevelList(defaultBody).subscribe({\r\n next: () => {\r\n console.log('Grade level list refreshed successfully');\r\n },\r\n error: (error) => {\r\n console.error('Error refreshing grade level list:', error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Grade Level Management Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ICoreSydsg, ICoreSydsgl, ICoreSydept } from 'cloud-ide-lms-model';\nimport { CideCoreDesignationManagementService } from '../../services/designation-management.service';\nimport { CideCoreGradeLevelManagementService } from '../../../grade-level-management/services/grade-level-management.service';\nimport { CideCoreDepartmentManagementService } from '../../../department-management/services/department-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideLytSharedWrapperComponent } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, NotificationService, ConfirmationService } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\n\ninterface HierarchicalNode {\n _id: string;\n name: string;\n code: string;\n description: string;\n type: 'department' | 'designation';\n level: number;\n expanded: boolean;\n hasChildren: boolean;\n children: HierarchicalNode[];\n status: boolean;\n grade_level: string;\n parentId: string | null;\n}\n\n@Component({\n selector: 'cide-core-designation-list',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent,\n CideLytSharedWrapperComponent\n ],\n templateUrl: './designation-list.component.html',\n styleUrls: []\n})\nexport class CideCoreDesignationListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private designationService = inject(CideCoreDesignationManagementService);\n private gradeLevelService = inject(CideCoreGradeLevelManagementService);\n private departmentService = inject(CideCoreDepartmentManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private notificationService = inject(NotificationService);\n private confirmationService = inject(ConfirmationService);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n designationDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('designationDetailsRendererTemplate');\n designationStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('designationStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n designations = signal<ICoreSydsg[]>([]);\n departments = signal<ICoreSydept[]>([]);\n gradeLevels = signal<ICoreSydsgl[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Modern reactive forms with signals\n selectedParentDesignation = signal<ICoreSydsg | null>(null);\n selectedParentDepartment = signal<ICoreSydept | null>(null);\n\n // Retrieved designation data\n retrievedDesignation = signal<ICoreSydsg | null>(null);\n\n // Edit mode flag\n isEditMode = signal(false);\n\n // Server-side pagination state\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive form with typed controls\n quickAddForm = this.fb.group({\n sydsg_name: this.fb.control('', [Validators.required, Validators.minLength(1), Validators.maxLength(100)]),\n sydsg_code: this.fb.control('', [Validators.required, Validators.minLength(1), Validators.maxLength(20)]),\n sydsg_description: this.fb.control('', [Validators.maxLength(400)]),\n sydsg_prent_id_desg: this.fb.control(''),\n sydsg_department_id_sydpt: this.fb.control('', [Validators.required]),\n sydsg_grade_level_id_sydsgl: this.fb.control('', [Validators.required]),\n sydsg_isactive: this.fb.control(true, [Validators.required]),\n desg_entity_id_syen: this.fb.control(this.appState.getActiveEntityId() || '', [Validators.required])\n });\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSydsg>>({\n id: 'designation-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Department/Designation',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'designationDetailsRenderer'\n },\n {\n key: 'code',\n header: 'Code',\n type: 'text',\n width: '120px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'grade_level',\n header: 'Grade Level',\n type: 'text',\n width: '120px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'status',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'designationStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '60px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n tree: {\n enabled: true,\n primaryKey: '_id',\n foreignKey: 'parentId',\n childrenKey: 'children',\n levelKey: 'level',\n expandedKey: 'expanded',\n hasChildrenKey: 'hasChildren'\n },\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search departments and designations...',\n searchableColumns: ['name', 'code', 'description'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none',\n onRefresh: 'onDesignationRefresh'\n });\n\n // Template renderers using Angular best practices\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\n designationDetailsRenderer: this.designationDetailsRendererTemplate(),\n designationStatusRenderer: this.designationStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Get template renderers for data grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return this.templateRenderers();\n }\n\n // Mixed renderers (templates + string functions)\n customRenderers = computed(() => ({\n ...this.templateRenderers()\n }));\n\n /**\n * Get custom renderers adapted for current data grid compatibility\n */\n getCustomRenderers(): Record<string, (value: unknown, row: ICoreSydsg) => string> {\n return {};\n }\n\n // Action handlers for grid actions\n actionHandlers = {\n onEditDesignation: (row: ICoreSydsg) => this.editDesignation(row._id || ''),\n onToggleDesignation: (row: ICoreSydsg) => this.toggleDesignationStatus(row._id || ''),\n onDeleteDesignation: (row: ICoreSydsg) => this.deleteDesignation(row._id || ''),\n onDesignationRowClick: (row: ICoreSydsg) => this.onDesignationRowClick(row),\n onDesignationRefresh: () => this.onDesignationRefresh(),\n onAddChild: (row: ICoreSydsg) => this.onAddChild(row)\n };\n\n // Computed properties\n filteredItems = computed(() => {\n const items = this.designations();\n const search = this.searchTerm()?.toLowerCase();\n\n if (!search) return items;\n\n return items.filter(item => {\n return item.sydsg_name?.toLowerCase().includes(search) ||\n item.sydsg_code?.toLowerCase().includes(search) ||\n item.sydsg_description?.toLowerCase().includes(search);\n });\n });\n\n hasSelection = computed(() => this.selectedItems().length > 0);\n\n // Pagination computed properties\n totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n hasNextPage = computed(() => this.currentPage() < this.totalPages());\n hasPreviousPage = computed(() => this.currentPage() > 1);\n\n // Grade level options for dropdown\n gradeLevelOptions = computed(() => {\n return this.gradeLevels().map(gradeLevel => ({\n value: gradeLevel._id || '',\n label: gradeLevel.sydsgl_name || 'Unknown'\n }));\n });\n\n // Department options for dropdown\n departmentOptions = computed(() => {\n return this.departments().map(department => ({\n value: department._id || '',\n label: department.sydept_name || 'Unknown'\n }));\n });\n\n // Modern constructor with effects for initialization\n constructor() {\n this.initializeComponent();\n this.destroyRef.onDestroy(() => {\n this.cleanupEventListeners();\n });\n }\n\n /**\n * Initialize component with modern patterns\n */\n private initializeComponent(): void {\n console.log('CideCoreDesignationListComponent initialized with modern Angular patterns');\n // Load designations first since department and grade level data is populated in the response\n this.loadDesignations();\n this.setupEventListeners();\n this.exposeGlobalFunctions();\n }\n\n /**\n * Setup event listeners for dropdown interactions\n */\n private setupEventListeners(): void {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n document.addEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n document.removeEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Expose global functions for dropdown interactions\n */\n private exposeGlobalFunctions(): void {\n if (typeof window !== 'undefined') {\n (window as unknown as { toggleDropdown: (id: string) => void }).toggleDropdown = this.toggleDropdown.bind(this);\n (window as unknown as { handleDesignationAction: (action: string, id: string) => void }).handleDesignationAction = this.handleDesignationAction.bind(this);\n }\n }\n\n /**\n * Load designations from service\n */\n loadDesignations(): void {\n console.log('🚀 CideCoreDesignationListComponent.loadDesignations() called');\n this.loading.set(true);\n this.error.set(null);\n\n const requestBody = {\n total: this.totalItems(),\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n query: this.searchTerm()\n };\n console.log('📋 Request body:', requestBody);\n\n if (!this.designationService) {\n console.error('❌ DesignationService is not available');\n this.error.set('Designation service is not available');\n this.loading.set(false);\n return;\n }\n\n this.designationService.getDesignationList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 CideCoreDesignationListComponent received response:', response);\n if (response?.success) {\n console.log('✅ Response successful, setting designations:', response.data);\n const designationData = response?.data || [];\n this.designations.set(designationData);\n this.totalItems.set(response.total || 0);\n \n // Extract and set departments and grade levels from populated data\n this.extractAndSetDepartmentsAndGradeLevels(designationData);\n \n // Update grid data with hierarchical structure\n this.updateGridData(designationData);\n } else {\n console.error('❌ Response was not successful:', response);\n this.error.set('Failed to load designations');\n }\n },\n error: (err) => {\n console.error('❌ CideCoreDesignationListComponent error:', err);\n this.error.set(err.message || 'An error occurred while loading designations');\n },\n complete: () => {\n console.log('CideCoreDesignationListComponent loadDesignations completed');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Load departments from service\n */\n loadDepartments(): void {\n console.log('🚀 CideCoreDesignationListComponent.loadDepartments() called');\n\n if (!this.departmentService) {\n console.error('❌ DepartmentService is not available');\n return;\n }\n\n const requestBody = {\n total: 0,\n pageIndex: 1,\n pageSize: 1000, // Load all departments\n query: ''\n };\n\n this.departmentService.getDepartmentList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 CideCoreDesignationListComponent received departments response:', response);\n if (response?.success) {\n console.log('✅ Departments loaded successfully:', response.data);\n const departmentData = response?.data || [];\n this.departments.set(departmentData);\n // Update grid data after loading departments\n this.updateGridData(this.designations());\n } else {\n console.error('❌ Failed to load departments:', response);\n }\n },\n error: (err) => {\n console.error('❌ Error loading departments:', err);\n }\n });\n }\n\n /**\n * Load grade levels from service\n */\n loadGradeLevels(): void {\n console.log('🚀 CideCoreDesignationListComponent.loadGradeLevels() called');\n\n if (!this.gradeLevelService) {\n console.error('❌ GradeLevelService is not available');\n return;\n }\n\n const requestBody = {\n pageIndex: 1,\n pageSize: 100 // Load all grade levels for dropdown\n };\n\n this.gradeLevelService.getGradeLevelList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 Grade levels response:', response);\n if (response?.success) {\n console.log('✅ Grade levels loaded successfully:', response.data);\n const gradeLevelData = response?.data || [];\n this.gradeLevels.set(gradeLevelData);\n // Update grid data if designations are already loaded\n if (this.designations().length > 0) {\n this.updateGridData(this.designations());\n }\n } else {\n console.error('❌ Failed to load grade levels:', response);\n }\n },\n error: (err) => {\n console.error('❌ Error loading grade levels:', err);\n }\n });\n }\n\n /**\n * Build hierarchical tree structure from departments and designations\n * Based on FK relationships: _id (PK) -> sydsg_prent_id_desg (FK) OR sydsg_department_id_sydpt (FK)\n */\n private buildHierarchicalData(): HierarchicalNode[] {\n const departments = this.departments();\n const designations = this.designations();\n\n console.log('🔍 Building hierarchical data with:', {\n departments: departments.length,\n designations: designations.length\n });\n\n // Extract unique departments from designation data (since department data is populated)\n const uniqueDepartments = this.extractDepartmentsFromDesignations(designations);\n console.log('🏢 Extracted departments from designations:', uniqueDepartments);\n\n // First, build department hierarchy\n const departmentNodes = this.buildDepartmentHierarchy(uniqueDepartments);\n\n // Build complete designation hierarchy and add to departments\n this.buildAndAddDesignationHierarchy(departmentNodes, designations);\n\n console.log('✅ Final hierarchical data:', departmentNodes);\n return departmentNodes;\n }\n\n /**\n * Extract and set departments and grade levels from populated designation data\n */\n private extractAndSetDepartmentsAndGradeLevels(designations: ICoreSydsg[]): void {\n const departmentMap = new Map<string, ICoreSydept>();\n const gradeLevelMap = new Map<string, ICoreSydsgl>();\n \n designations.forEach(designation => {\n // Extract departments (using type assertion since API response includes populated data)\n const designationWithPopulated = designation as any;\n if (designationWithPopulated.department && designationWithPopulated.department._id) {\n departmentMap.set(designationWithPopulated.department._id, designationWithPopulated.department);\n console.log(`🏢 Found department in designation: ${designationWithPopulated.department.sydept_name}`);\n }\n \n // Extract grade levels\n if (designationWithPopulated.gradeLevel && designationWithPopulated.gradeLevel._id) {\n gradeLevelMap.set(designationWithPopulated.gradeLevel._id, designationWithPopulated.gradeLevel);\n console.log(`📚 Found grade level in designation: ${designationWithPopulated.gradeLevel.sydsgl_name}`);\n }\n });\n \n // Set the extracted data to signals\n this.departments.set(Array.from(departmentMap.values()));\n this.gradeLevels.set(Array.from(gradeLevelMap.values()));\n \n console.log(`🏢 Set ${departmentMap.size} departments and ${gradeLevelMap.size} grade levels from designation data`);\n }\n\n /**\n * Extract unique departments from designation data (since department data is populated in API response)\n */\n private extractDepartmentsFromDesignations(designations: ICoreSydsg[]): ICoreSydept[] {\n const departmentMap = new Map<string, ICoreSydept>();\n \n designations.forEach(designation => {\n const designationWithPopulated = designation as any;\n if (designationWithPopulated.department && designationWithPopulated.department._id) {\n // Use the populated department data from the designation\n departmentMap.set(designationWithPopulated.department._id, designationWithPopulated.department);\n console.log(`🏢 Found department in designation: ${designationWithPopulated.department.sydept_name}`);\n }\n });\n \n const uniqueDepartments = Array.from(departmentMap.values());\n console.log(`🏢 Extracted ${uniqueDepartments.length} unique departments from designations`);\n return uniqueDepartments;\n }\n\n /**\n * Build and add designation hierarchy to department hierarchy\n * This method handles the complete designation hierarchy and adds it to the appropriate departments\n */\n private buildAndAddDesignationHierarchy(departmentNodes: HierarchicalNode[], designations: ICoreSydsg[]): void {\n console.log('🔍 Building and adding designation hierarchy...');\n\n // Create designation nodes map\n const designationMap = new Map<string, HierarchicalNode>();\n \n // First pass: create all designation nodes\n designations.forEach(designation => {\n console.log(`👔 Creating designation node: ${designation.sydsg_name} (${designation._id})`);\n\n const designationNode: HierarchicalNode = {\n _id: designation._id || '',\n name: designation.sydsg_name || '',\n code: designation.sydsg_code || '',\n description: designation.sydsg_description || '',\n type: 'designation',\n level: 0, // Will be updated based on hierarchy\n expanded: false,\n hasChildren: false,\n children: [],\n status: designation.sydsg_isactive ?? true,\n grade_level: this.getGradeLevelName(designation.sydsg_grade_level_id_sydsgl || '', designation),\n parentId: null // Will be set based on FK relationships\n };\n\n designationMap.set(designation._id || '', designationNode);\n });\n\n // Second pass: build parent-child relationships\n designations.forEach(designation => {\n const designationNode = designationMap.get(designation._id || '');\n if (!designationNode) return;\n\n if (designation.sydsg_prent_id_desg) {\n // Has parent designation - use designation hierarchy\n const parentNode = designationMap.get(designation.sydsg_prent_id_desg);\n if (parentNode) {\n parentNode.children.push(designationNode);\n parentNode.hasChildren = true;\n designationNode.level = parentNode.level + 1;\n designationNode.parentId = parentNode._id;\n console.log(`📁 Added ${designation.sydsg_name} as child of ${parentNode.name} (level ${designationNode.level})`);\n } else {\n console.log(`⚠️ Parent designation not found for ${designation.sydsg_name}: ${designation.sydsg_prent_id_desg}`);\n }\n }\n });\n\n // Third pass: add root designations to departments\n const rootDesignations = Array.from(designationMap.values()).filter(node => !node.parentId);\n console.log(`🔍 Found ${rootDesignations.length} root designations`);\n\n rootDesignations.forEach(rootDesignation => {\n const designation = designations.find(d => d._id === rootDesignation._id);\n if (designation && designation.sydsg_department_id_sydpt) {\n // Find the department node\n const departmentNode = departmentNodes.find(dept => \n dept._id === `dept_${designation.sydsg_department_id_sydpt}`\n );\n \n if (departmentNode) {\n console.log(`🏢 Adding root designation ${rootDesignation.name} to department ${departmentNode.name}`);\n rootDesignation.level = departmentNode.level + 1;\n rootDesignation.parentId = departmentNode._id;\n departmentNode.children.push(rootDesignation);\n departmentNode.hasChildren = true;\n } else {\n console.log(`⚠️ Department not found for designation ${rootDesignation.name}: ${designation.sydsg_department_id_sydpt}`);\n }\n } else {\n console.log(`⚠️ Root designation ${rootDesignation.name} has no department`);\n }\n });\n\n console.log('✅ Designation hierarchy built and added to departments');\n }\n\n /**\n * Build designation hierarchy based on FK relationships\n * PK: _id, FK: sydsg_prent_id_desg (if set) OR sydsg_department_id_sydpt (if no parent designation)\n */\n private buildDesignationHierarchy(designations: ICoreSydsg[]): HierarchicalNode[] {\n const designationMap = new Map<string, HierarchicalNode>();\n const rootDesignations: HierarchicalNode[] = [];\n\n console.log('🔍 Building designation hierarchy...');\n\n // First pass: create all designation nodes\n designations.forEach(designation => {\n console.log(`👔 Creating designation node: ${designation.sydsg_name} (${designation._id})`);\n\n const designationNode: HierarchicalNode = {\n _id: designation._id || '',\n name: designation.sydsg_name || '',\n code: designation.sydsg_code || '',\n description: designation.sydsg_description || '',\n type: 'designation',\n level: 0, // Will be updated based on hierarchy\n expanded: false,\n hasChildren: false,\n children: [],\n status: designation.sydsg_isactive ?? true,\n grade_level: this.getGradeLevelName(designation.sydsg_grade_level_id_sydsgl || '', designation),\n parentId: null // Will be set based on FK relationships\n };\n\n designationMap.set(designation._id || '', designationNode);\n });\n\n // Second pass: build parent-child relationships based on FK\n designations.forEach(designation => {\n const designationNode = designationMap.get(designation._id || '');\n if (!designationNode) return;\n\n // Determine parent based on FK relationships\n let parentId: string | null = null;\n\n if (designation.sydsg_prent_id_desg) {\n // Has parent designation - use designation hierarchy\n parentId = designation.sydsg_prent_id_desg;\n console.log(`📁 ${designation.sydsg_name} has parent designation: ${parentId}`);\n } else if (designation.sydsg_department_id_sydpt) {\n // No parent designation but has department - use department as parent\n parentId = `dept_${designation.sydsg_department_id_sydpt}`;\n console.log(`🏢 ${designation.sydsg_name} belongs to department: ${parentId}`);\n } else {\n console.log(`🔍 ${designation.sydsg_name} has no parent designation and no department`);\n }\n\n designationNode.parentId = parentId;\n\n if (parentId) {\n // Check if parent is a designation or department\n if (parentId.startsWith('dept_')) {\n // Parent is a department - will be handled in addDesignationHierarchyToDepartments\n console.log(`🏢 ${designation.sydsg_name} will be added to department hierarchy`);\n } else {\n // Parent is a designation\n const parentNode = designationMap.get(parentId);\n if (parentNode) {\n parentNode.children.push(designationNode);\n parentNode.hasChildren = true;\n designationNode.level = parentNode.level + 1;\n console.log(`📁 Added ${designation.sydsg_name} as child of ${parentNode.name} (level ${designationNode.level})`);\n } else {\n // Parent designation not found, treat as root\n rootDesignations.push(designationNode);\n console.log(`👔 Added ${designation.sydsg_name} as root (parent designation not found: ${parentId})`);\n }\n }\n } else {\n // No parent - this is a root designation\n rootDesignations.push(designationNode);\n console.log(`👔 Added ${designation.sydsg_name} as root designation`);\n }\n });\n\n console.log(`✅ Built designation hierarchy with ${rootDesignations.length} root designations`);\n console.log(`🔍 Root designations:`, rootDesignations.map(d => ({ id: d._id, name: d.name, parentId: d.parentId })));\n console.log(`🔍 All designation nodes:`, designationMap.size);\n return rootDesignations;\n }\n\n /**\n * Build department hierarchy with parent-child relationships\n */\n private buildDepartmentHierarchy(departments: ICoreSydept[]): HierarchicalNode[] {\n const departmentMap = new Map<string, HierarchicalNode>();\n const rootDepartments: HierarchicalNode[] = [];\n\n // First pass: create all department nodes\n departments.forEach(department => {\n console.log(`🏢 Creating department node: ${department.sydept_name} (${department._id})`);\n\n const departmentNode: HierarchicalNode = {\n _id: `dept_${department._id || ''}`,\n name: department.sydept_name || '',\n code: department.sydept_code || '',\n description: department.sydept_description || '',\n type: 'department',\n level: 0, // Will be updated based on hierarchy\n expanded: true,\n hasChildren: false,\n children: [],\n status: department.sydept_isactive ?? true,\n grade_level: 'N/A',\n parentId: department.sydept_department_id_sydept ? `dept_${department.sydept_department_id_sydept}` : null\n };\n\n departmentMap.set(departmentNode._id, departmentNode);\n });\n\n // Second pass: build parent-child relationships\n departments.forEach(department => {\n const departmentNode = departmentMap.get(`dept_${department._id || ''}`);\n if (!departmentNode) return;\n\n if (department.sydept_department_id_sydept) {\n // This department has a parent\n const parentNode = departmentMap.get(`dept_${department.sydept_department_id_sydept}`);\n if (parentNode) {\n parentNode.children.push(departmentNode);\n parentNode.hasChildren = true;\n departmentNode.level = parentNode.level + 1;\n console.log(`📁 Added ${department.sydept_name} as child of ${parentNode.name} (level ${departmentNode.level})`);\n } else {\n // Parent not found, treat as root\n rootDepartments.push(departmentNode);\n console.log(`🏢 Added ${department.sydept_name} as root (parent not found)`);\n }\n } else {\n // This is a root department\n rootDepartments.push(departmentNode);\n console.log(`🏢 Added ${department.sydept_name} as root department`);\n }\n });\n\n console.log(`✅ Built department hierarchy with ${rootDepartments.length} root departments`);\n return rootDepartments;\n }\n\n /**\n * Add designation hierarchy to department hierarchy\n * Designations with department as parent (sydsg_department_id_sydpt) will be added to departments\n */\n private addDesignationHierarchyToDepartments(departmentNodes: HierarchicalNode[], designationNodes: HierarchicalNode[]): void {\n const addDesignationsToNode = (node: HierarchicalNode) => {\n // Find designations that belong to this department\n const departmentId = node._id.replace('dept_', '');\n const departmentDesignations = designationNodes.filter(designationNode => {\n const designation = this.designations().find(d => d._id === designationNode._id);\n return designation && \n designation.sydsg_department_id_sydpt === departmentId && \n !designation.sydsg_prent_id_desg; // Only root designations (no parent designation)\n });\n\n console.log(`📋 Found ${departmentDesignations.length} root designations for department ${node.name}`);\n console.log(`🔍 Department ID: ${departmentId}`);\n console.log(`🔍 Available designation nodes:`, designationNodes.map(d => ({ id: d._id, name: d.name, parentId: d.parentId })));\n console.log(`🔍 Designations data:`, this.designations().map(d => ({ \n id: d._id, \n name: d.sydsg_name, \n deptId: d.sydsg_department_id_sydpt, \n parentId: d.sydsg_prent_id_desg \n })));\n\n if (departmentDesignations.length > 0) {\n node.hasChildren = true;\n\n // Add designations as children and recursively add their children\n departmentDesignations.forEach(designationNode => {\n console.log(`👔 Adding designation: ${designationNode.name} under ${node.name}`);\n \n // Update the designation node to be under this department\n designationNode.level = node.level + 1;\n designationNode.parentId = node._id;\n \n // Recursively add children of this designation\n this.addDesignationChildren(designationNode, designationNodes);\n\n node.children.push(designationNode);\n });\n }\n\n // Recursively process child departments\n node.children.forEach(child => {\n if (child.type === 'department') {\n addDesignationsToNode(child);\n }\n });\n };\n\n // Process all root departments\n departmentNodes.forEach(node => {\n if (node.type === 'department') {\n addDesignationsToNode(node);\n }\n });\n }\n\n /**\n * Recursively add children designations to a parent designation\n */\n private addDesignationChildren(parentNode: HierarchicalNode, allDesignationNodes: HierarchicalNode[]): void {\n const children = allDesignationNodes.filter(designationNode => \n designationNode.parentId === parentNode._id\n );\n\n console.log(`📁 Found ${children.length} children for designation ${parentNode.name}`);\n\n if (children.length > 0) {\n parentNode.hasChildren = true;\n\n children.forEach(child => {\n console.log(`👔 Adding child designation: ${child.name} under ${parentNode.name}`);\n \n // Update child level and parent\n child.level = parentNode.level + 1;\n child.parentId = parentNode._id;\n \n // Recursively add children of this child\n this.addDesignationChildren(child, allDesignationNodes);\n \n parentNode.children.push(child);\n });\n }\n }\n\n /**\n * Get grade level name by ID or from designation data\n */\n private getGradeLevelName(gradeLevelId: string, designation?: ICoreSydsg): string {\n console.log('🔍 getGradeLevelName called with ID:', gradeLevelId);\n \n // First try to get from populated gradeLevel data in designation\n if (designation) {\n const designationWithPopulated = designation as any;\n if (designationWithPopulated.gradeLevel && designationWithPopulated.gradeLevel._id === gradeLevelId) {\n console.log('🎯 Found grade level from designation data:', designationWithPopulated.gradeLevel.sydsgl_name);\n return designationWithPopulated.gradeLevel.sydsgl_name || 'N/A';\n }\n }\n \n // Fallback to grade levels signal\n console.log('📚 Available grade levels:', this.gradeLevels());\n const gradeLevel = this.gradeLevels().find(gl => gl._id === gradeLevelId);\n console.log('🎯 Found grade level:', gradeLevel);\n\n const result = gradeLevel ? (gradeLevel.sydsgl_name || 'N/A') : 'N/A';\n console.log('✅ Returning grade level name:', result);\n return result;\n }\n\n /**\n * Update grid data with hierarchical structure based on FK relationships\n */\n private updateGridData(designations: ICoreSydsg[]): void {\n console.log('🔄 updateGridData called with:', designations);\n console.log('📚 Current grade levels:', this.gradeLevels());\n console.log('🏢 Current departments:', this.departments());\n\n const hierarchicalData = this.buildHierarchicalData();\n\n // Flatten the hierarchical data for the grid component\n const flattenedData = this.flattenHierarchicalData(hierarchicalData);\n\n console.log('📊 Flattened data for grid:', flattenedData);\n\n this.gridConfig.update(config => {\n const newConfig = {\n ...config,\n data: flattenedData\n };\n console.log('⚙️ Updated grid config with flattened data:', flattenedData);\n return newConfig;\n });\n }\n\n /**\n * Flatten hierarchical data for grid display\n */\n private flattenHierarchicalData(nodes: HierarchicalNode[]): HierarchicalNode[] {\n const flattened: HierarchicalNode[] = [];\n\n const flattenNode = (node: HierarchicalNode) => {\n flattened.push(node);\n if (node.children && node.children.length > 0) {\n node.children.forEach(child => flattenNode(child));\n }\n };\n\n nodes.forEach(node => flattenNode(node));\n return flattened;\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSydsg>): void {\n console.log('onGridEvent', event);\n switch (event.type) {\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadDesignations();\n break;\n case 'pageChange': {\n const pageData = event.data as { page: number; pageSize: number };\n if (pageData) {\n this.currentPage.set(pageData.page);\n this.pageSize.set(pageData.pageSize);\n this.loadDesignations();\n } else {\n const page = event.data as number;\n if (page) {\n this.currentPage.set(page);\n this.loadDesignations();\n }\n }\n break;\n }\n case 'refresh':\n this.onDesignationRefresh();\n break;\n case 'rowClick':\n this.onDesignationRowClick(event.data as ICoreSydsg);\n break;\n case 'action':\n if (event.action?.key === 'edit') {\n this.editDesignation(event.data as string);\n } else if (event.action?.key === 'toggle') {\n this.toggleDesignationStatus(event.data as string);\n } else if (event.action?.key === 'delete') {\n this.deleteDesignation(event.data as string);\n }\n break;\n }\n }\n\n /**\n * Handle designation refresh\n */\n onDesignationRefresh(): void {\n this.loadDesignations();\n }\n\n /**\n * Handle designation row click\n */\n onDesignationRowClick(designation: ICoreSydsg): void {\n this.editDesignation(designation._id || '');\n }\n\n /**\n * Navigate to edit designation form\n */\n editDesignation(itemId: string): void {\n console.log('🔵 editDesignation called with:', itemId);\n this.isEditMode.set(true);\n this.getDesignationById(itemId);\n }\n\n /**\n * Get designation by ID using the API\n */\n getDesignationById(itemId: string): void {\n console.log('🔵 getDesignationById called with:', itemId);\n this.loading.set(true);\n\n this.designationService.getDesignationById(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Designation retrieved successfully:', response.data);\n let designation: ICoreSydsg | null = null;\n designation = response.data || null;\n\n this.retrievedDesignation.set(designation);\n\n if (this.isEditMode() && designation) {\n this.populateFormForEdit(designation);\n }\n } else {\n this.error.set('Failed to retrieve designation');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while retrieving the designation');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Populate form with designation data for editing\n */\n populateFormForEdit(designation: ICoreSydsg): void {\n console.log('🔵 populateFormForEdit called with:', designation);\n\n this.quickAddForm.patchValue({\n sydsg_name: designation.sydsg_name || '',\n sydsg_code: designation.sydsg_code || '',\n sydsg_description: designation.sydsg_description || '',\n sydsg_prent_id_desg: designation.sydsg_prent_id_desg || '',\n sydsg_department_id_sydpt: designation.sydsg_department_id_sydpt || '',\n sydsg_grade_level_id_sydsgl: designation.sydsg_grade_level_id_sydsgl || '',\n sydsg_isactive: designation.sydsg_isactive ?? true,\n desg_entity_id_syen: designation.desg_entity_id_syen || ''\n });\n\n if (designation.sydsg_prent_id_desg) {\n const parentDesignation = this.designations().find(item => item._id === designation.sydsg_prent_id_desg);\n if (parentDesignation) {\n this.selectedParentDesignation.set(parentDesignation);\n }\n }\n\n if (designation.sydsg_department_id_sydpt) {\n const parentDepartment = this.departments().find(item => item._id === designation.sydsg_department_id_sydpt);\n if (parentDepartment) {\n this.selectedParentDepartment.set(parentDepartment);\n }\n }\n\n console.log('✅ Form populated for editing:', this.quickAddForm.value);\n }\n\n /**\n * Delete designation with confirmation modal\n */\n async deleteDesignation(itemId: string): Promise<void> {\n console.log('🔵 deleteDesignation called with:', itemId);\n \n // Find the designation name for better confirmation message\n const designation = this.designations().find(d => d._id === itemId);\n const designationName = designation?.sydsg_name || 'this designation';\n \n try {\n const confirmed = await this.confirmationService.confirmDelete(designationName);\n \n if (confirmed) {\n this.loading.set(true);\n\n this.designationService.deleteDesignation(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success(`Designation \"${designationName}\" deleted successfully`);\n this.loadDesignations();\n } else {\n this.notificationService.error('Failed to delete designation');\n }\n },\n error: (err) => {\n this.notificationService.error(err.message || 'An error occurred while deleting the designation');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n } catch (error) {\n console.error('Error in delete confirmation:', error);\n }\n }\n\n /**\n * Toggle designation status\n */\n toggleDesignationStatus(itemId: string): void {\n console.log('🔵 toggleDesignationStatus called with:', itemId);\n this.loading.set(true);\n\n this.designationService.toggleDesignationStatus(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadDesignations();\n } else {\n this.error.set('Failed to toggle designation status');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while toggling status');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Rename designation\n */\n renameDesignation(itemId: string, currentName: string): void {\n console.log('🔵 renameDesignation called with:', itemId, currentName);\n \n const newName = prompt('Enter new name for designation:', currentName);\n \n if (newName && newName.trim() && newName.trim() !== currentName) {\n this.loading.set(true);\n\n // Get the current designation data\n this.designationService.getDesignationById(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success && response.data) {\n const designation = response.data;\n \n // Update only the name\n const updatedDesignation: Partial<ICoreSydsg> = {\n ...designation,\n sydsg_name: newName.trim()\n };\n\n // Call update service\n this.designationService.updateDesignation(itemId, updatedDesignation)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (updateResponse) => {\n if (updateResponse.success) {\n console.log('✅ Designation renamed successfully');\n this.loadDesignations();\n } else {\n this.error.set(updateResponse.message || 'Failed to rename designation');\n }\n },\n error: (err) => {\n console.error('❌ Error renaming designation:', err);\n this.error.set(err.message || 'Failed to rename designation');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n } else {\n this.error.set('Failed to retrieve designation for renaming');\n this.loading.set(false);\n }\n },\n error: (err) => {\n console.error('❌ Error retrieving designation for rename:', err);\n this.error.set(err.message || 'Failed to retrieve designation');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Quick add or update designation using reactive form\n */\n quickAddDesignation() {\n if (this.quickAddForm.invalid) {\n console.log('❌ Form is invalid:', this.quickAddForm.errors);\n return;\n }\n\n const formValue = this.quickAddForm.value;\n\n // Create payload according to MDesignationInsertUpdatePayload model\n const designation: Partial<ICoreSydsg> = {\n _id: this.retrievedDesignation()?._id || '',\n sydsg_name: formValue.sydsg_name,\n sydsg_code: formValue.sydsg_code,\n sydsg_description: formValue.sydsg_description || '',\n sydsg_prent_id_desg: formValue.sydsg_prent_id_desg || undefined,\n sydsg_department_id_sydpt: formValue.sydsg_department_id_sydpt,\n sydsg_grade_level_id_sydsgl: formValue.sydsg_grade_level_id_sydsgl,\n sydsg_isactive: formValue.sydsg_isactive,\n desg_entity_id_syen: formValue.desg_entity_id_syen\n };\n\n // Validate required fields according to model\n if (!designation.sydsg_name || !designation.sydsg_code || !designation.sydsg_department_id_sydpt ||\n !designation.sydsg_grade_level_id_sydsgl || !designation.desg_entity_id_syen) {\n this.error.set('Please fill in all required fields');\n return;\n }\n\n if (this.isEditMode() && this.retrievedDesignation()) {\n const itemId = this.retrievedDesignation()?._id;\n if (itemId) {\n console.log('🔵 Updating designation:', itemId, designation);\n this.designationService.updateDesignation(itemId, designation).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Designation updated successfully');\n this.resetQuickAddForm();\n this.isEditMode.set(false);\n this.retrievedDesignation.set(null);\n this.loadDesignations();\n } else {\n this.error.set(response.message || 'Failed to update designation');\n }\n },\n error: (err) => {\n console.error('❌ Error updating designation:', err);\n this.error.set(err.message || 'Failed to update designation');\n }\n });\n }\n } else {\n console.log('🔵 Creating new designation:', designation);\n this.designationService.createDesignation(designation).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Designation created successfully');\n this.resetQuickAddForm();\n this.loadDesignations();\n } else {\n this.error.set(response.message || 'Failed to create designation');\n }\n },\n error: (err) => {\n console.error('❌ Error creating designation:', err);\n this.error.set(err.message || 'Failed to create designation');\n }\n });\n }\n }\n\n /**\n * Reset the quick add form to default values\n */\n resetQuickAddForm(): void {\n this.selectedParentDesignation.set(null);\n this.selectedParentDepartment.set(null);\n this.isEditMode.set(false);\n this.retrievedDesignation.set(null);\n\n this.quickAddForm.reset({\n sydsg_name: '',\n sydsg_code: '',\n sydsg_description: '',\n sydsg_prent_id_desg: '',\n sydsg_department_id_sydpt: '',\n sydsg_grade_level_id_sydsgl: '',\n sydsg_isactive: true,\n desg_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n\n // Clear any previous errors\n this.error.set(null);\n }\n\n /**\n * Handle adding a child designation\n */\n onAddChild(parentItem: ICoreSydsg): void {\n console.log('🔵 onAddChild called with:', parentItem);\n console.log('🔵 Parent name:', parentItem.sydsg_name);\n\n // Clear edit mode and retrieved item when adding a child\n this.isEditMode.set(false);\n this.retrievedDesignation.set(null);\n\n // Set the selected parent item first using signal\n this.selectedParentDesignation.set(parentItem);\n console.log('🔵 selectedParentDesignation set to:', this.selectedParentDesignation());\n\n // Update form with parent context (don't call resetQuickAddForm as it clears the parent)\n this.quickAddForm.patchValue({\n sydsg_name: '',\n sydsg_code: '',\n sydsg_description: '',\n sydsg_prent_id_desg: parentItem._id,\n sydsg_department_id_sydpt: parentItem.sydsg_department_id_sydpt || '', // Inherit department from parent\n sydsg_grade_level_id_sydsgl: '',\n sydsg_isactive: true,\n desg_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n\n // If parent has a department, set it as selected\n if (parentItem.sydsg_department_id_sydpt) {\n const parentDepartment = this.departments().find(d => d._id === parentItem.sydsg_department_id_sydpt);\n if (parentDepartment) {\n this.selectedParentDepartment.set(parentDepartment);\n }\n }\n\n console.log('🔵 Form updated, parent should be visible:', this.selectedParentDesignation()?.sydsg_name);\n }\n\n /**\n * Clear selected parent designation\n */\n clearSelectedParent() {\n this.selectedParentDesignation.set(null);\n this.quickAddForm.patchValue({\n sydsg_prent_id_desg: ''\n });\n }\n\n /**\n * Clear selected parent department\n */\n clearSelectedParentDepartment() {\n this.selectedParentDepartment.set(null);\n this.quickAddForm.patchValue({\n sydsg_department_id_sydpt: ''\n });\n }\n\n /**\n * Handle department selection\n */\n onDepartmentSelect(department: ICoreSydept): void {\n console.log('🔵 onDepartmentSelect called with:', department);\n this.selectedParentDepartment.set(department);\n this.quickAddForm.patchValue({\n sydsg_department_id_sydpt: department._id\n });\n }\n\n /**\n * Handle click outside dropdown\n */\n private handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n\n if (!target?.closest('[data-dropdown]') && !target?.closest('[data-action=\"more-actions\"]')) {\n document.querySelectorAll('[data-dropdown]').forEach((el: Element) => {\n const dropdown = el as HTMLElement;\n dropdown.classList.add('tw-hidden');\n });\n\n document.querySelectorAll('[data-action=\"more-actions\"]').forEach((el: Element) => {\n const button = el as HTMLElement;\n button.setAttribute('aria-expanded', 'false');\n });\n }\n }\n\n /**\n * Handle dropdown action clicks\n */\n private handleDropdownAction(event: Event): void {\n const target = event.target as HTMLElement;\n const actionButton = target.closest('[data-action]') as HTMLElement;\n\n if (actionButton) {\n const action = actionButton.getAttribute('data-action');\n const itemId = actionButton.getAttribute('data-item-id');\n\n if (action && itemId) {\n event.preventDefault();\n event.stopPropagation();\n\n const dropdown = actionButton.closest('[data-dropdown]') as HTMLElement;\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editDesignation(itemId);\n break;\n case 'toggle':\n this.toggleDesignationStatus(itemId);\n break;\n case 'delete':\n this.deleteDesignation(itemId);\n break;\n }\n }\n }\n }\n\n /**\n * Toggle dropdown visibility\n */\n toggleDropdown(itemId: string) {\n document.querySelectorAll('.dropdown-menu').forEach(menu => {\n if (menu.getAttribute('data-dropdown') !== itemId) {\n menu.classList.add('tw-hidden');\n }\n });\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.toggle('tw-hidden');\n }\n }\n\n /**\n * Handle designation action clicks\n */\n handleDesignationAction(action: string, itemId: string) {\n const item = this.designations().find(item => item._id === itemId);\n if (!item) return;\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editDesignation(itemId);\n break;\n case 'toggle':\n this.toggleDesignationStatus(itemId);\n break;\n case 'delete':\n this.deleteDesignation(itemId);\n break;\n }\n }\n\n /**\n * Get status display\n */\n getStatusDisplay(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n /**\n * Get status class for styling\n */\n getStatusClass(isActive: boolean): string {\n return isActive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800';\n }\n\n /**\n * Generate dropdown items for designation actions\n */\n getDropdownItems(row: HierarchicalNode): DropdownItem[] {\n // Handle hierarchical data structure\n if (row.type === 'department') {\n return [\n {\n id: 'addDesignation',\n label: 'Add Designation',\n icon: 'add',\n iconColor: 'tw-text-blue-400',\n textColor: 'tw-text-blue-600',\n hoverBgColor: 'hover:tw-bg-blue-50'\n }\n ];\n } else {\n // For designations\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'addChild',\n label: 'Add Child',\n icon: 'add',\n iconColor: 'tw-text-blue-400',\n textColor: 'tw-text-blue-600',\n hoverBgColor: 'hover:tw-bg-blue-50'\n },\n {\n id: 'toggle',\n label: row.status ? 'Deactivate' : 'Activate',\n icon: 'power_settings_new',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n iconColor: 'tw-text-red-400',\n textColor: 'tw-text-red-600',\n hoverBgColor: 'hover:tw-bg-red-50'\n }\n ];\n }\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: HierarchicalNode): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n if (row.type === 'designation') {\n this.editDesignation(row._id);\n }\n break;\n case 'addChild':\n if (row.type === 'designation') {\n // Find the original designation object\n const designation = this.designations().find(d => d._id === row._id);\n if (designation) {\n this.onAddChild(designation);\n }\n }\n break;\n case 'addDesignation':\n if (row.type === 'department') {\n // Extract department ID from the prefixed ID\n const departmentId = row._id.replace('dept_', '');\n const department = this.departments().find(d => d._id === departmentId);\n if (department) {\n console.log('🔵 Adding designation to department:', department.sydept_name);\n this.onDepartmentSelect(department);\n // Reset form to add mode\n this.isEditMode.set(false);\n this.retrievedDesignation.set(null);\n this.selectedParentDesignation.set(null);\n this.resetQuickAddForm();\n }\n }\n break;\n case 'toggle':\n if (row.type === 'designation') {\n this.toggleDesignationStatus(row._id);\n }\n break;\n case 'delete':\n if (row.type === 'designation') {\n this.deleteDesignation(row._id);\n }\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n /**\n * Track by function for ngFor\n */\n trackByItemId(index: number, item: ICoreSydsg): string {\n return item._id || '';\n }\n} ","<!-- Designation List with Shared Wrapper -->\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'core_designation_list' }\">\n <div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-0\">\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-mb-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Designation' : 'Quick Add Designation' }}</h6>\n </div>\n @if (selectedParentDesignation()) {\n <div\n class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-blue-50 tw-border tw-border-blue-200 tw-px-4 tw-py-1 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-4 tw-h-4\">account_tree</cide-ele-icon>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-text-sm tw-text-blue-600 tw-font-medium\">{{ isEditMode() ? 'Parent:' : 'Creating child under:' }}</span>\n <span class=\"tw-text-sm tw-text-blue-800 tw-font-semibold\">{{ selectedParentDesignation()?.sydsg_name\n }}</span>\n </div>\n <button cideEleButton variant=\"ghost\" size=\"xs\" type=\"button\" (click)=\"clearSelectedParent()\"\n class=\"tw-text-blue-400 hover:tw-text-blue-600\">\n <svg class=\"tw-w-4 tw-h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n }\n @if (selectedParentDepartment()) {\n <div\n class=\"tw-flex tw-items-center tw-space-x-3 tw-bg-green-50 tw-border tw-border-green-200 tw-px-4 tw-py-1 tw-rounded-lg\">\n <cide-ele-icon class=\"tw-text-green-600 tw-w-4 tw-h-4\">business</cide-ele-icon>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-text-sm tw-text-green-600 tw-font-medium\">{{ isEditMode() ? 'Department:' : 'Department:'\n }}</span>\n <span class=\"tw-text-sm tw-text-green-800 tw-font-semibold\">{{ selectedParentDepartment()?.sydept_name\n }}</span>\n </div>\n <button cideEleButton variant=\"ghost\" size=\"xs\" type=\"button\" (click)=\"clearSelectedParentDepartment()\"\n class=\"tw-text-green-400 hover:tw-text-green-600\">\n <svg class=\"tw-w-4 tw-h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n }\n </div>\n\n <form [formGroup]=\"quickAddForm\" (ngSubmit)=\"quickAddDesignation()\">\n <!-- First Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-5 tw-gap-3 tw-mb-3\">\n <!-- Designation Name -->\n <div>\n <cide-ele-input id=\"sydsg_name\" label=\"Name*\" formControlName=\"sydsg_name\" placeholder=\"Designation name\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Designation Code -->\n <div>\n <cide-ele-input id=\"sydsg_code\" label=\"Code*\" formControlName=\"sydsg_code\" placeholder=\"DESG001\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Grade Level -->\n <div>\n <cide-ele-select id=\"sydsg_grade_level_id_sydsgl\" label=\"Grade Level*\" [options]=\"gradeLevelOptions()\"\n formControlName=\"sydsg_grade_level_id_sydsgl\" placeholder=\"Select grade level\" size=\"sm\">\n </cide-ele-select>\n </div>\n\n <!-- Department -->\n <div>\n <cide-ele-select id=\"sydsg_department_id_sydpt\" label=\"Department*\" [options]=\"departmentOptions()\"\n formControlName=\"sydsg_department_id_sydpt\" placeholder=\"Select department\" size=\"sm\">\n </cide-ele-select>\n </div>\n\n <!-- Active Status -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <cide-ele-input id=\"sydsg_isactive\" type=\"checkbox\" label=\"Active\" formControlName=\"sydsg_isactive\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Second Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-items-end\">\n <!-- Description -->\n <div>\n <cide-ele-textarea id=\"sydsg_description\" label=\"Description\" formControlName=\"sydsg_description\"\n placeholder=\"Designation description\" rows=\"2\" size=\"sm\">\n </cide-ele-textarea>\n </div>\n\n <!-- Entity ID (Hidden) -->\n <div class=\"tw-hidden\">\n <cide-ele-input id=\"desg_entity_id_syen\" label=\"Entity ID*\" formControlName=\"desg_entity_id_syen\"\n placeholder=\"Entity ID\" size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <div class=\"tw-flex tw-space-x-2\">\n <button cideEleButton variant=\"primary\" size=\"sm\" type=\"submit\" [disabled]=\"quickAddForm.invalid\"\n class=\"tw-px-2 tw-py-1 tw-w-20\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add'\n }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Add' }}\n </button>\n <button cideEleButton variant=\"outline\" size=\"sm\" type=\"button\" (click)=\"resetQuickAddForm()\"\n class=\"tw-px-2 tw-py-1 tw-w-16\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">refresh</cide-ele-icon>\n Reset\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n\n <!-- Actions -->\n <div\n class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Search functionality is handled by the data grid -->\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 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 </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n\n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n\n <cide-ele-data-grid [config]=\"gridConfig()\" [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\" [serverSidePagination]=\"true\" [totalServerItems]=\"totalItems()\"\n [currentServerPage]=\"currentPage()\" [currentServerPageSize]=\"pageSize()\" (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n </div>\n\n <!-- Designation Details Renderer Template -->\n <ng-template #designationDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Dynamic Icon based on type -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon [class]=\"row.type === 'department' ? 'tw-text-green-500' : 'tw-text-blue-500'\" size=\"xs\">\n {{ row.type === 'department' ? 'business' : 'work' }}\n </cide-ele-icon>\n </div>\n\n <!-- Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" [title]=\"row.name\">\n {{ row.name || 'Untitled' }}\n </div>\n @if (row.type === 'department') {\n <span\n class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-green-100 tw-text-green-800\">\n Department\n </span>\n }\n </div>\n @if (row.description) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" [title]=\"row.description\">\n {{ row.description }}\n </div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Designation Status Renderer Template -->\n <ng-template #designationStatusRendererTemplate let-row=\"row\" let-value=\"value\">\n <span\n class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"getStatusClass(row.status)\">\n {{ getStatusDisplay(row.status) }}\n </span>\n </ng-template>\n\n <!-- Actions Dropdown Renderer Template -->\n <ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown [items]=\"getDropdownItems(row)\" [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n </ng-template>\n</cide-lyt-shared-wrapper>","// Designation Management Components\r\nexport * from './components/designation-list/designation-list.component';\r\n\r\n// Designation Management Services\r\nexport * from './services/designation-management.service'; ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { gradeLevelChangeSequenceControllerResponse, ICoreSydsgl, MGradeLevelChangeSequencePayload, MGradeLevelGetByIdPayload } from 'cloud-ide-lms-model';\nimport { CideCoreGradeLevelManagementService } from '../../services/grade-level-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideLytSharedWrapperComponent } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideIconComponent, CideInputComponent, CideEleDataGridComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, NotificationService, ConfirmationService, CideEleConfirmationModalComponent } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\n\n@Component({\n selector: 'cide-core-grade-level-list',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideInputComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent,\n CideLytSharedWrapperComponent,\n CideEleConfirmationModalComponent\n ],\n templateUrl: './grade-level-list.component.html',\n styleUrls: []\n})\nexport class CideCoreGradeLevelListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private gradeLevelService = inject(CideCoreGradeLevelManagementService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private notificationService = inject(NotificationService);\n private confirmationService = inject(ConfirmationService);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n dragHandleRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('dragHandleRendererTemplate');\n gradeLevelDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('gradeLevelDetailsRendererTemplate');\n gradeLevelStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('gradeLevelStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n \n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n gradeLevels = signal<ICoreSydsgl[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Retrieved grade level data\n retrievedGradeLevel = signal<ICoreSydsgl | null>(null);\n\n // Edit mode flag\n isEditMode = signal(false);\n\n // Drag order management\n hasOrderChanged = signal(false);\n\n // Server-side pagination state\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive form with typed controls\n quickAddForm = this.fb.group({\n sydsgl_name: this.fb.control('', [Validators.required, Validators.minLength(1), Validators.maxLength(20)]),\n sydsgl_description: this.fb.control('', [Validators.maxLength(400)]),\n sydsgl_order: this.fb.control(1, [Validators.required, Validators.min(1), Validators.max(100)]),\n sydsgl_isactive: this.fb.control(true, [Validators.required]),\n sydsgl_entity_id_syen: this.fb.control(this.appState.getActiveEntityId() || '', [Validators.required])\n });\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSydsgl>>({\n id: 'grade-level-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'dragHandle',\n header: '',\n type: 'custom',\n width: '40px',\n truncate: false,\n align: 'center',\n renderer: 'dragHandleRenderer'\n },\n {\n key: 'details',\n header: 'Grade Level',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'gradeLevelDetailsRenderer'\n },\n {\n key: 'sydsgl_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'gradeLevelStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '60px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n dragDrop: {\n enabled: true,\n orderField: 'sydsgl_order',\n dragClass: 'tw-opacity-50 tw-bg-blue-50',\n dropClass: 'tw-bg-green-50'\n },\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search grade levels...',\n searchableColumns: ['sydsgl_name', 'sydsgl_description'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none',\n onRefresh: 'onGradeLevelRefresh'\n });\n\n // Template renderers using Angular best practices\n templateRenderers = computed((): Record<string, TemplateRef<TemplateContext>> => ({\n dragHandleRenderer: this.dragHandleRendererTemplate(),\n gradeLevelDetailsRenderer: this.gradeLevelDetailsRendererTemplate(),\n gradeLevelStatusRenderer: this.gradeLevelStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n }));\n\n /**\n * Get template renderers for data grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return this.templateRenderers();\n }\n\n // Mixed renderers (templates + string functions)\n customRenderers = computed(() => ({\n ...this.templateRenderers()\n }));\n\n /**\n * Get custom renderers adapted for current data grid compatibility\n */\n getCustomRenderers(): Record<string, (value: unknown, row: ICoreSydsgl) => string> {\n return {};\n }\n\n // Action handlers for grid actions\n actionHandlers = {\n onEditGradeLevel: (row: ICoreSydsgl) => this.editGradeLevel(row._id || ''),\n onToggleGradeLevel: (row: ICoreSydsgl) => this.toggleGradeLevelStatus(row._id || ''),\n onDeleteGradeLevel: (row: ICoreSydsgl) => this.deleteGradeLevel(row._id || ''),\n onGradeLevelRowClick: (row: ICoreSydsgl) => this.onGradeLevelRowClick(row),\n onGradeLevelRefresh: () => this.onGradeLevelRefresh(),\n resetOrder: () => this.resetDragOrder(),\n saveOrder: () => this.saveGradeLevelOrder()\n };\n\n // Computed properties\n filteredItems = computed(() => {\n const items = this.gradeLevels();\n const search = this.searchTerm()?.toLowerCase();\n\n if (!search) return items;\n\n return items.filter(item => {\n return item.sydsgl_name?.toLowerCase().includes(search) ||\n item.sydsgl_description?.toLowerCase().includes(search);\n });\n });\n\n hasSelection = computed(() => this.selectedItems().length > 0);\n\n // Pagination computed properties\n totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\n hasNextPage = computed(() => this.currentPage() < this.totalPages());\n hasPreviousPage = computed(() => this.currentPage() > 1);\n\n // Computed property for next order\n nextOrder = computed(() => this.calculateNextOrder());\n\n // Modern constructor with effects for initialization\n constructor() {\n this.initializeComponent();\n this.destroyRef.onDestroy(() => {\n this.cleanupEventListeners();\n });\n }\n\n /**\n * Initialize component with modern patterns\n */\n private initializeComponent(): void {\n console.log('CideCoreGradeLevelListComponent initialized with modern Angular patterns');\n this.loadGradeLevels();\n this.setupEventListeners();\n this.exposeGlobalFunctions();\n }\n\n /**\n * Setup event listeners for dropdown interactions\n */\n private setupEventListeners(): void {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n document.addEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n document.removeEventListener('click', this.handleDropdownAction.bind(this));\n }\n\n /**\n * Expose global functions for dropdown interactions\n */\n private exposeGlobalFunctions(): void {\n if (typeof window !== 'undefined') {\n (window as unknown as { toggleDropdown: (id: string) => void }).toggleDropdown = this.toggleDropdown.bind(this);\n (window as unknown as { handleGradeLevelAction: (action: string, id: string) => void }).handleGradeLevelAction = this.handleGradeLevelAction.bind(this);\n }\n }\n\n /**\n * Load grade levels from service\n */\n loadGradeLevels(): void {\n console.log('🚀 CideCoreGradeLevelListComponent.loadGradeLevels() called');\n this.loading.set(true);\n this.error.set(null);\n\n const requestBody = {\n total: this.totalItems(),\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n query: this.searchTerm()\n };\n console.log('📋 Request body:', requestBody);\n\n if (!this.gradeLevelService) {\n console.error('❌ GradeLevelService is not available');\n this.error.set('Grade level service is not available');\n this.loading.set(false);\n return;\n }\n\n this.gradeLevelService.getGradeLevelList(requestBody)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n console.log('📥 CideCoreGradeLevelListComponent received response:', response);\n if (response?.success) {\n console.log('✅ Response successful, setting grade levels:', response.data);\n const gradeLevelData = response?.data || [];\n this.gradeLevels.set(gradeLevelData);\n this.totalItems.set(response.total || 0);\n this.updateGridData(gradeLevelData);\n\n\n // Update the order field in the form if not in edit mode\n if (!this.isEditMode()) {\n const nextOrder = this.calculateNextOrder();\n this.quickAddForm.patchValue({ sydsgl_order: nextOrder });\n }\n } else {\n console.error('❌ Response was not successful:', response);\n this.error.set('Failed to load grade levels');\n }\n },\n error: (err) => {\n console.error('❌ CideCoreGradeLevelListComponent error:', err);\n this.error.set(err.message || 'An error occurred while loading grade levels');\n },\n complete: () => {\n console.log('CideCoreGradeLevelListComponent loadGradeLevels completed');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(gradeLevels: ICoreSydsgl[]): void {\n console.log('🔄 updateGridData called with:', gradeLevels);\n\n // Create a completely new config object to ensure change detection triggers\n const newConfig: GridConfiguration<ICoreSydsgl> = {\n ...this.gridConfig(),\n data: [...gradeLevels] // Create a new array to ensure reference change\n };\n\n this.gridConfig.set(newConfig);\n console.log('⚙️ Updated grid config with grade levels - new reference created');\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSydsgl>): void {\n console.log('onGridEvent', event);\n switch (event.type) {\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadGradeLevels();\n break;\n case 'pageChange': {\n const pageData = event.data as { page: number; pageSize: number };\n if (pageData) {\n this.currentPage.set(pageData.page);\n this.pageSize.set(pageData.pageSize);\n this.loadGradeLevels();\n } else {\n const page = event.data as number;\n if (page) {\n this.currentPage.set(page);\n this.loadGradeLevels();\n }\n }\n break;\n }\n case 'refresh':\n this.onGradeLevelRefresh();\n break;\n case 'rowClick':\n this.onGradeLevelRowClick(event.data as ICoreSydsgl);\n break;\n case 'rowReorder':\n this.onGradeLevelReorder(event.data as { sourceIndex: number; targetIndex: number; newOrder: ICoreSydsgl[] });\n break;\n case 'action':\n if (event.action?.key === 'edit') {\n this.editGradeLevel(event.data as string);\n } else if (event.action?.key === 'toggle') {\n this.toggleGradeLevelStatus(event.data as string);\n } else if (event.action?.key === 'delete') {\n this.deleteGradeLevel(event.data as string);\n }\n break;\n }\n }\n\n /**\n * Handle grade level refresh\n */\n onGradeLevelRefresh(): void {\n this.loadGradeLevels();\n }\n\n /**\n * Handle grade level reorder via drag and drop\n */\n onGradeLevelReorder(data: { sourceIndex: number; targetIndex: number; newOrder: ICoreSydsgl[]; allOrders?: ICoreSydsgl[] }): void {\n console.log('🔄 Grade level reorder event:', data);\n\n\n // Mark that order has changed\n this.hasOrderChanged.set(true);\n console.log('🔄 Order change detected');\n }\n\n /**\n * Update grid data after reordering\n */\n private updateGridDataAfterReorder() {\n // Create a completely new config object to ensure change detection triggers\n const newConfig: GridConfiguration<ICoreSydsgl> = {\n ...this.gridConfig(),\n data: [...this.gradeLevels()] // Create a new array to ensure reference change\n };\n\n this.gridConfig.set(newConfig);\n console.log('⚙️ Updated grid config after reorder - new reference created');\n }\n\n /**\n * Save grade level order using the change sequence API\n * This method is called by the data grid when save-order action is triggered\n */\n saveGradeLevelOrder() {\n console.log('💾 Saving grade level order...');\n // The data grid will handle the order comparison and only call this if there are actual changes\n // We just need to prepare the payload and make the API call\n\n // Prepare payload for change sequence API with all current grade levels\n const payload: MGradeLevelChangeSequencePayload = {\n grade_level_sequences: this.gradeLevels().map(item => ({\n sydsgl_id: item._id || '',\n sydsgl_order: item.sydsgl_order || 1\n }))\n };\n\n console.log('📤 Sending change sequence payload:', payload);\n\n // Call the change sequence API\n this.gradeLevelService.changeGradeLevelSequence(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: gradeLevelChangeSequenceControllerResponse) => {\n if (response.success) {\n console.log('✅ Grade level sequence updated successfully');\n this.notificationService.success('Grade level sequence updated successfully');\n // Reset change flag first\n this.hasOrderChanged.set(false);\n // Refresh the grade level list from server to get updated order\n this.loadGradeLevels();\n } else {\n console.error('❌ Failed to update grade level sequence:', response);\n this.error.set('Failed to update grade level sequence');\n this.notificationService.error('Failed to update grade level sequence');\n }\n },\n error: (error) => {\n console.error('❌ Error updating grade level sequence:', error);\n this.error.set('Failed to update grade level sequence');\n this.notificationService.error(`Error updating grade level sequence: ${error.message || 'Unknown error occurred'}`);\n }\n });\n }\n\n /**\n * Reset drag order to original state\n */\n resetDragOrder() {\n console.log('🔄 Resetting drag order to original state');\n\n // Reset the change flag\n this.hasOrderChanged.set(false);\n console.log('✅ Drag order reset successfully');\n }\n\n /**\n * Check if order has changed\n */\n hasOrderChanges(): boolean {\n return this.hasOrderChanged();\n }\n\n\n\n\n /**\n * Handle grade level row click\n */\n onGradeLevelRowClick(gradeLevel: ICoreSydsgl): void {\n this.editGradeLevel(gradeLevel._id || '');\n }\n\n /**\n * Navigate to edit grade level form\n */\n editGradeLevel(itemId: string): void {\n console.log('🔵 editGradeLevel called with:', itemId);\n this.isEditMode.set(true);\n this.getGradeLevelById(itemId);\n }\n\n /**\n * Get grade level by ID using the API\n */\n getGradeLevelById(itemId: string): void {\n console.log('🔵 getGradeLevelById called with:', itemId);\n this.loading.set(true);\n const payload: MGradeLevelGetByIdPayload = { sydsgl_id: itemId };\n this.gradeLevelService.getGradeLevelById(payload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Grade level retrieved successfully:', response.data);\n let gradeLevel: ICoreSydsgl | null = null;\n gradeLevel = response.data || null;\n\n this.retrievedGradeLevel.set(gradeLevel);\n\n if (this.isEditMode() && gradeLevel) {\n this.populateFormForEdit(gradeLevel);\n }\n } else {\n this.error.set('Failed to retrieve grade level');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while retrieving the grade level');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Populate form with grade level data for editing\n */\n populateFormForEdit(gradeLevel: ICoreSydsgl): void {\n console.log('🔵 populateFormForEdit called with:', gradeLevel);\n\n this.quickAddForm.patchValue({\n sydsgl_name: gradeLevel.sydsgl_name || '',\n sydsgl_description: gradeLevel.sydsgl_description || '',\n sydsgl_order: gradeLevel.sydsgl_order || 1,\n sydsgl_isactive: gradeLevel.sydsgl_isactive ?? true,\n sydsgl_entity_id_syen: gradeLevel.sydsgl_entity_id_syen || ''\n });\n\n console.log('✅ Form populated for editing:', this.quickAddForm.value);\n }\n\n /**\n * Delete grade level with confirmation dialog\n */\n async deleteGradeLevel(itemId: string): Promise<void> {\n console.log('🔵 deleteGradeLevel called with:', itemId);\n \n // Find the grade level to get its name for the confirmation\n const gradeLevel = this.gradeLevels().find(item => item._id === itemId);\n const gradeLevelName = gradeLevel?.sydsgl_name || 'this grade level';\n \n try {\n // Show confirmation dialog with grade level name\n const confirmed = await this.confirmationService.confirmDelete(gradeLevelName);\n \n if (confirmed) {\n this.loading.set(true);\n\n this.gradeLevelService.deleteGradeLevel(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success(`Grade level \"${gradeLevelName}\" has been deleted successfully.`);\n this.loadGradeLevels();\n } else {\n this.error.set('Failed to delete grade level');\n this.notificationService.error('Failed to delete grade level. Please try again.');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while deleting the grade level');\n this.notificationService.error(`Error deleting grade level: ${err.message || 'Unknown error occurred'}`);\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n } catch (error) {\n console.log('🔵 Delete operation cancelled by user');\n }\n }\n\n /**\n * Delete multiple grade levels with confirmation dialog\n */\n async deleteMultipleGradeLevels(): Promise<void> {\n const selectedIds = this.selectedItems();\n if (selectedIds.length === 0) {\n this.notificationService.warning('Please select grade levels to delete.');\n return;\n }\n\n // Get names of selected grade levels for confirmation\n const selectedGradeLevels = this.gradeLevels().filter(item => selectedIds.includes(item._id || ''));\n const gradeLevelNames = selectedGradeLevels.map(item => item.sydsgl_name).join(', ');\n \n const count = selectedIds.length;\n \n try {\n const confirmed = await this.confirmationService.ask({\n title: 'Confirm Bulk Delete',\n message: `Are you sure you want to delete ${count} grade level${count > 1 ? 's' : ''}?\\n\\nSelected: ${gradeLevelNames}\\n\\nThis action cannot be undone.`,\n type: 'danger',\n icon: 'delete_forever',\n confirmText: `Delete ${count} Item${count > 1 ? 's' : ''}`,\n cancelText: 'Cancel'\n });\n\n if (confirmed) {\n this.loading.set(true);\n\n this.gradeLevelService.deleteMultipleGradeLevels(selectedIds)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.notificationService.success(`${count} grade level${count > 1 ? 's' : ''} deleted successfully.`);\n this.selectedItems.set([]);\n this.loadGradeLevels();\n } else {\n this.error.set('Failed to delete grade levels');\n this.notificationService.error('Failed to delete grade levels. Please try again.');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while deleting grade levels');\n this.notificationService.error(`Error deleting grade levels: ${err.message || 'Unknown error occurred'}`);\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n } catch (error) {\n console.log('🔵 Bulk delete operation cancelled by user');\n }\n }\n\n /**\n * Toggle grade level status\n */\n toggleGradeLevelStatus(itemId: string): void {\n console.log('🔵 toggleGradeLevelStatus called with:', itemId);\n this.loading.set(true);\n\n this.gradeLevelService.toggleGradeLevelStatus(itemId)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadGradeLevels();\n } else {\n this.error.set('Failed to toggle grade level status');\n }\n },\n error: (err) => {\n this.error.set(err.message || 'An error occurred while toggling status');\n },\n complete: () => {\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Quick add or update grade level using reactive form\n */\n quickAddGradeLevel() {\n if (this.quickAddForm.invalid) return;\n\n const formValue = this.quickAddForm.value;\n\n // For new grade levels, ensure the order is set to the calculated next order\n let order = formValue.sydsgl_order;\n if (!this.isEditMode()) {\n order = this.calculateNextOrder();\n }\n\n const gradeLevel: Partial<ICoreSydsgl> = {\n _id: this.retrievedGradeLevel()?._id || '',\n sydsgl_name: formValue.sydsgl_name,\n sydsgl_description: formValue.sydsgl_description || '',\n sydsgl_order: order,\n sydsgl_isactive: formValue.sydsgl_isactive,\n sydsgl_entity_id_syen: formValue.sydsgl_entity_id_syen\n };\n\n if (this.isEditMode() && this.retrievedGradeLevel()) {\n const itemId = this.retrievedGradeLevel()?._id;\n if (itemId) {\n console.log('🔵 Updating grade level:', itemId);\n this.gradeLevelService.updateGradeLevel(itemId, gradeLevel).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Grade level updated successfully');\n this.resetQuickAddForm();\n this.isEditMode.set(false);\n this.retrievedGradeLevel.set(null);\n this.loadGradeLevels();\n }\n },\n error: () => {\n this.error.set('Failed to update grade level');\n }\n });\n }\n } else {\n console.log('🔵 Creating new grade level');\n this.gradeLevelService.createGradeLevel(gradeLevel).subscribe({\n next: (response) => {\n if (response.success) {\n console.log('✅ Grade level created successfully');\n this.resetQuickAddForm();\n this.loadGradeLevels();\n }\n },\n error: () => {\n this.error.set('Failed to create grade level');\n }\n });\n }\n }\n\n /**\n * Calculate the highest order from existing grade levels\n */\n private calculateNextOrder(): number {\n const currentGradeLevels = this.gradeLevels();\n if (currentGradeLevels.length === 0) {\n return 1;\n }\n\n const maxOrder = Math.max(...currentGradeLevels.map(level => level.sydsgl_order || 0));\n return maxOrder + 1;\n }\n\n /**\n * Reset the quick add form to default values\n */\n resetQuickAddForm(): void {\n this.isEditMode.set(false);\n this.retrievedGradeLevel.set(null);\n\n // Calculate the next order automatically\n const nextOrder = this.calculateNextOrder();\n\n this.quickAddForm.reset({\n sydsgl_name: '',\n sydsgl_description: '',\n sydsgl_order: nextOrder,\n sydsgl_isactive: true,\n sydsgl_entity_id_syen: this.appState.getActiveEntityId() || ''\n });\n }\n\n /**\n * Handle click outside dropdown\n */\n private handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n\n if (!target?.closest('[data-dropdown]') && !target?.closest('[data-action=\"more-actions\"]')) {\n document.querySelectorAll('[data-dropdown]').forEach((el: Element) => {\n const dropdown = el as HTMLElement;\n dropdown.classList.add('tw-hidden');\n });\n\n document.querySelectorAll('[data-action=\"more-actions\"]').forEach((el: Element) => {\n const button = el as HTMLElement;\n button.setAttribute('aria-expanded', 'false');\n });\n }\n }\n\n /**\n * Handle dropdown action clicks\n */\n private handleDropdownAction(event: Event): void {\n const target = event.target as HTMLElement;\n const actionButton = target.closest('[data-action]') as HTMLElement;\n\n if (actionButton) {\n const action = actionButton.getAttribute('data-action');\n const itemId = actionButton.getAttribute('data-item-id');\n\n if (action && itemId) {\n event.preventDefault();\n event.stopPropagation();\n\n const dropdown = actionButton.closest('[data-dropdown]') as HTMLElement;\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editGradeLevel(itemId);\n break;\n case 'toggle':\n this.toggleGradeLevelStatus(itemId);\n break;\n case 'delete':\n this.deleteGradeLevel(itemId);\n break;\n }\n }\n }\n }\n\n /**\n * Toggle dropdown visibility\n */\n toggleDropdown(itemId: string) {\n document.querySelectorAll('.dropdown-menu').forEach(menu => {\n if (menu.getAttribute('data-dropdown') !== itemId) {\n menu.classList.add('tw-hidden');\n }\n });\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.toggle('tw-hidden');\n }\n }\n\n /**\n * Handle grade level action clicks\n */\n handleGradeLevelAction(action: string, itemId: string) {\n const item = this.gradeLevels().find(item => item._id === itemId);\n if (!item) return;\n\n const dropdown = document.querySelector(`[data-dropdown=\"${itemId}\"]`);\n if (dropdown) {\n dropdown.classList.add('tw-hidden');\n }\n\n switch (action) {\n case 'edit':\n this.editGradeLevel(itemId);\n break;\n case 'toggle':\n this.toggleGradeLevelStatus(itemId);\n break;\n case 'delete':\n this.deleteGradeLevel(itemId);\n break;\n }\n }\n\n /**\n * Get status display\n */\n getStatusDisplay(isActive: boolean): string {\n return isActive ? 'Active' : 'Inactive';\n }\n\n /**\n * Get status class for styling\n */\n getStatusClass(isActive: boolean): string {\n return isActive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800';\n }\n\n /**\n * Generate dropdown items for grade level actions\n */\n getDropdownItems(row: ICoreSydsgl): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'toggle',\n label: row.sydsgl_isactive ? 'Deactivate' : 'Activate',\n icon: 'power_settings_new',\n iconColor: 'tw-text-gray-400',\n textColor: 'tw-text-gray-700',\n hoverBgColor: 'hover:tw-bg-gray-100'\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n iconColor: 'tw-text-red-400',\n textColor: 'tw-text-red-600',\n hoverBgColor: 'hover:tw-bg-red-50'\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSydsgl): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n this.editGradeLevel(row._id || '');\n break;\n case 'toggle':\n this.toggleGradeLevelStatus(row._id || '');\n break;\n case 'delete':\n this.deleteGradeLevel(row._id || '');\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n /**\n * Track by function for ngFor\n */\n trackByItemId(index: number, item: ICoreSydsgl): string {\n return item._id || '';\n }\n} ","<!-- Grade Level List with Shared Wrapper -->\n<cide-lyt-shared-wrapper [shared_wrapper_setup_param]=\"{ sypg_page_code: 'core_grade_level_list' }\">\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Quick Add Form Section -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-4 tw-border-b tw-border-gray-200 tw-bg-white\">\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-3\">\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Grade Level' : 'Quick Add Grade Level' }}</h6>\n </div>\n </div>\n \n <form [formGroup]=\"quickAddForm\" (ngSubmit)=\"quickAddGradeLevel()\">\n <!-- First Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-mb-3\">\n <!-- Grade Level Name -->\n <div>\n <cide-ele-input \n id=\"sydsgl_name\" \n label=\"Name*\" \n formControlName=\"sydsgl_name\"\n placeholder=\"Grade level name\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Active Status -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <cide-ele-input \n id=\"sydsgl_isactive\"\n type=\"checkbox\"\n label=\"Active\"\n formControlName=\"sydsgl_isactive\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n </div>\n \n <!-- Second Row -->\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-4 tw-gap-3 tw-items-end\">\n <!-- Description -->\n <div>\n <cide-ele-textarea \n id=\"sydsgl_description\" \n label=\"Description\" \n formControlName=\"sydsgl_description\"\n placeholder=\"Grade level description\"\n rows=\"2\"\n size=\"sm\">\n </cide-ele-textarea>\n </div>\n \n <!-- Entity ID (Hidden) -->\n <div class=\"tw-hidden\">\n <cide-ele-input \n id=\"sydsgl_entity_id_syen\" \n label=\"Entity ID*\" \n formControlName=\"sydsgl_entity_id_syen\"\n placeholder=\"Entity ID\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n \n <!-- Action Buttons -->\n <div class=\"tw-flex tw-flex-col tw-justify-end\">\n <div class=\"tw-flex tw-space-x-2\">\n <button \n cideEleButton \n variant=\"primary\" \n size=\"sm\" \n type=\"submit\"\n [disabled]=\"quickAddForm.invalid\"\n class=\"tw-px-2 tw-py-1 tw-w-20\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n {{ isEditMode() ? 'Update' : 'Add' }}\n </button>\n <button \n cideEleButton \n variant=\"outline\" \n size=\"sm\" \n type=\"button\"\n (click)=\"resetQuickAddForm()\"\n class=\"tw-px-2 tw-py-1 tw-w-16\">\n <cide-ele-icon size=\"xs\" class=\"tw-w-4 tw-h-4 tw-mr-1\">refresh</cide-ele-icon>\n Reset\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n \n <cide-ele-data-grid \n [config]=\"gridConfig()\" \n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [serverSidePagination]=\"true\" \n [totalServerItems]=\"totalItems()\" \n [currentServerPage]=\"currentPage()\"\n [currentServerPageSize]=\"pageSize()\" \n [dragDropEnabled]=\"true\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Drag Handle Renderer Template -->\n<ng-template #dragHandleRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-justify-center tw-w-full tw-h-full tw-cursor-move drag-handle\">\n <cide-ele-icon \n class=\"tw-text-gray-400 hover:tw-text-gray-600 tw-transition-colors\" \n size=\"xs\">\n drag_indicator\n </cide-ele-icon>\n </div>\n</ng-template>\n\n<!-- Grade Level Details Renderer Template -->\n<ng-template #gradeLevelDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Grade Level Icon -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon \n class=\"tw-text-gray-400\" \n size=\"xs\">\n school\n </cide-ele-icon>\n </div>\n \n <!-- Grade Level Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.sydsgl_name\">\n {{ row.sydsgl_name || 'Untitled' }}\n </div>\n @if (row.sydsgl_description) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.sydsgl_description\">\n {{ row.sydsgl_description }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Grade Level Status Renderer Template -->\n<ng-template #gradeLevelStatusRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"getStatusClass(row.sydsgl_isactive)\">\n {{ getStatusDisplay(row.sydsgl_isactive) }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown \n [items]=\"getDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template>\n\n<!-- Confirmation Modal -->\n</cide-lyt-shared-wrapper>\n<cide-ele-confirmation-modal></cide-ele-confirmation-modal> ","// Grade Level Management Components\r\nexport * from './components/grade-level-list/grade-level-list.component';\r\n\r\n// Grade Level Management Services\r\nexport * from './services/grade-level-management.service'; ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport {\r\n cidePath,\r\n coreRoutesUrl,\r\n generateStringFromObject,\r\n hostManagerRoutesUrl,\r\n MSystemPages,\r\n MSystemPagesCheckCodeExistsPayload,\r\n MSystemPagesDeletePayload,\r\n MSystemPagesGetByIdPayload,\r\n MSystemPagesInsertUpdatePayload,\r\n MSystemPagesToggleStatusPayload,\r\n systemPagesByIdControllerResponse,\r\n systemPagesCheckCodeExistsControllerResponse,\r\n systemPagesControllerResponse,\r\n systemPagesDeleteControllerResponse,\r\n systemPagesInsertUpdateControllerResponse,\r\n systemPagesToggleStatusControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideCorePageManagementService {\r\n constructor(private http: HttpClient) { }\r\n\r\n /**\r\n * Get page list from API\r\n */\r\n getPageList(body: MSystemPages): Observable<systemPagesControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<systemPagesControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, query]))\r\n .pipe(\r\n catchError(error => {\r\n console.error('CideCorePageManagementService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Create or update page using single API endpoint\r\n */\r\n createOrUpdatePage(payload: MSystemPagesInsertUpdatePayload): Observable<systemPagesInsertUpdateControllerResponse> {\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page]);\r\n return this.http.post<systemPagesInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Get page by ID\r\n */\r\n getPageById(id: string): Observable<systemPagesByIdControllerResponse> {\r\n console.log('Getting page by ID:', id);\r\n const payload: MSystemPagesGetByIdPayload = { sypg_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, 'byId', query]);\r\n return this.http.get<systemPagesByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete page\r\n */\r\n deletePage(id: string): Observable<systemPagesDeleteControllerResponse> {\r\n const payload: MSystemPagesDeletePayload = { sypg_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, query]);\r\n return this.http.delete<systemPagesDeleteControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Toggle page active status\r\n */\r\n togglePageStatus(payload: MSystemPagesToggleStatusPayload): Observable<systemPagesToggleStatusControllerResponse> {\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, query]);\r\n return this.http.put<systemPagesToggleStatusControllerResponse>(url, {})\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Find page by ID using API\r\n */\r\n findPageById(payload: MSystemPagesCheckCodeExistsPayload): Observable<systemPagesCheckCodeExistsControllerResponse> {\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.page, 'checkCodeExists', query]);\r\n return this.http.get<systemPagesCheckCodeExistsControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Check if page code already exists\r\n */\r\n checkPageCodeExists(payload: MSystemPagesCheckCodeExistsPayload): Observable<boolean> {\r\n return this.findPageById(payload).pipe(\r\n map((response: systemPagesCheckCodeExistsControllerResponse) => response.success || false)\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Page Management Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, viewChild, TemplateRef, DestroyRef, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CideCorePageManagementService } from '../../services/page-management.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideIconComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem } from 'cloud-ide-element';\nimport { CideEleDataGridComponent } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\nimport { ICoreSypg, systemPagesControllerResponse, generateStringFromObject, MSystemPages } from 'cloud-ide-lms-model';\n\n@Component({\n selector: 'cide-core-page-list',\n standalone: true,\n imports: [\n CommonModule,\n CideEleDataGridComponent,\n CideEleButtonComponent,\n CideIconComponent,\n CideEleDropdownComponent\n ],\n templateUrl: './page-list.component.html'\n})\nexport class CideCorePageListComponent {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private pageService = inject(CideCorePageManagementService);\n private appState = inject(AppStateHelperService);\n private router = inject(Router);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n pageDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('pageDetailsRendererTemplate');\n pageStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('pageStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n pages = signal<ICoreSypg[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Pagination signals\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSypg>>({\n id: 'page-list-grid',\n columns: [\n {\n key: 'details',\n header: 'Page Details',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'pageDetailsRenderer'\n },\n {\n key: 'sypg_page_code',\n header: 'Page Code',\n type: 'text',\n width: '150px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'sypg_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'pageStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '120px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search pages...',\n searchableColumns: ['sypg_title', 'sypg_desc', 'sypg_page_code'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false\n });\n\n // Action handlers for grid\n actionHandlers = {\n onEdit: (item: ICoreSypg) => this.editPage(item),\n onDelete: (item: ICoreSypg) => this.deletePage(item),\n onToggleStatus: (item: ICoreSypg) => this.togglePageStatus(item),\n onManageThemes: (item: ICoreSypg) => this.manageThemes(item),\n onManageControls: (item: ICoreSypg) => this.manageControls(item)\n };\n\n constructor() {\n this.initializeComponent();\n }\n\n /**\n * Initialize component\n */\n private initializeComponent(): void {\n this.loadPages();\n }\n\n /**\n * Load pages from API\n */\n private loadPages(): void {\n this.loading.set(true);\n this.error.set(null);\n\n const request: MSystemPages = {\n pageIndex: this.currentPage(),\n pageSize: this.pageSize(),\n pagination: true,\n query: this.searchTerm() || undefined\n };\n\n this.pageService.getPageList(request)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response: systemPagesControllerResponse) => {\n if (response.success) {\n this.pages.set(response.data || []);\n this.totalItems.set(response.total || 0);\n this.updateGridData();\n } else {\n this.error.set(response.message || 'Failed to load pages');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading pages:', error);\n this.error.set('Failed to load pages. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(): void {\n this.gridConfig.update(config => ({\n ...config,\n data: this.pages()\n }));\n }\n\n /**\n * Get template renderers for grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return {\n pageDetailsRenderer: this.pageDetailsRendererTemplate(),\n pageStatusRenderer: this.pageStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n };\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSypg>): void {\n switch (event.type) {\n case 'pageChange':\n console.log('🔵 Page change event:', event);\n if (event.data && typeof event.data === 'object' && 'page' in event.data && 'pageSize' in event.data) {\n this.currentPage.set(event.data['page'] as number);\n this.pageSize.set(event.data['pageSize'] as number);\n this.loadPages();\n }\n break;\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadPages();\n break;\n case 'refresh':\n this.loadPages();\n break;\n case 'action':\n // Handle action events if needed\n console.log('Action event:', event);\n break;\n case 'rowClick':\n // Handle row click events if needed\n console.log('Row click event:', event);\n break;\n case 'sort':\n // Handle sort events if needed\n console.log('Sort event:', event);\n break;\n case 'export':\n // Handle export events if needed\n console.log('Export event:', event);\n break;\n case 'rowReorder':\n // Handle row reorder events if needed\n console.log('Row reorder event:', event);\n break;\n }\n }\n\n /**\n * Navigate to create page\n */\n createPage(): void {\n this.router.navigate(['/control-panel/page-form']);\n }\n\n /**\n * Edit page - navigate to edit page\n */\n editPage(page: ICoreSypg): void {\n const query: string = generateStringFromObject({\n sypg_id: page._id,\n sypg_title: page.sypg_title\n });\n this.router.navigate(['/control-panel/page-form', query]);\n }\n\n /**\n * Delete page\n */\n deletePage(page: ICoreSypg): void {\n if (confirm(`Are you sure you want to delete the page \"${page.sypg_title}\"?`)) {\n this.loading.set(true);\n this.pageService.deletePage(page._id || '')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadPages();\n console.log('✅ Page deleted successfully');\n } else {\n console.error('❌ Failed to delete page:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error deleting page:', error);\n console.error('❌ Failed to delete page. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle page status\n */\n togglePageStatus(page: ICoreSypg): void {\n this.loading.set(true);\n this.pageService.togglePageStatus({ sypg_id: page._id || '', sypg_isactive: !page.sypg_isactive })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadPages();\n console.log(`✅ Page ${page.sypg_isactive ? 'deactivated' : 'activated'} successfully`);\n } else {\n console.error('❌ Failed to toggle page status:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error toggling page status:', error);\n console.error('❌ Failed to toggle page status. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Manage themes for a page\n */\n manageThemes(page: ICoreSypg): void {\n const query: string = generateStringFromObject({ sypg_id: page._id, sypg_title: page.sypg_title })\n this.router.navigate(['control-panel', 'page-theme', query]);\n }\n\n /**\n * Manage controls for a page\n */\n manageControls(page: ICoreSypg): void {\n const query: string = generateStringFromObject({ sypg_id: page._id, sypg_title: page.sypg_title })\n this.router.navigate(['control-panel', 'page-controls', query]);\n }\n\n /**\n * Get dropdown items for actions\n */\n getActionDropdownItems(page: ICoreSypg): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n disabled: false\n },\n {\n id: 'themes',\n label: 'Manage Themes',\n icon: 'palette',\n disabled: false\n },\n {\n id: 'controls',\n label: 'Manage Controls',\n icon: 'settings',\n disabled: false\n },\n {\n id: 'toggle',\n label: page.sypg_isactive ? 'Deactivate' : 'Activate',\n icon: page.sypg_isactive ? 'block' : 'check_circle',\n disabled: false\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n disabled: false\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n * This method handles clicks on dropdown menu items in the actions column\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSypg): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n console.log('🔵 Calling editPage with:', row);\n this.editPage(row);\n break;\n case 'themes':\n console.log('🔵 Calling manageThemes with:', row);\n this.manageThemes(row);\n break;\n case 'controls':\n console.log('🔵 Calling manageControls with:', row);\n this.manageControls(row);\n break;\n case 'toggle':\n console.log('🔵 Calling togglePageStatus with:', row);\n this.togglePageStatus(row);\n break;\n case 'delete':\n console.log('🔵 Calling deletePage with:', row);\n this.deletePage(row);\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n // Close all dropdowns after action\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n // Close all dropdowns by clicking outside\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n} ","<!-- Page List Container -->\n<div class=\"tw-table tw-w-full tw-h-full\">\n\n <!-- Header Section with Filters -->\n <div class=\"tw-table-row tw-h-0\">\n <div class=\"tw-table-cell tw-px-6 tw-py-3 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0\">\n\n <!-- Title -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">web</cide-ele-icon>\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">Page Management</h5>\n </div>\n\n <!-- Actions -->\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-items-start sm:tw-items-center tw-space-y-3 sm:tw-space-y-0 sm:tw-space-x-3\">\n <!-- Add Page Button -->\n <button\n cideEleButton\n variant=\"primary\"\n size=\"sm\"\n (click)=\"createPage()\"\n leftIcon=\"add\"\n class=\"tw-whitespace-nowrap tw-flex tw-items-center tw-gap-2\">\n Create New Page\n </button>\n </div>\n </div>\n\n <!-- Error Message -->\n @if (error()) {\n <div class=\"tw-mt-4 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 class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\">error</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 </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-table-row\">\n <div class=\"tw-table-cell tw-h-full tw-relative\">\n \n <!-- Data Grid Component -->\n <div class=\"tw-h-full tw-overflow-auto\">\n <cide-ele-data-grid\n [config]=\"gridConfig()\"\n [templateRenderers]=\"getTemplateRenderers()\"\n [actionHandlers]=\"actionHandlers\"\n [serverSidePagination]=\"true\"\n [totalServerItems]=\"totalItems()\"\n [currentServerPage]=\"currentPage()\"\n [currentServerPageSize]=\"pageSize()\"\n (gridEvent)=\"onGridEvent($event)\">\n </cide-ele-data-grid>\n </div>\n\n </div>\n </div>\n\n</div>\n\n<!-- Page Details Renderer Template -->\n<ng-template #pageDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\n <!-- Page Icon -->\n <div class=\"tw-flex-shrink-0\">\n <cide-ele-icon class=\"tw-text-gray-400 tw-w-4 tw-h-4\">web</cide-ele-icon>\n </div>\n \n <!-- Page Details -->\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \n [title]=\"row.sypg_title\">\n {{ row.sypg_title || 'Untitled' }}\n </div>\n @if (row.sypg_desc) {\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \n [title]=\"row.sypg_desc\">\n {{ row.sypg_desc }}\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<!-- Page Status Renderer Template -->\n<ng-template #pageStatusRendererTemplate let-row=\"row\" let-value=\"value\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\n [ngClass]=\"row.sypg_isactive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800'\">\n {{ row.sypg_isactive ? 'Active' : 'Inactive' }}\n </span>\n</ng-template>\n\n<!-- Actions Dropdown Renderer Template -->\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\n <cide-ele-dropdown\n [items]=\"getActionDropdownItems(row)\"\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\n (itemClick)=\"onDropdownItemClick($event, row)\">\n </cide-ele-dropdown>\n</ng-template> ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl,\r\n MSystemPagesTheme,\r\n MSystemPagesThemeGetByIdPayload,\r\n MSystemPagesThemeDeletePayload,\r\n MSystemPagesThemeInsertUpdatePayload,\r\n MSystemPagesThemeToggleStatusPayload,\r\n MSystemPagesThemeByPageIdPayload,\r\n systemPagesThemeControllerResponse,\r\n systemPagesThemeByIdControllerResponse,\r\n systemPagesThemeInsertUpdateControllerResponse,\r\n systemPagesThemeDeleteControllerResponse,\r\n systemPagesThemeToggleStatusControllerResponse,\r\n systemPagesThemeByPageIdControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideCorePageThemeService {\r\n private apiUrl = `${coreRoutesUrl?.pageTheme}`;\r\n\r\n constructor(private http: HttpClient) {\r\n console.log('CideCorePageThemeService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get theme list from API\r\n */\r\n getThemeList(body: MSystemPagesTheme): Observable<systemPagesThemeControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<systemPagesThemeControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, query]))\r\n .pipe(\r\n catchError(error => {\r\n console.error('CideCorePageThemeService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Create new theme\r\n */\r\n createTheme(payload: MSystemPagesThemeInsertUpdatePayload): Observable<systemPagesThemeInsertUpdateControllerResponse> {\r\n console.log('Creating theme:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme]);\r\n return this.http.post<systemPagesThemeInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing theme\r\n */\r\n updateTheme(payload: MSystemPagesThemeInsertUpdatePayload): Observable<systemPagesThemeInsertUpdateControllerResponse> {\r\n console.log('Updating theme:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme]);\r\n return this.http.post<systemPagesThemeInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get theme by ID\r\n */\r\n getThemeById(id: string): Observable<systemPagesThemeByIdControllerResponse> {\r\n console.log('Getting theme by ID:', id);\r\n const payload: MSystemPagesThemeGetByIdPayload = { sytm_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, 'byId', query]);\r\n return this.http.get<systemPagesThemeByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get themes by page ID\r\n */\r\n getThemesByPageId(pageId: string): Observable<systemPagesThemeByPageIdControllerResponse> {\r\n console.log('Getting themes by page ID:', pageId);\r\n const payload: MSystemPagesThemeByPageIdPayload = { sytm_page_id_sypg: pageId };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, 'byPage', query]);\r\n return this.http.get<systemPagesThemeByPageIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete theme\r\n */\r\n deleteTheme(id: string): Observable<systemPagesThemeDeleteControllerResponse> {\r\n const payload: MSystemPagesThemeDeletePayload = { sytm_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, query]);\r\n return this.http.delete<systemPagesThemeDeleteControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle theme active status\r\n */\r\n toggleThemeStatus(payload: MSystemPagesThemeToggleStatusPayload): Observable<systemPagesThemeToggleStatusControllerResponse> {\r\n console.log('Toggling theme status:', payload);\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageTheme, query]);\r\n return this.http.put<systemPagesThemeToggleStatusControllerResponse>(url, {})\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Page Theme Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, viewChild, TemplateRef, DestroyRef, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Validators, ReactiveFormsModule, NonNullableFormBuilder, FormsModule, FormArray, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CideCorePageThemeService } from '../../services/page-theme.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideEleDataGridComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideTextareaComponent, GridConfiguration, GridEvent, CideEleDropdownComponent, DropdownItem, CideEleJsonEditorComponent, CideSelectOptionComponent, CideEleFileInputComponent, FileUploadData, CideEleFileImageDirective } from 'cloud-ide-element';\nimport { TemplateContext } from 'cloud-ide-element';\nimport { ICoreSytm, MSystemPagesThemeInsertUpdatePayload, ICoreSythDrawer, MSystemPagesTheme, generateObjectFromString } from 'cloud-ide-lms-model';\n\n@Component({\n selector: 'cide-core-page-theme',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideTextareaComponent,\n CideIconComponent,\n CideEleDropdownComponent,\n CideEleJsonEditorComponent,\n CideEleFileInputComponent,\n CideEleFileImageDirective,\n],\n templateUrl: './page-theme.component.html',\n styleUrls: []\n})\nexport class CideCorePageThemeComponent implements OnInit {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private themeService = inject(CideCorePageThemeService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n\n // Modern ViewChild signals for template renderers (Angular 20 approach)\n themeDetailsRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('themeDetailsRendererTemplate');\n themeStatusRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('themeStatusRendererTemplate');\n actionsDropdownRendererTemplate = viewChild.required<TemplateRef<TemplateContext<Record<string, unknown>>>>('actionsDropdownRendererTemplate');\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n themes = signal<ICoreSytm[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Derived list filtered by searchTerm\n filteredThemes = computed(() => {\n const q = (this.searchTerm() || '').toLowerCase().trim();\n const items = this.themes() || [];\n if (!q) return items;\n return items.filter(t => {\n const title = (t.sytm_title || '').toLowerCase();\n const code = (t.sytm_theme_code || '').toLowerCase();\n const desc = (t.sytm_desc || '').toLowerCase();\n return title.includes(q) || code.includes(q) || desc.includes(q);\n });\n });\n\n\n // Input handler to avoid $any casts in template\n onGallerySearchInput(event: Event): void {\n const target = event.target as HTMLInputElement | null;\n this.searchTerm.set(target?.value ?? '');\n }\n\n // Page information\n pageId = signal<string>('');\n pageTitle = signal<string>('');\n\n // Form state\n isEditMode = signal(false);\n editingThemeId = signal<string | null>(null);\n retrievedTheme = signal<ICoreSytm | null>(null);\n\n // Pagination signals\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive forms with signals\n themeForm = this.fb.group({\n sytm_title: ['', [Validators.required]],\n sytm_desc: [''],\n sytm_theme_code: ['', [Validators.required]],\n sytm_preview_id_fm: [''],\n sytm_sub_title: [''],\n sytm_configuration: ['{}'],\n sytm_entity_id_syen: [''],\n sytm_isselected: [false],\n sytm_layout: this.fb.group({\n sytm_layout_sidebar: this.fb.group({ status: [true] }),\n sytm_layout_header: this.fb.group({ status: [true] }),\n sytm_layout_footer: this.fb.group({ status: [false] }),\n sytm_layout_breadcrumb: this.fb.group({ status: [true] }),\n sytm_layout_console: this.fb.group({ status: [false] }),\n sytm_layout_request: this.fb.group({ status: [false] }),\n sytm_layout_drawer: this.fb.array([] as ICoreSythDrawer[])\n }),\n sytm_isactive: [true]\n });\n\n // Computed values\n isFormDirty = computed(() => this.themeForm.dirty);\n\n // Multi-select options for layout sections\n layoutOptions = [\n { value: 'sidebar', label: 'Sidebar' },\n { value: 'header', label: 'Header' },\n { value: 'footer', label: 'Footer' },\n { value: 'breadcrumb', label: 'Breadcrumb' },\n { value: 'console', label: 'Console' },\n { value: 'request', label: 'Request' }\n ] as const;\n\n // Read enabled selections from form values\n enabledLayoutSelections(): string[] {\n const layout = this.themeForm.get('sytm_layout');\n if (!layout) return [];\n const selections: string[] = [];\n\n const getBool = (path: string) => Boolean(this.themeForm.get(path)?.value);\n\n if (getBool('sytm_layout.sytm_layout_sidebar.status')) selections.push('sidebar');\n if (getBool('sytm_layout.sytm_layout_header.status')) selections.push('header');\n if (getBool('sytm_layout.sytm_layout_footer.status')) selections.push('footer');\n if (getBool('sytm_layout.sytm_layout_breadcrumb.status')) selections.push('breadcrumb');\n if (getBool('sytm_layout.sytm_layout_console.status')) selections.push('console');\n if (getBool('sytm_layout.sytm_layout_request.status')) selections.push('request');\n\n return selections;\n }\n\n // Update form booleans from multi-select change\n onEnabledLayoutChange(values: string[]): void {\n const setBool = (path: string, val: boolean) => this.themeForm.get(path)?.setValue(val);\n\n const selected = new Set(values);\n setBool('sytm_layout.sytm_layout_sidebar.status', selected.has('sidebar'));\n setBool('sytm_layout.sytm_layout_header.status', selected.has('header'));\n setBool('sytm_layout.sytm_layout_footer.status', selected.has('footer'));\n setBool('sytm_layout.sytm_layout_breadcrumb.status', selected.has('breadcrumb'));\n setBool('sytm_layout.sytm_layout_console.status', selected.has('console'));\n setBool('sytm_layout.sytm_layout_request.status', selected.has('request'));\n }\n\n // Grid configuration signal\n gridConfig = signal<GridConfiguration<ICoreSytm>>({\n id: 'theme-list-grid',\n title: '',\n subtitle: '',\n columns: [\n {\n key: 'details',\n header: 'Theme Details',\n type: 'custom',\n width: 'auto',\n truncate: true,\n align: 'left',\n renderer: 'themeDetailsRenderer'\n },\n {\n key: 'sytm_theme_code',\n header: 'Theme Code',\n type: 'text',\n width: '150px',\n truncate: true,\n align: 'left'\n },\n {\n key: 'sytm_isactive',\n header: 'Status',\n type: 'custom',\n width: '100px',\n truncate: false,\n align: 'center',\n renderer: 'themeStatusRenderer'\n },\n {\n key: 'actions',\n header: '',\n type: 'custom',\n width: '120px',\n truncate: false,\n align: 'center',\n renderer: 'actionsDropdownRenderer'\n }\n ],\n data: [],\n trackBy: '_id',\n pagination: {\n enabled: true,\n pageSize: 10,\n pageSizeOptions: [10, 25, 50, 100],\n showQuickJump: true,\n showPageInfo: true,\n showRefresh: true\n },\n search: {\n enabled: true,\n placeholder: 'Search themes...',\n searchableColumns: ['sytm_title', 'sytm_desc', 'sytm_theme_code'],\n debounceMs: 300\n },\n loading: {\n useDefer: true,\n skeletonRows: 5,\n showOverlay: false\n },\n scroll: {\n enabled: true,\n maxHeight: '',\n minHeight: '',\n stickyHeader: true,\n virtualScroll: false,\n rowHeight: 50\n },\n responsive: true,\n striped: false,\n bordered: true,\n compact: false,\n tableClass: 'tw-table-fixed tw-w-full tw-rounded-none'\n });\n\n // Action handlers for grid\n actionHandlers = {\n onEdit: (item: ICoreSytm) => this.editTheme(item),\n onDelete: (item: ICoreSytm) => this.deleteTheme(item),\n onToggleStatus: (item: ICoreSytm) => this.toggleThemeStatus(item)\n };\n\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n /**\n * Initialize component\n */\n private initializeComponent(): void {\n // Get page information from route\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\n console.log('🔍 Query params:', params);\n const queryParams = params['query'];\n const queryData = generateObjectFromString(queryParams);\n\n this.pageId.set(queryData?.sypg_id || '');\n this.pageTitle.set(queryData?.sypg_title || '');\n\n if (this.pageId()) {\n this.loadThemes();\n this.setupFormSubscriptions();\n } else {\n this.error.set('No page ID provided');\n }\n });\n }\n\n /**\n * Load themes from API\n */\n private loadThemes(): void {\n this.loading.set(true);\n this.error.set(null);\n\n const request: MSystemPagesTheme = {\n sytm_page_id_sypg: this.pageId()\n };\n\n this.themeService.getThemeList(request)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.themes.set(response.data || []);\n this.totalItems.set(response.total || 0);\n this.updateGridData();\n } else {\n this.error.set(response.message || 'Failed to load themes');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading themes:', error);\n this.error.set('Failed to load themes. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Setup form subscriptions\n */\n private setupFormSubscriptions(): void {\n // Watch for form changes to enable/disable save button\n this.themeForm.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Form validation is handled by computed signals\n });\n }\n\n /**\n * Update grid data\n */\n private updateGridData(): void {\n this.gridConfig.update(config => ({\n ...config,\n data: this.themes()\n }));\n }\n\n /**\n * Get custom renderers for grid\n */\n\n\n /**\n * Get template renderers for grid\n */\n getTemplateRenderers(): Record<string, TemplateRef<TemplateContext>> {\n return {\n themeDetailsRenderer: this.themeDetailsRendererTemplate(),\n themeStatusRenderer: this.themeStatusRendererTemplate(),\n actionsDropdownRenderer: this.actionsDropdownRendererTemplate()\n };\n }\n\n /**\n * Handle grid events\n */\n onGridEvent(event: GridEvent<ICoreSytm>): void {\n switch (event.type) {\n case 'pageChange':\n if (event.data && typeof event.data === 'object' && 'pageIndex' in event.data && 'pageSize' in event.data) {\n this.currentPage.set(event.data['pageIndex'] as number);\n this.pageSize.set(event.data['pageSize'] as number);\n this.loadThemes();\n }\n break;\n case 'search':\n this.searchTerm.set(event.data as string);\n this.currentPage.set(1);\n this.loadThemes();\n break;\n case 'refresh':\n this.loadThemes();\n break;\n case 'action':\n // Handle action events if needed\n console.log('Action event:', event);\n break;\n case 'rowClick':\n // Handle row click events if needed\n console.log('Row click event:', event);\n break;\n case 'sort':\n // Handle sort events if needed\n console.log('Sort event:', event);\n break;\n case 'export':\n // Handle export events if needed\n console.log('Export event:', event);\n break;\n case 'rowReorder':\n // Handle row reorder events if needed\n console.log('Row reorder event:', event);\n break;\n }\n }\n\n /**\n * Create new theme\n */\n createTheme(): void {\n if (!this.themeForm.valid) {\n this.markFormAsTouched();\n return;\n }\n\n const formValue = this.themeForm.getRawValue();\n const newTheme: MSystemPagesThemeInsertUpdatePayload = {\n sytm_title: formValue.sytm_title,\n sytm_desc: formValue.sytm_desc,\n sytm_theme_code: formValue.sytm_theme_code,\n sytm_preview_id_fm: formValue.sytm_preview_id_fm,\n sytm_page_id_sypg: this.pageId(),\n sytm_configuration: JSON.parse(formValue.sytm_configuration),\n sytm_sub_title: formValue.sytm_sub_title,\n sytm_entity_id_syen: formValue.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: Boolean(formValue.sytm_isselected),\n sytm_layout: {\n sytm_layout_sidebar: { status: Boolean(formValue.sytm_layout.sytm_layout_sidebar.status) },\n sytm_layout_header: { status: Boolean(formValue.sytm_layout.sytm_layout_header.status) },\n sytm_layout_footer: { status: Boolean(formValue.sytm_layout.sytm_layout_footer.status) },\n sytm_layout_breadcrumb: { status: Boolean(formValue.sytm_layout.sytm_layout_breadcrumb.status) },\n sytm_layout_console: { status: Boolean(formValue.sytm_layout.sytm_layout_console.status) },\n sytm_layout_request: { status: Boolean(formValue.sytm_layout.sytm_layout_request.status) },\n sytm_layout_drawer: formValue.sytm_layout.sytm_layout_drawer as ICoreSythDrawer[]\n },\n sytm_isactive: formValue.sytm_isactive\n };\n\n this.loading.set(true);\n this.themeService.createTheme(newTheme)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadThemes();\n console.log('✅ Theme created successfully');\n } else {\n console.error('❌ Failed to create theme:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error creating theme:', error);\n console.error('❌ Failed to create theme. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update existing theme\n */\n updateTheme(): void {\n if (!this.themeForm.valid || !this.editingThemeId()) {\n this.markFormAsTouched();\n return;\n }\n\n const formValue = this.themeForm.getRawValue();\n const updatedTheme: MSystemPagesThemeInsertUpdatePayload = {\n _id: this.editingThemeId() || '',\n sytm_title: formValue.sytm_title,\n sytm_desc: formValue.sytm_desc,\n sytm_theme_code: formValue.sytm_theme_code,\n sytm_preview_id_fm: formValue.sytm_preview_id_fm,\n sytm_page_id_sypg: this.pageId(),\n sytm_configuration: JSON.parse(formValue.sytm_configuration),\n sytm_sub_title: formValue.sytm_sub_title,\n sytm_entity_id_syen: formValue.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: Boolean(formValue.sytm_isselected),\n sytm_layout: {\n sytm_layout_sidebar: { status: Boolean(formValue.sytm_layout.sytm_layout_sidebar.status) },\n sytm_layout_header: { status: Boolean(formValue.sytm_layout.sytm_layout_header.status) },\n sytm_layout_footer: { status: Boolean(formValue.sytm_layout.sytm_layout_footer.status) },\n sytm_layout_breadcrumb: { status: Boolean(formValue.sytm_layout.sytm_layout_breadcrumb.status) },\n sytm_layout_console: { status: Boolean(formValue.sytm_layout.sytm_layout_console.status) },\n sytm_layout_request: { status: Boolean(formValue.sytm_layout.sytm_layout_request.status) },\n sytm_layout_drawer: formValue.sytm_layout.sytm_layout_drawer as ICoreSythDrawer[]\n },\n sytm_isactive: formValue.sytm_isactive\n };\n\n this.loading.set(true);\n this.themeService.updateTheme(updatedTheme)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadThemes();\n console.log('✅ Theme updated successfully');\n } else {\n console.error('❌ Failed to update theme:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error updating theme:', error);\n console.error('❌ Failed to update theme. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Edit theme\n */\n editTheme(theme: ICoreSytm): void {\n this.isEditMode.set(true);\n this.editingThemeId.set(theme._id || null);\n this.retrievedTheme.set(theme);\n\n this.themeForm.patchValue({\n sytm_title: theme.sytm_title || '',\n sytm_desc: theme.sytm_desc || '',\n sytm_theme_code: theme.sytm_theme_code || '',\n sytm_preview_id_fm: theme.sytm_preview_id_fm || '',\n sytm_sub_title: theme.sytm_sub_title || '',\n sytm_configuration: JSON.stringify(theme.sytm_configuration || {}, null, 2),\n sytm_entity_id_syen: theme.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: theme.sytm_isselected ?? false,\n sytm_layout: {\n sytm_layout_sidebar: { status: theme.sytm_layout?.sytm_layout_sidebar?.status ?? true },\n sytm_layout_header: { status: theme.sytm_layout?.sytm_layout_header?.status ?? true },\n sytm_layout_footer: { status: theme.sytm_layout?.sytm_layout_footer?.status ?? false },\n sytm_layout_breadcrumb: { status: theme.sytm_layout?.sytm_layout_breadcrumb?.status ?? true },\n sytm_layout_console: { status: theme.sytm_layout?.sytm_layout_console?.status ?? false },\n sytm_layout_request: { status: theme.sytm_layout?.sytm_layout_request?.status ?? false },\n sytm_layout_drawer: theme.sytm_layout?.sytm_layout_drawer || []\n },\n sytm_isactive: theme.sytm_isactive ?? true\n });\n\n // Rebuild drawer array controls from data\n while (this.drawerArray.length) {\n this.drawerArray.removeAt(0);\n }\n (theme.sytm_layout?.sytm_layout_drawer || []).forEach(d => {\n this.drawerArray.push(this.createDrawerGroup({\n syth_status: d?.syth_status ?? true,\n syth_config_syco_for: d?.syth_config_syco_for ?? 'drawer_notes'\n }));\n });\n\n this.themeForm.markAsPristine();\n }\n\n /**\n * Delete theme\n */\n deleteTheme(theme: ICoreSytm): void {\n if (confirm(`Are you sure you want to delete the theme \"${theme.sytm_title}\"?`)) {\n this.loading.set(true);\n this.themeService.deleteTheme(theme._id || '')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadThemes();\n console.log('✅ Theme deleted successfully');\n } else {\n console.error('❌ Failed to delete theme:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error deleting theme:', error);\n console.error('❌ Failed to delete theme. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle theme status\n */\n toggleThemeStatus(theme: ICoreSytm): void {\n this.loading.set(true);\n this.themeService.toggleThemeStatus({ sytm_id: theme._id || '', sytm_isactive: !theme.sytm_isactive })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadThemes();\n console.log(`✅ Theme ${theme.sytm_isactive ? 'deactivated' : 'activated'} successfully`);\n } else {\n console.error('❌ Failed to toggle theme status:', response.message);\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error toggling theme status:', error);\n console.error('❌ Failed to toggle theme status. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Save theme (create or update)\n */\n saveTheme(): void {\n if (this.isEditMode()) {\n this.updateTheme();\n } else {\n this.createTheme();\n }\n }\n\n /**\n * Cancel form\n */\n cancelForm(): void {\n this.resetForm();\n this.goBack();\n }\n\n /**\n * Go back to page list\n */\n goBack(): void {\n console.log('🔍 [PageThemeComponent] goBack() called');\n console.log('🔍 [PageThemeComponent] Current route:', this.router.url);\n \n // Try to navigate back to the page management route\n this.router.navigate(['/core/page']).then(success => {\n console.log('🔍 [PageThemeComponent] Navigation result:', success);\n if (!success) {\n console.log('🔍 [PageThemeComponent] Navigation failed, using browser back');\n window.history.back();\n }\n }).catch(error => {\n console.error('🔍 [PageThemeComponent] Navigation error:', error);\n // Fallback: try to go back in browser history\n window.history.back();\n });\n }\n\n /**\n * Reset form\n */\n private resetForm(): void {\n this.themeForm.reset({\n sytm_title: '',\n sytm_desc: '',\n sytm_theme_code: '',\n sytm_preview_id_fm: '',\n sytm_sub_title: '',\n sytm_configuration: '{}',\n sytm_entity_id_syen: '',\n sytm_isselected: false,\n sytm_layout: {\n sytm_layout_sidebar: { status: true },\n sytm_layout_header: { status: true },\n sytm_layout_footer: { status: false },\n sytm_layout_breadcrumb: { status: true },\n sytm_layout_console: { status: false },\n sytm_layout_request: { status: false },\n sytm_layout_drawer: [] as ICoreSythDrawer[]\n },\n sytm_isactive: true\n });\n\n // Explicitly clear the FormArray for drawers\n while (this.drawerArray.length) {\n this.drawerArray.removeAt(0);\n }\n\n this.isEditMode.set(false);\n this.editingThemeId.set(null);\n this.retrievedTheme.set(null);\n this.themeForm.markAsPristine();\n this.themeForm.markAsUntouched();\n }\n\n /**\n * Mark form as touched to trigger validation display\n */\n private markFormAsTouched(): void {\n Object.keys(this.themeForm.controls).forEach(key => {\n const control = this.themeForm.get(key);\n control?.markAsTouched();\n });\n }\n\n /**\n * Get dropdown items for actions\n */\n getActionDropdownItems(theme: ICoreSytm): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit',\n disabled: false\n },\n {\n id: 'toggle',\n label: theme.sytm_isactive ? 'Deactivate' : 'Activate',\n icon: theme.sytm_isactive ? 'block' : 'check_circle',\n disabled: false\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete',\n disabled: false\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n * This method handles clicks on dropdown menu items in the actions column\n */\n onDropdownItemClick(item: DropdownItem, row: ICoreSytm): void {\n console.log('🔵 onDropdownItemClick called with:', item, row);\n\n switch (item.id) {\n case 'edit':\n console.log('🔵 Calling editTheme with:', row);\n this.editTheme(row);\n break;\n case 'toggle':\n console.log('🔵 Calling toggleThemeStatus with:', row);\n this.toggleThemeStatus(row);\n break;\n case 'delete':\n console.log('🔵 Calling deleteTheme with:', row);\n this.deleteTheme(row);\n break;\n default:\n console.log('🔵 Unknown action:', item.id);\n }\n\n // Close all dropdowns after action\n this.closeAllDropdowns();\n }\n\n /**\n * Close all dropdowns\n */\n private closeAllDropdowns(): void {\n // Close all dropdowns by clicking outside\n const event = new MouseEvent('click', { bubbles: true });\n document.dispatchEvent(event);\n }\n\n // ===== Drawer (sytm_layout_drawer) helpers =====\n drawerConfigOptions = [\n { value: 'drawer_notes', label: 'Drawer Notes' },\n { value: 'drawer_theme', label: 'Drawer Theme' }\n ];\n\n get drawerArray(): FormArray<FormGroup> {\n return this.themeForm.get('sytm_layout.sytm_layout_drawer') as unknown as FormArray<FormGroup>;\n }\n\n private createDrawerGroup(drawer?: Partial<ICoreSythDrawer>): FormGroup {\n return this.fb.group({\n syth_status: [drawer?.syth_status ?? true],\n syth_config_syco_for: [drawer?.syth_config_syco_for ?? 'drawer_notes']\n }) as unknown as FormGroup;\n }\n\n addDrawer(): void {\n this.drawerArray.push(this.createDrawerGroup());\n this.themeForm.markAsDirty();\n }\n\n removeDrawer(index: number): void {\n if (index >= 0 && index < this.drawerArray.length) {\n this.drawerArray.removeAt(index);\n this.themeForm.markAsDirty();\n }\n }\n\n /**\n * Set selected theme (only one can be selected per page)\n */\n setSelectedTheme(theme: ICoreSytm): void {\n if (!theme || theme.sytm_isselected) return; // already selected\n\n const previouslySelected = this.themes().find(t => t.sytm_isselected && t._id !== theme._id);\n\n // Disable previous selection (best-effort)\n if (previouslySelected) {\n const disablePayload: MSystemPagesThemeInsertUpdatePayload = {\n _id: previouslySelected._id || '',\n sytm_title: previouslySelected.sytm_title || '',\n sytm_desc: previouslySelected.sytm_desc || '',\n sytm_theme_code: previouslySelected.sytm_theme_code || '',\n sytm_preview_id_fm: previouslySelected.sytm_preview_id_fm || '',\n sytm_page_id_sypg: this.pageId(),\n sytm_configuration: previouslySelected.sytm_configuration || {},\n sytm_sub_title: previouslySelected.sytm_sub_title || '',\n sytm_entity_id_syen: previouslySelected.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: false,\n sytm_layout: previouslySelected.sytm_layout,\n sytm_isactive: previouslySelected.sytm_isactive ?? true\n };\n this.themeService.updateTheme(disablePayload).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({ next: () => {}, error: () => {} });\n }\n\n // Enable current selection\n const enablePayload: MSystemPagesThemeInsertUpdatePayload = {\n _id: theme._id || '',\n sytm_title: theme.sytm_title || '',\n sytm_desc: theme.sytm_desc || '',\n sytm_theme_code: theme.sytm_theme_code || '',\n sytm_preview_id_fm: theme.sytm_preview_id_fm || '',\n sytm_page_id_sypg: this.pageId(),\n sytm_configuration: theme.sytm_configuration || {},\n sytm_sub_title: theme.sytm_sub_title || '',\n sytm_entity_id_syen: theme.sytm_entity_id_syen || this.appState.getActiveEntityId(),\n sytm_isselected: true,\n sytm_layout: theme.sytm_layout,\n sytm_isactive: theme.sytm_isactive ?? true\n };\n\n this.loading.set(true);\n this.themeService.updateTheme(enablePayload)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: () => { this.loadThemes(); this.loading.set(false); },\n error: () => { this.loading.set(false); }\n });\n }\n\n // File upload methods for preview image\n getPreviewImageUploadData(): FileUploadData {\n return {\n altText: 'Theme Preview Image',\n cyfm_name: 'theme-preview-image',\n cyfm_alt_text: 'Theme Preview Image',\n cyfm_type: 'image',\n cyfm_permissions: ['read'],\n cyfm_tags: ['theme', 'preview', 'image']\n };\n }\n\n onPreviewImageUploadSuccess(fileId: string): void {\n console.log('Preview image uploaded successfully:', fileId);\n // Update the form control with the uploaded file ID\n this.themeForm.patchValue({\n sytm_preview_id_fm: fileId\n });\n }\n\n onPreviewImageUploadError(error: string): void {\n console.error('Preview image upload error:', error);\n this.error.set('Failed to upload preview image: ' + error);\n }\n\n onPreviewImageUploadProgress(progress: number): void {\n console.log('Preview image upload progress:', progress + '%');\n }\n}","<!-- Page Theme Container -->\r\n<div class=\"tw-flex tw-h-full tw-w-full\">\r\n \r\n <!-- Left: Form and header (60%) -->\r\n <div class=\"tw-w-full lg:tw-w-3/5 tw-flex tw-flex-col tw-border-r tw-border-gray-200\">\r\n\r\n <!-- Header Section -->\r\n <div class=\"tw-px-6 tw-py-2 tw-border-b tw-border-gray-200 tw-bg-gray-50\">\r\n <div class=\"tw-flex tw-flex-col sm:tw-flex-row tw-justify-between tw-items-start sm:tw-items-center tw-space-y-2 sm:tw-space-y-0\">\r\n\r\n <!-- Title and Back Button -->\r\n <div class=\"tw-flex tw-items-center tw-space-x-4\">\r\n <button cideEleButton variant=\"ghost\" size=\"sm\" (click)=\"goBack();\" class=\"tw-text-gray-600 hover:tw-text-gray-900\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">arrow_back</cide-ele-icon>\r\n </button>\r\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">palette</cide-ele-icon>\r\n <div>\r\n <h5 class=\"tw-text-base tw-font-medium tw-text-gray-900 tw-m-0\">Theme Management</h5>\r\n <p class=\"tw-text-sm tw-text-gray-500 tw-m-0\">Page: {{ pageTitle() }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Error Message -->\r\n @if (error()) {\r\n <div class=\"tw-mt-4 tw-p-4 tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md\">\r\n <div class=\"tw-flex tw-items-start\">\r\n <cide-ele-icon name=\"error\" class=\"tw-text-red-400 tw-w-5 tw-h-5 tw-mt-0.5 tw-flex-shrink-0\"></cide-ele-icon>\r\n <div class=\"tw-ml-3\">\r\n <h3 class=\"tw-text-sm tw-font-medium tw-text-red-800 tw-m-0\">Error</h3>\r\n <p class=\"tw-text-sm tw-text-red-700 tw-mt-1 tw-m-0\">{{ error() }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Quick Add/Edit Form Section -->\r\n <div class=\"tw-px-6 tw-py-3 tw-bg-white tw-overflow-auto\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-mb-2\">\r\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\r\n <cide-ele-icon class=\"tw-text-blue-600 tw-w-5 tw-h-5\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\r\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-m-0\">{{ isEditMode() ? 'Edit Theme' : 'Quick Add Theme' }}</h6>\r\n </div>\r\n </div>\r\n\r\n <!-- Form (kept as-is) -->\r\n <form [formGroup]=\"themeForm\" (ngSubmit)=\"saveTheme()\" class=\"tw-space-y-4\">\r\n <div class=\"tw-grid tw-grid-cols-1 lg:tw-grid-cols-[1fr_200px] tw-gap-4\">\r\n <!-- Left Side: All Input Fields -->\r\n <div class=\"tw-space-y-4\">\r\n <!-- Row 1: Theme Title and Theme Code -->\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-4\">\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-input id=\"sytm_title\" formControlName=\"sytm_title\" placeholder=\"Enter theme title\" label=\"Theme Title*\" size=\"sm\"></cide-ele-input>\r\n </div>\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-input id=\"sytm_theme_code\" formControlName=\"sytm_theme_code\" placeholder=\"Enter theme code\" label=\"Theme Code*\" size=\"sm\"></cide-ele-input>\r\n </div>\r\n </div>\r\n \r\n <!-- Row 2: Sub Title and Active Status -->\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-4\">\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-input id=\"sytm_sub_title\" formControlName=\"sytm_sub_title\" placeholder=\"Enter sub title\" label=\"Sub Title\" size=\"sm\"></cide-ele-input>\r\n </div>\r\n <div class=\"tw-space-y-2 tw-flex tw-items-center\">\r\n <cide-ele-input\r\n id=\"sytm_isactive_cb\"\r\n type=\"checkbox\"\r\n label=\"Active\"\r\n size=\"sm\"\r\n formControlName=\"sytm_isactive\">\r\n </cide-ele-input>\r\n </div>\r\n </div>\r\n \r\n <!-- Row 3: Description -->\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-textarea id=\"sytm_desc\" formControlName=\"sytm_desc\" placeholder=\"Enter theme description\" rows=\"2\" label=\"Description\" size=\"sm\"></cide-ele-textarea>\r\n </div>\r\n </div>\r\n \r\n <!-- Right Side: File Upload -->\r\n <div class=\"tw-flex tw-flex-col tw-justify-start tw-items-center tw-p-0\">\r\n <cide-ele-file-input \r\n id=\"sytm_preview_id_fm\" \r\n formControlName=\"sytm_preview_id_fm\"\r\n accept=\"image/*\"\r\n [showPreview]=\"true\"\r\n [previewBoxMode]=\"true\"\r\n [showFileName]=\"false\"\r\n previewWidth=\"180px\"\r\n previewHeight=\"120px\"\r\n placeholderText=\"Upload Preview Image\"\r\n placeholderIcon=\"image\"\r\n [autoUpload]=\"true\"\r\n [uploadData]=\"getPreviewImageUploadData()\"\r\n (uploadSuccess)=\"onPreviewImageUploadSuccess($event)\"\r\n (uploadError)=\"onPreviewImageUploadError($event)\"\r\n (uploadProgressChange)=\"onPreviewImageUploadProgress($event)\">\r\n </cide-ele-file-input>\r\n </div>\r\n </div>\r\n \r\n <!-- Configuration JSON -->\r\n <div class=\"tw-space-y-2\">\r\n <cide-ele-json-editor label=\"Configuration JSON\" formControlName=\"sytm_configuration\" [required]=\"true\" [config]=\"{\r\n showLineNumbers: true,\r\n autoFormat: true,\r\n validateOnChange: true,\r\n minHeight: 150,\r\n maxHeight: 300,\r\n placeholder: 'Enter theme configuration JSON...'\r\n }\" helperText=\"Enter valid JSON configuration for the theme\"></cide-ele-json-editor>\r\n </div>\r\n <!-- Layout Configuration + Selection -->\r\n <div class=\"tw-grid tw-grid-cols-1 lg:tw-grid-cols-2 tw-gap-6\">\r\n <div class=\"tw-space-y-2\">\r\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Layout & Selection</div>\r\n <!-- Selected toggle -->\r\n <div class=\"tw-bg-white tw-border tw-border-gray-200 tw-rounded-md tw-px-3 tw-py-2\">\r\n <cide-ele-input\r\n id=\"sytm_isselected\"\r\n type=\"checkbox\"\r\n label=\"Selected (Default)\"\r\n size=\"sm\"\r\n formControlName=\"sytm_isselected\">\r\n </cide-ele-input>\r\n </div>\r\n <div formGroupName=\"sytm_layout\" class=\"tw-bg-white tw-border tw-border-gray-200 tw-rounded-md tw-divide-y tw-overflow-hidden\">\r\n <!-- Sidebar -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_sidebar\">\r\n <cide-ele-input id=\"layout_sidebar_status\" type=\"checkbox\" label=\"Sidebar\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Header -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_header\">\r\n <cide-ele-input id=\"layout_header_status\" type=\"checkbox\" label=\"Header\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Footer -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_footer\">\r\n <cide-ele-input id=\"layout_footer_status\" type=\"checkbox\" label=\"Footer\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Breadcrumb -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_breadcrumb\">\r\n <cide-ele-input id=\"layout_breadcrumb_status\" type=\"checkbox\" label=\"Breadcrumb\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Console -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_console\">\r\n <cide-ele-input id=\"layout_console_status\" type=\"checkbox\" label=\"Console\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n <!-- Request -->\r\n <div class=\"tw-px-3 tw-py-2\" formGroupName=\"sytm_layout_request\">\r\n <cide-ele-input id=\"layout_request_status\" type=\"checkbox\" label=\"Request\" size=\"sm\" formControlName=\"status\"></cide-ele-input>\r\n </div>\r\n </div>\r\n <p class=\"tw-text-xs tw-text-gray-500 tw-pt-1\">Toggle active sections. Only one theme can be selected as default. More options can be added here later.</p>\r\n </div>\r\n \r\n <!-- Drawer Configuration -->\r\n <div class=\"tw-space-y-2\">\r\n <div class=\"tw-flex tw-items-center tw-justify-between\">\r\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-700\">Drawers</div>\r\n <button cideEleButton type=\"button\" size=\"xs\" variant=\"outline\" (click)=\"addDrawer()\">\r\n Add Drawer\r\n </button>\r\n </div>\r\n\r\n <div formGroupName=\"sytm_layout\">\r\n <div class=\"tw-space-y-2\" formArrayName=\"sytm_layout_drawer\">\r\n <div *ngFor=\"let drawerGrp of drawerArray.controls; let i = index\" [formGroupName]=\"i\" class=\"tw-border tw-border-gray-200 tw-rounded-md tw-p-3 tw-flex tw-items-center tw-gap-3\">\r\n <cide-ele-input id=\"drawer_active_{{i}}\" type=\"checkbox\" label=\"Active\" size=\"sm\" formControlName=\"syth_status\"></cide-ele-input>\r\n <div class=\"tw-flex-1\">\r\n <cide-ele-select\r\n id=\"drawer_config_{{i}}\"\r\n label=\"Drawer For\"\r\n size=\"sm\"\r\n [options]=\"drawerConfigOptions\"\r\n formControlName=\"syth_config_syco_for\">\r\n </cide-ele-select>\r\n </div>\r\n <button cideEleButton type=\"button\" size=\"xs\" variant=\"ghost\" (click)=\"removeDrawer(i)\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">delete</cide-ele-icon>\r\n </button>\r\n </div>\r\n <p class=\"tw-text-xs tw-text-gray-500\">Configure multiple drawers as needed.</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Form Actions -->\r\n <div class=\"tw-flex tw-flex-col tw-gap-2 tw-pt-4 tw-border-t tw-border-gray-200\">\r\n <div class=\"tw-flex tw-items-center tw-justify-end tw-space-x-3\">\r\n <button cideEleButton type=\"button\" variant=\"outline\" (click)=\"cancelForm()\" [disabled]=\"loading()\">Cancel</button>\r\n <button cideEleButton type=\"submit\" variant=\"primary\" leftIcon=\"add\" [disabled]=\"!themeForm.valid || loading()\" [loading]=\"loading()\">\r\n {{ isEditMode() ? 'Update Theme' : 'Create Theme' }}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Right: Theme gallery (40%) -->\r\n <div class=\"tw-hidden lg:tw-flex tw-w-2/5 tw-flex-col\">\r\n <!-- (Header consolidated above) -->\r\n\r\n <!-- Gallery list -->\r\n <div class=\"tw-flex-1 tw-overflow-auto tw-bg-gray-50\">\r\n <div class=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-3 tw-p-4\">\r\n @for (theme of filteredThemes(); track theme._id) {\r\n <div class=\"tw-rounded-md tw-transition tw-cursor-pointer tw-relative\"\r\n [ngClass]=\"theme.sytm_isselected\r\n ? 'tw-border tw-border-blue-500 tw-ring-2 tw-ring-blue-200 tw-bg-blue-50/50'\r\n : 'tw-bg-white tw-border tw-border-gray-200 hover:tw-shadow-sm'\"\r\n (click)=\"editTheme(theme)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-selected]=\"theme.sytm_isselected ? 'true' : 'false'\"\r\n [attr.aria-label]=\"'Edit theme ' + (theme.sytm_title || theme.sytm_theme_code)\"\r\n (keydown.enter)=\"editTheme(theme)\"\r\n (keydown.space)=\"$event.preventDefault(); editTheme(theme)\">\r\n\r\n <!-- Selected badge -->\r\n <div *ngIf=\"theme.sytm_isselected\"\r\n class=\"tw-absolute tw-top-2 tw-right-2 tw-flex tw-items-center tw-justify-center tw-w-6 tw-h-6 tw-rounded-full tw-bg-blue-600 tw-text-white\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">check</cide-ele-icon>\r\n </div>\r\n \r\n <div class=\"tw-aspect-[16/9] tw-bg-gray-100 tw-rounded-t-md tw-overflow-hidden tw-flex tw-items-center tw-justify-center\">\r\n @if (theme.sytm_preview_id_fm) {\r\n <img \r\n cideEleFileImage \r\n [fileId]=\"theme.sytm_preview_id_fm\" \r\n [altText]=\"'Theme Preview'\"\r\n class=\"tw-w-full tw-h-full tw-object-cover\" />\r\n } @else {\r\n <div class=\"tw-text-gray-400 tw-text-xs\">No preview</div>\r\n }\r\n </div>\r\n <div class=\"tw-p-3 tw-space-y-1\">\r\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" [title]=\"theme.sytm_title\">{{ theme.sytm_title || 'Untitled Theme' }}</div>\r\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" [title]=\"theme.sytm_theme_code\">{{ theme.sytm_theme_code }}</div>\r\n <div class=\"tw-flex tw-items-center tw-justify-between tw-pt-1\">\r\n <span class=\"tw-inline-flex tw-items-center tw-gap-1 tw-text-xs\" [ngClass]=\"theme.sytm_isactive ? 'tw-text-green-700' : 'tw-text-red-700'\">\r\n <span class=\"tw-w-1.5 tw-h-1.5 tw-rounded-full\" [ngClass]=\"theme.sytm_isactive ? 'tw-bg-green-500' : 'tw-bg-red-500'\"></span>\r\n {{ theme.sytm_isactive ? 'Active' : 'Inactive' }}\r\n </span>\r\n <div class=\"tw-flex tw-items-center tw-gap-1\">\r\n <!-- Set Selected Button - Clear and Simple -->\r\n @if (theme.sytm_isselected) {\r\n <span class=\"tw-inline-flex tw-items-center tw-gap-1 tw-px-2 tw-py-1 tw-bg-green-100 tw-text-green-800 tw-rounded-md tw-text-xs tw-font-medium\">\r\n <cide-ele-icon class=\"tw-w-3 tw-h-3\">check</cide-ele-icon>\r\n Selected\r\n </span>\r\n } @else {\r\n <button cideEleButton \r\n variant=\"outline\" \r\n size=\"xs\"\r\n (click)=\"$event.stopPropagation(); setSelectedTheme(theme)\"\r\n [attr.aria-label]=\"'Select ' + (theme.sytm_title || theme.sytm_theme_code) + ' theme'\"\r\n class=\"tw-text-xs\">\r\n Select\r\n </button>\r\n }\r\n <button cideEleButton variant=\"ghost\" size=\"xs\" (click)=\"$event.stopPropagation(); editTheme(theme)\"\r\n [attr.aria-label]=\"'Edit theme ' + (theme.sytm_title || theme.sytm_theme_code)\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">edit</cide-ele-icon>\r\n </button>\r\n <button cideEleButton variant=\"ghost\" size=\"xs\" (click)=\"$event.stopPropagation(); deleteTheme(theme)\"\r\n [attr.aria-label]=\"'Delete theme ' + (theme.sytm_title || theme.sytm_theme_code)\">\r\n <cide-ele-icon class=\"tw-w-4 tw-h-4\">delete</cide-ele-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!loading() && filteredThemes().length === 0) {\r\n <div class=\"tw-col-span-full tw-text-center tw-text-xs tw-text-gray-500 tw-py-8\">No themes found</div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- \r\n Angular Template References for Grid Renderers (Best Practice)\r\n \r\n These ng-template elements represent the Angular best practice for custom rendering.\r\n They provide:\r\n - Type safety with template context\r\n - Component lifecycle integration\r\n - Change detection optimization\r\n - Proper event handling\r\n - Accessibility features\r\n \r\n Note: Current data grid uses string renderers for compatibility.\r\n Templates are maintained for future component enhancement.\r\n-->\r\n\r\n<!-- Theme Details Renderer Template -->\r\n<ng-template #themeDetailsRendererTemplate let-row=\"row\" let-value=\"value\">\r\n <div class=\"tw-flex tw-items-center tw-min-w-0\">\r\n <!-- Theme Icon -->\r\n <div class=\"tw-flex-shrink-0\">\r\n <cide-ele-icon \r\n class=\"tw-text-purple-600\" \r\n size=\"xs\">\r\n palette\r\n </cide-ele-icon>\r\n </div>\r\n \r\n <!-- Theme Details -->\r\n <div class=\"tw-ml-3 tw-min-w-0 tw-flex-1\">\r\n <div class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-truncate\" \r\n [title]=\"row.sytm_title\">\r\n {{ row.sytm_title || 'Untitled' }}\r\n </div>\r\n @if (row.sytm_desc) {\r\n <div class=\"tw-text-xs tw-text-gray-500 tw-truncate\" \r\n [title]=\"row.sytm_desc\">\r\n {{ row.sytm_desc }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Theme Status Renderer Template -->\r\n<ng-template #themeStatusRendererTemplate let-row=\"row\" let-value=\"value\">\r\n <span class=\"tw-inline-flex tw-items-center tw-px-2.5 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-whitespace-nowrap\"\r\n [ngClass]=\"row.sytm_isactive ? 'tw-bg-green-100 tw-text-green-800' : 'tw-bg-red-100 tw-text-red-800'\">\r\n {{ row.sytm_isactive ? 'Active' : 'Inactive' }}\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Actions Dropdown Renderer Template -->\r\n<ng-template #actionsDropdownRendererTemplate let-row=\"row\" let-value=\"value\">\r\n <cide-ele-dropdown \r\n [items]=\"getActionDropdownItems(row)\"\r\n [config]=\"{ triggerIcon: 'more_vert', triggerSize: 'sm' }\"\r\n (itemClick)=\"onDropdownItemClick($event, row)\">\r\n </cide-ele-dropdown>\r\n</ng-template> ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { \r\n cidePath, \r\n coreRoutesUrl, \r\n generateStringFromObject, \r\n hostManagerRoutesUrl,\r\n MPageElements,\r\n MPageElementsGetByIdPayload,\r\n MPageElementsDeletePayload,\r\n MPageElementsInsertUpdatePayload,\r\n MPageElementsToggleStatusPayload,\r\n MPageElementsByPageIdPayload,\r\n MPageElementsMappingDeletePayload,\r\n MPageElementsMappingInsertUpdatePayload,\r\n MPageElementsMappingByPageIdPayload,\r\n pageElementsControllerResponse,\r\n pageElementsByIdControllerResponse,\r\n pageElementsInsertUpdateControllerResponse,\r\n pageElementsDeleteControllerResponse,\r\n pageElementsToggleStatusControllerResponse,\r\n pageElementsByPageIdControllerResponse,\r\n pageElementsMappingInsertUpdateControllerResponse,\r\n pageElementsMappingDeleteControllerResponse,\r\n pageElementsMappingByPageIdControllerResponse\r\n} from 'cloud-ide-lms-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CideCorePageControlsService {\r\n constructor(private http: HttpClient) {\r\n console.log('CideCorePageControlsService initialized - using real API');\r\n }\r\n\r\n /**\r\n * Get control list from API\r\n */\r\n getControlList(body: MPageElements): Observable<pageElementsControllerResponse> {\r\n const query = generateStringFromObject(body);\r\n return this.http?.get<pageElementsControllerResponse>(cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, query]))\r\n .pipe(\r\n catchError(error => {\r\n console.error('CideCorePageControlsService API error:', error);\r\n return this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Create new control\r\n */\r\n createControl(payload: MPageElementsInsertUpdatePayload): Observable<pageElementsInsertUpdateControllerResponse> {\r\n console.log('Creating control:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl]);\r\n return this.http.post<pageElementsInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Update existing control\r\n */\r\n updateControl(payload: MPageElementsInsertUpdatePayload): Observable<pageElementsInsertUpdateControllerResponse> {\r\n console.log('Updating control:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl]);\r\n return this.http.post<pageElementsInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get control by ID\r\n */\r\n getControlById(id: string): Observable<pageElementsByIdControllerResponse> {\r\n console.log('Getting control by ID:', id);\r\n const payload: MPageElementsGetByIdPayload = { sype_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, 'byId', query]);\r\n return this.http.get<pageElementsByIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get controls by page ID\r\n */\r\n getControlsByPageId(pageId: string): Observable<pageElementsByPageIdControllerResponse> {\r\n console.log('Getting controls by page ID:', pageId);\r\n const payload: MPageElementsByPageIdPayload = { sype_page_id_sypg: pageId };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, 'byPage', query]);\r\n return this.http.get<pageElementsByPageIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Get control mappings by page ID\r\n */\r\n getControlMappingsByPageId(pageId: string): Observable<pageElementsMappingByPageIdControllerResponse> {\r\n console.log('Getting control mappings by page ID:', pageId);\r\n const payload: MPageElementsMappingByPageIdPayload = { sypem_id_sypg: pageId };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControlMapping, query]);\r\n return this.http.get<pageElementsMappingByPageIdControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Create control mapping\r\n */\r\n createControlMapping(payload: MPageElementsMappingInsertUpdatePayload): Observable<pageElementsMappingInsertUpdateControllerResponse> {\r\n console.log('Creating control mapping:', payload);\r\n \r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControlMapping]);\r\n return this.http.post<pageElementsMappingInsertUpdateControllerResponse>(url, payload)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete control mapping\r\n */\r\n deleteControlMapping(id: string): Observable<pageElementsMappingDeleteControllerResponse> {\r\n const payload: MPageElementsMappingDeletePayload = { sypem_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControlMapping, query]);\r\n return this.http.delete<pageElementsMappingDeleteControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Delete control\r\n */\r\n deleteControl(id: string): Observable<pageElementsDeleteControllerResponse> {\r\n const payload: MPageElementsDeletePayload = { sype_id: id };\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, query]);\r\n return this.http.delete<pageElementsDeleteControllerResponse>(url)\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n /**\r\n * Toggle control active status\r\n */\r\n toggleControlStatus(payload: MPageElementsToggleStatusPayload): Observable<pageElementsToggleStatusControllerResponse> {\r\n console.log('Toggling control status:', payload);\r\n const query = generateStringFromObject(payload);\r\n const url = cidePath?.join([hostManagerRoutesUrl?.cideSuiteHost, coreRoutesUrl?.module, coreRoutesUrl?.pageControl, query]);\r\n return this.http.put<pageElementsToggleStatusControllerResponse>(url, {})\r\n .pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n\r\n /**\r\n * Handle errors\r\n */\r\n private handleError(error: unknown): Observable<never> {\r\n let errorMessage = 'An error occurred';\r\n\r\n if (error instanceof Error) {\r\n errorMessage = error.message;\r\n } else if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n\r\n console.error('Page Controls Service Error:', errorMessage);\r\n return throwError(() => new Error(errorMessage));\r\n }\r\n} ","import { Component, signal, computed, DestroyRef, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, NonNullableFormBuilder, FormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CideCorePageControlsService } from '../../services/page-controls.service';\nimport { AppStateHelperService } from 'cloud-ide-layout';\nimport { CideEleButtonComponent, CideIconComponent, CideInputComponent, CideSelectComponent, CideEleDropdownComponent, DropdownItem, CideFormFieldErrorComponent } from 'cloud-ide-element';\nimport { controlType, generateObjectFromString, ICoreSype, MPageElements, MPageElementsInsertUpdatePayload, themeSize } from 'cloud-ide-lms-model';\n\n@Component({\n selector: 'cide-core-page-controls',\n standalone: true,\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n CideEleButtonComponent,\n CideInputComponent,\n CideSelectComponent,\n CideIconComponent,\n CideFormFieldErrorComponent\n ],\n templateUrl: './page-controls.component.html',\n styleUrls: ['./page-controls.component.scss']\n})\nexport class CideCorePageControlsComponent implements OnInit {\n // Dependency injection\n private destroyRef = inject(DestroyRef);\n private controlsService = inject(CideCorePageControlsService);\n private appState = inject(AppStateHelperService);\n private fb = inject(NonNullableFormBuilder);\n private router = inject(Router);\n private route = inject(ActivatedRoute);\n\n\n\n // Make Math available in template\n Math = Math;\n\n // Signals for reactive state management\n controls = signal<ICoreSype[]>([]);\n loading = signal(false);\n error = signal<string | null>(null);\n selectedItems = signal<string[]>([]);\n searchTerm = signal('');\n\n // Page information\n pageId = signal<string>('');\n pageTitle = signal<string>('');\n\n // Form state\n isEditMode = signal(false);\n editingControlId = signal<string | null>(null);\n retrievedControl = signal<ICoreSype | null>(null);\n\n // Control selection for new layout\n selectedControlId = signal<string | null>(null);\n\n // Pagination signals\n currentPage = signal(1);\n pageSize = signal(10);\n totalItems = signal(0);\n\n // Modern reactive forms with signals - No validators for simplicity\n controlForm = this.fb.group({\n sype_key: [''],\n sype_label: [''],\n sype_label_hide: [false],\n sype_auto_complete: [false], // Changed to boolean for checkbox\n sype_hide_helper_and_error_text: [false],\n sype_type: [''], // controlType\n sype_option_key: [''],\n sype_placeholder: [''],\n sype_min_length: [0],\n sype_max_length: [20],\n sype_regex: [''],\n sype_required: [false],\n sype_disabled: [false],\n sype_width: [''], // Changed to string for px values like \"20px\"\n sype_height: [''], // Changed to string for px values like \"20px\"\n sype_label_placement: ['left' as 'floating' | 'fixed'],\n sype_helper_text_collapse: [false],\n sype_default: ['' as string | number | boolean],\n sype_tooltip: [''],\n sype_size: ['sm' as themeSize], // Changed default to small\n sype_leading_icon: [''],\n sype_isactive: [true],\n sype_entity_id_syen: ['']\n });\n\n // Computed values\n isFormDirty = computed(() => this.controlForm.dirty);\n\n\n\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n /**\n * Initialize component\n */\n private initializeComponent(): void {\n // Get page information from route\n this.route.params.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {\n const queryParams = params['query'];\n const queryData = generateObjectFromString(queryParams);\n this.pageId.set(queryData?.sypg_id || '');\n this.pageTitle.set(queryData?.sypg_title || '');\n\n if (this.pageId()) {\n this.loadControls();\n this.setupFormSubscriptions();\n this.setEntityIdFromAppState();\n } else {\n this.error.set('No page ID provided');\n }\n });\n }\n\n /**\n * Set entity ID from app state - auto-assigned internally\n */\n private setEntityIdFromAppState(): void {\n const entityId = this.appState.getActiveEntityId();\n if (entityId) {\n this.controlForm.patchValue({\n sype_entity_id_syen: entityId\n });\n // Disable the entity field since it's auto-assigned\n this.controlForm.get('sype_entity_id_syen')?.disable();\n }\n }\n\n /**\n * Load controls from API\n */\n private loadControls(): void {\n this.loading.set(true);\n this.error.set(null);\n\n const request: MPageElements = {\n sype_page_id_sypg: this.pageId()\n };\n\n this.controlsService.getControlList(request)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.controls.set(response.data || []);\n this.totalItems.set(response.total || 0);\n } else {\n this.error.set(response.message || 'Failed to load controls');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error loading controls:', error);\n this.error.set('Failed to load controls. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Setup form subscriptions\n */\n private setupFormSubscriptions(): void {\n // Watch for form changes to enable/disable save button\n this.controlForm.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n // Form validation is handled by computed signals\n });\n }\n\n\n\n /**\n * Create new control\n */\n createControl(): void {\n\n const formValue = this.controlForm.getRawValue();\n const entityId = this.appState.getActiveEntityId();\n\n const newControl: MPageElementsInsertUpdatePayload = {\n _id: '',\n sype_key: formValue.sype_key,\n sype_page_id_sypg: this.pageId(),\n sype_label: formValue.sype_label,\n sype_label_hide: formValue.sype_label_hide,\n sype_auto_complete: formValue.sype_auto_complete,\n sype_hide_helper_and_error_text: formValue.sype_hide_helper_and_error_text,\n sype_type: formValue.sype_type as controlType,\n sype_option_key: formValue.sype_option_key,\n sype_placeholder: formValue.sype_placeholder,\n sype_min_length: formValue.sype_min_length,\n sype_max_length: formValue.sype_max_length,\n sype_regex: formValue.sype_regex,\n sype_required: formValue.sype_required,\n sype_disabled: formValue.sype_disabled,\n sype_width: formValue.sype_width,\n sype_height: formValue.sype_height,\n sype_label_placement: formValue.sype_label_placement,\n sype_helper_text_collapse: formValue.sype_helper_text_collapse,\n sype_default: formValue.sype_default,\n sype_tooltip: formValue.sype_tooltip,\n sype_size: formValue.sype_size,\n sype_leading_icon: formValue.sype_leading_icon,\n sype_isactive: formValue.sype_isactive,\n sype_entity_id_syen: entityId || formValue.sype_entity_id_syen\n };\n\n this.loading.set(true);\n this.controlsService.createControl(newControl)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadControls();\n console.log('Control created successfully');\n } else {\n console.error(response.message || 'Failed to create control');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error creating control:', error);\n console.error('Failed to create control. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Update existing control\n */\n updateControl(): void {\n if (!this.editingControlId()) {\n return;\n }\n\n const formValue = this.controlForm.getRawValue();\n const entityId = this.appState.getActiveEntityId();\n\n const updatedControl: MPageElementsInsertUpdatePayload = {\n _id: this.editingControlId()!,\n sype_key: formValue.sype_key,\n sype_page_id_sypg: this.pageId(),\n sype_label: formValue.sype_label,\n sype_label_hide: formValue.sype_label_hide,\n sype_auto_complete: Boolean(formValue.sype_auto_complete),\n sype_hide_helper_and_error_text: formValue.sype_hide_helper_and_error_text,\n sype_type: formValue.sype_type as controlType,\n sype_option_key: formValue.sype_option_key,\n sype_placeholder: formValue.sype_placeholder,\n sype_min_length: formValue.sype_min_length,\n sype_max_length: formValue.sype_max_length,\n sype_regex: formValue.sype_regex,\n sype_required: formValue.sype_required,\n sype_disabled: formValue.sype_disabled,\n sype_width: formValue.sype_width,\n sype_height: formValue.sype_height,\n sype_label_placement: formValue.sype_label_placement,\n sype_helper_text_collapse: formValue.sype_helper_text_collapse,\n sype_default: formValue.sype_default,\n sype_tooltip: formValue.sype_tooltip,\n sype_size: formValue.sype_size,\n sype_leading_icon: formValue.sype_leading_icon,\n sype_isactive: formValue.sype_isactive,\n sype_entity_id_syen: entityId || formValue.sype_entity_id_syen\n };\n\n this.loading.set(true);\n this.controlsService.updateControl(updatedControl)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.resetForm();\n this.loadControls();\n console.log('Control updated successfully');\n } else {\n console.error(response.message || 'Failed to update control');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error updating control:', error);\n console.error('Failed to update control. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Edit control\n */\n editControl(control: ICoreSype): void {\n this.isEditMode.set(true);\n this.editingControlId.set(control._id || null);\n this.retrievedControl.set(control);\n\n this.controlForm.patchValue({\n sype_key: control.sype_key,\n sype_label: control.sype_label,\n sype_label_hide: control.sype_label_hide,\n sype_auto_complete: control.sype_auto_complete ? true : false,\n sype_hide_helper_and_error_text: control.sype_hide_helper_and_error_text,\n sype_type: control.sype_type,\n sype_option_key: control.sype_option_key,\n sype_placeholder: control.sype_placeholder,\n sype_min_length: control.sype_min_length,\n sype_max_length: control.sype_max_length,\n sype_regex: control.sype_regex,\n sype_required: control.sype_required,\n sype_disabled: control.sype_disabled,\n sype_width: control.sype_width?.toString() || '',\n sype_height: control.sype_height?.toString() || '',\n sype_label_placement: control.sype_label_placement,\n sype_helper_text_collapse: control.sype_helper_text_collapse,\n sype_default: control.sype_default as string | number | boolean,\n sype_tooltip: control.sype_tooltip,\n sype_size: control.sype_size as themeSize,\n sype_leading_icon: control.sype_leading_icon,\n sype_isactive: control.sype_isactive,\n sype_entity_id_syen: String(control.sype_entity_id_syen || '')\n });\n\n this.controlForm.markAsPristine();\n }\n\n /**\n * Delete control\n */\n deleteControl(control: ICoreSype): void {\n if (confirm(`Are you sure you want to delete the control \"${control.sype_label}\"?`)) {\n this.loading.set(true);\n this.controlsService.deleteControl(control._id || '')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadControls();\n console.log('Control deleted successfully');\n } else {\n console.error(response.message || 'Failed to delete control');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error deleting control:', error);\n console.error('Failed to delete control. Please try again.');\n this.loading.set(false);\n }\n });\n }\n }\n\n /**\n * Toggle control status\n */\n toggleControlStatus(control: ICoreSype): void {\n this.loading.set(true);\n this.controlsService.toggleControlStatus({ sype_id: control._id || '', sype_isactive: !control.sype_isactive })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (response) => {\n if (response.success) {\n this.loadControls();\n console.log(`Control ${control.sype_isactive ? 'deactivated' : 'activated'} successfully`);\n } else {\n console.error(response.message || 'Failed to toggle control status');\n }\n this.loading.set(false);\n },\n error: (error) => {\n console.error('Error toggling control status:', error);\n console.error('Failed to toggle control status. Please try again.');\n this.loading.set(false);\n }\n });\n }\n\n /**\n * Save control (create or update)\n */\n saveControl(): void {\n if (this.isEditMode()) {\n this.updateControl();\n } else {\n this.createControl();\n }\n }\n\n /**\n * Cancel form\n */\n cancelForm(): void {\n this.resetForm();\n }\n\n /**\n * Go back to page list\n */\n goBack(): void {\n this.router.navigate(['/core/page']);\n }\n\n /**\n * Reset form\n */\n private resetForm(): void {\n const entityId = this.appState.getActiveEntityId();\n\n this.controlForm.reset({\n sype_key: '',\n sype_label: '',\n sype_label_hide: false,\n sype_auto_complete: false,\n sype_hide_helper_and_error_text: false,\n sype_type: '',\n sype_option_key: '',\n sype_placeholder: '',\n sype_min_length: 0,\n sype_max_length: 20,\n sype_regex: '',\n sype_required: false,\n sype_disabled: false,\n sype_width: '',\n sype_height: '',\n sype_label_placement: 'floating',\n sype_helper_text_collapse: false,\n sype_default: '' as string | number | boolean,\n sype_tooltip: '',\n sype_size: 'md',\n sype_leading_icon: '',\n sype_isactive: true,\n sype_entity_id_syen: entityId || ''\n });\n this.isEditMode.set(false);\n this.editingControlId.set(null);\n this.retrievedControl.set(null);\n this.controlForm.markAsPristine();\n this.controlForm.markAsUntouched();\n }\n\n /**\n * Mark form as touched to trigger validation display\n */\n private markFormAsTouched(): void {\n Object.keys(this.controlForm.controls).forEach(key => {\n const control = this.controlForm.get(key);\n control?.markAsTouched();\n });\n }\n\n /**\n * Get dropdown items for actions\n */\n getActionDropdownItems(control: ICoreSype): DropdownItem[] {\n return [\n {\n id: 'edit',\n label: 'Edit',\n icon: 'edit'\n },\n {\n id: 'toggle',\n label: control.sype_isactive ? 'Deactivate' : 'Activate',\n icon: control.sype_isactive ? 'block' : 'check_circle'\n },\n {\n id: 'delete',\n label: 'Delete',\n icon: 'delete'\n }\n ];\n }\n\n /**\n * Handle dropdown item click\n */\n onDropdownItemClick(item: DropdownItem, control: ICoreSype): void {\n switch (item.id) {\n case 'edit':\n this.editControl(control);\n break;\n case 'toggle':\n this.toggleControlStatus(control);\n break;\n case 'delete':\n this.deleteControl(control);\n break;\n }\n }\n\n /**\n * Close all dropdowns\n */\n closeAllDropdowns(): void {\n // This method can be used to close dropdowns if needed\n }\n\n // New methods for the vertical layout\n selectControl(control: ICoreSype): void {\n this.selectedControlId.set(control._id || null);\n console.log('Selected control:', control);\n }\n\n trackByControlId(index: number, control: ICoreSype): string {\n return control._id || '';\n }\n} ","<!-- Page Controls Container -->\n<div class=\"tw-flex tw-flex-col tw-h-full tw-bg-gray-50\">\n <!-- Header Section -->\n <div class=\"tw-bg-white tw-border-b tw-border-gray-200 tw-px-6 tw-py-4\">\n <div class=\"tw-flex tw-items-center tw-justify-between\">\n <div class=\"tw-flex tw-items-center tw-space-x-4\">\n <button \n cideEleButton\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"goBack()\"\n class=\"tw-flex tw-items-center tw-justify-center tw-w-8 tw-h-8 tw-text-gray-600 hover:tw-text-gray-900 hover:tw-bg-gray-100 tw-rounded-md tw-transition-colors\">\n <cide-ele-icon>arrow_back</cide-ele-icon>\n </button>\n <div class=\"tw-flex tw-items-center tw-space-x-3\">\n <cide-ele-icon class=\"tw-text-blue-600 tw-text-xl\">settings</cide-ele-icon>\n <div>\n <h1 class=\"tw-text-xl tw-font-semibold tw-text-gray-900 tw-mb-0\">Control Management</h1>\n <p class=\"tw-text-sm tw-text-gray-500 tw-mb-0\">Page: {{ pageTitle() }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Error Message -->\n <div class=\"tw-bg-red-50 tw-border tw-border-red-200 tw-rounded-md tw-p-4 tw-mx-6 tw-mt-4 tw-flex tw-items-start tw-space-x-3\" *ngIf=\"error()\">\n <cide-ele-icon class=\"tw-text-red-500 tw-flex-shrink-0 tw-mt-0.5\">error</cide-ele-icon>\n <div>\n <h3 class=\"tw-text-red-800 tw-font-medium tw-mb-1\">Error</h3>\n <p class=\"tw-text-red-700 tw-text-sm tw-mb-0\">{{ error() }}</p>\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"tw-flex tw-flex-1 tw-gap-6 tw-p-6 tw-overflow-hidden lg:tw-flex-row tw-flex-col\">\n <!-- Form Section -->\n <div class=\"tw-w-full lg:tw-w-3/5 tw-bg-white tw-rounded-lg tw-border tw-border-gray-200 tw-shadow-sm tw-flex tw-flex-col\">\n <div class=\"tw-flex tw-items-center tw-space-x-3 tw-p-6 tw-border-b tw-border-gray-200\">\n <cide-ele-icon class=\"tw-text-blue-600\">{{ isEditMode() ? 'edit' : 'add' }}</cide-ele-icon>\n <h3 class=\"tw-text-lg tw-font-medium tw-text-gray-900 tw-mb-0\">{{ isEditMode() ? 'Edit Control' : 'Quick Add Control' }}</h3>\n </div>\n\n <!-- Form -->\n <form [formGroup]=\"controlForm\" (ngSubmit)=\"saveControl()\" class=\"tw-flex tw-flex-col tw-flex-1 tw-p-6 tw-overflow-y-auto\">\n <div class=\"tw-grid tw-grid-cols-1 lg:tw-grid-cols-2 tw-gap-4 tw-mb-6\">\n \n <!-- Basic Information Section -->\n <!-- Control Key -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_key\"\n formControlName=\"sype_key\"\n placeholder=\"Enter control key\"\n label=\"Control Key\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Control Label -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_label\"\n formControlName=\"sype_label\"\n placeholder=\"Enter control label\"\n label=\"Control Label\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Control Type -->\n <div class=\"tw-space-y-1\">\n <cide-ele-select\n id=\"sype_type\"\n formControlName=\"sype_type\"\n [options]=\"[\n { value: 'text', label: 'Text Input' },\n { value: 'textarea', label: 'Text Area' },\n { value: 'select', label: 'Select' },\n { value: 'checkbox', label: 'Checkbox' },\n { value: 'radio', label: 'Radio' },\n { value: 'date', label: 'Date' },\n { value: 'number', label: 'Number' },\n { value: 'email', label: 'Email' },\n { value: 'password', label: 'Password' },\n { value: 'file', label: 'File Upload' }\n ]\"\n label=\"Control Type\"\n size=\"sm\">\n </cide-ele-select>\n </div>\n\n <!-- Status - Checkbox aligned properly -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_isactive\"\n type=\"checkbox\"\n formControlName=\"sype_isactive\"\n label=\"Active Status\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Placeholder -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_placeholder\"\n formControlName=\"sype_placeholder\"\n placeholder=\"Enter placeholder text\"\n label=\"Placeholder\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Auto Complete - Checkbox aligned properly -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_auto_complete\"\n type=\"checkbox\"\n formControlName=\"sype_auto_complete\"\n label=\"Auto Complete\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Tooltip -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_tooltip\"\n formControlName=\"sype_tooltip\"\n placeholder=\"Enter tooltip text\"\n label=\"Tooltip\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Validation & Sizing Section -->\n <!-- Min/Max Length - Side by side -->\n <div class=\"tw-col-span-2 tw-flex tw-gap-4\">\n <div class=\"tw-flex-1 tw-space-y-1\">\n <cide-ele-input\n id=\"sype_min_length\"\n type=\"number\"\n formControlName=\"sype_min_length\"\n placeholder=\"0\"\n label=\"Min Length\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n <div class=\"tw-flex-1 tw-space-y-1\">\n <cide-ele-input\n id=\"sype_max_length\"\n type=\"number\"\n formControlName=\"sype_max_length\"\n placeholder=\"20\"\n label=\"Max Length\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Size & Label Placement - Side by side -->\n <div class=\"tw-col-span-2 tw-flex tw-gap-4\">\n <div class=\"tw-flex-1 tw-space-y-1\">\n <cide-ele-select\n id=\"sype_size\"\n formControlName=\"sype_size\"\n label=\"Size\"\n size=\"xs\"\n [options]=\"[\n { value: 'xs', label: 'XS' },\n { value: 'sm', label: 'SM' },\n { value: 'md', label: 'MD' },\n { value: 'lg', label: 'LG' },\n { value: 'xl', label: 'XL' },\n { value: 'xxl', label: 'XXL' }\n ]\">\n </cide-ele-select>\n </div>\n <div class=\"tw-flex-1 tw-space-y-1\">\n <cide-ele-select\n id=\"sype_label_placement\"\n formControlName=\"sype_label_placement\"\n label=\"Label Placement\"\n size=\"xs\"\n [options]=\"[\n { value: 'left', label: 'Left' },\n { value: 'floating', label: 'Floating' },\n { value: 'fixed', label: 'Fixed' }\n ]\">\n </cide-ele-select>\n </div>\n </div>\n\n <!-- Width & Height - Side by side -->\n <div class=\"tw-col-span-2 tw-flex tw-gap-4\">\n <div class=\"tw-flex-1 tw-space-y-1\">\n <cide-ele-input\n id=\"sype_width\"\n type=\"text\"\n formControlName=\"sype_width\"\n placeholder=\"20px\"\n label=\"Width\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n <div class=\"tw-flex-1 tw-space-y-1\">\n <cide-ele-input\n id=\"sype_height\"\n type=\"text\"\n formControlName=\"sype_height\"\n placeholder=\"20px\"\n label=\"Height\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n </div>\n\n <!-- Leading Icon -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_leading_icon\"\n formControlName=\"sype_leading_icon\"\n placeholder=\"Enter icon name\"\n label=\"Leading Icon\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Default Value -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_default\"\n formControlName=\"sype_default\"\n placeholder=\"Enter default value\"\n label=\"Default Value\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Regex Pattern -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_regex\"\n formControlName=\"sype_regex\"\n placeholder=\"Enter regex pattern\"\n label=\"Regex Pattern\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Option Key -->\n <div class=\"tw-space-y-1\">\n <cide-ele-input\n id=\"sype_option_key\"\n formControlName=\"sype_option_key\"\n placeholder=\"Enter option key\"\n label=\"Option Key\"\n size=\"sm\">\n </cide-ele-input>\n </div>\n\n <!-- Entity ID (Auto-assigned from AppState) - Hidden -->\n <div class=\"tw-space-y-1\" style=\"display: none;\">\n <cide-ele-input\n id=\"sype_entity_id_syen\"\n formControlName=\"sype_entity_id_syen\"\n placeholder=\"Auto-assigned from system\"\n label=\"Entity ID (Auto-assigned)\"\n size=\"sm\"\n readonly>\n </cide-ele-input>\n </div>\n\n <!-- Control Options -->\n <div class=\"tw-col-span-2 tw-space-y-1\">\n <h6 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-mb-3\">Control Options</h6>\n <div class=\"tw-grid tw-grid-cols-1 sm:tw-grid-cols-2 lg:tw-grid-cols-3 tw-gap-3\">\n \n <!-- Required -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-input\n id=\"sype_required\"\n type=\"checkbox\"\n formControlName=\"sype_required\"\n label=\"Required\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n <!-- Disabled -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-input\n id=\"sype_disabled\"\n type=\"checkbox\"\n formControlName=\"sype_disabled\"\n label=\"Disabled\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n <!-- Hide Label -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-input\n id=\"sype_label_hide\"\n type=\"checkbox\"\n formControlName=\"sype_label_hide\"\n label=\"Hide Label\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n <!-- Hide Helper Text -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-input\n id=\"sype_hide_helper_and_error_text\"\n type=\"checkbox\"\n formControlName=\"sype_hide_helper_and_error_text\"\n label=\"Hide Helper Text\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n <!-- Helper Text Collapse -->\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <cide-ele-input\n id=\"sype_helper_text_collapse\"\n type=\"checkbox\"\n formControlName=\"sype_helper_text_collapse\"\n label=\"Collapse Helper\"\n size=\"xs\">\n </cide-ele-input>\n </div>\n\n </div>\n </div>\n\n </div>\n\n <!-- Form Actions -->\n <div class=\"tw-flex tw-justify-between tw-items-center tw-pt-4 tw-border-t tw-border-gray-200 tw-mt-auto\">\n <!-- Error Message (Left Side) -->\n <cide-form-field-error [formGroup]=\"controlForm\"></cide-form-field-error>\n \n <!-- Action Buttons (Right Side) -->\n <div class=\"tw-flex tw-gap-3\">\n <button \n cideEleButton\n type=\"button\"\n variant=\"outline\"\n (click)=\"cancelForm()\"\n [disabled]=\"loading()\">\n Cancel\n </button>\n <button \n cideEleButton\n type=\"submit\"\n variant=\"primary\"\n [disabled]=\"loading()\">\n {{ isEditMode() ? 'Update Control' : 'Create Control' }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <!-- Controls List Section -->\n <div class=\"tw-w-full lg:tw-w-2/5 tw-bg-white tw-rounded-lg tw-border tw-border-gray-200 tw-shadow-sm tw-flex tw-flex-col lg:tw-max-h-none tw-max-h-96\">\n <div class=\"tw-p-6 tw-border-b tw-border-gray-200\">\n <h3 class=\"tw-text-lg tw-font-medium tw-text-gray-900 tw-mb-1\">Page Controls</h3>\n <p class=\"tw-text-sm tw-text-gray-500 tw-mb-0\">Controls connected to this page</p>\n </div>\n \n <div class=\"tw-flex-1 tw-overflow-y-auto tw-p-4\" *ngIf=\"!loading() && controls().length > 0\">\n <div \n class=\"tw-bg-gray-50 tw-border tw-border-gray-200 tw-rounded-lg tw-p-4 tw-mb-3 tw-cursor-pointer tw-transition-all tw-duration-200 hover:tw-shadow-md hover:tw-border-gray-300 focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-blue-500 focus:tw-ring-offset-2\" \n *ngFor=\"let control of controls(); trackBy: trackByControlId\"\n [class.tw-bg-blue-50]=\"selectedControlId() === control._id\"\n [class.tw-border-blue-300]=\"selectedControlId() === control._id\"\n [class.tw-shadow-md]=\"selectedControlId() === control._id\"\n (click)=\"selectControl(control)\"\n (keyup.enter)=\"selectControl(control)\"\n (keyup.space)=\"selectControl(control)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"'Select control ' + (control.sype_label || control.sype_key)\">\n <div class=\"tw-flex tw-items-start tw-space-x-3\">\n <div class=\"tw-flex-shrink-0 tw-w-10 tw-h-10 tw-bg-blue-100 tw-rounded-lg tw-flex tw-items-center tw-justify-center\">\n <cide-ele-icon class=\"tw-text-blue-600\">settings_input_component</cide-ele-icon>\n </div>\n <div class=\"tw-flex-1 tw-min-w-0\">\n <h4 class=\"tw-text-sm tw-font-medium tw-text-gray-900 tw-mb-1 tw-truncate\">{{ control.sype_label || control.sype_key }}</h4>\n <p class=\"tw-text-xs tw-text-gray-500 tw-mb-2 tw-truncate\">{{ control.sype_tooltip || 'No tooltip' }}</p>\n <div class=\"tw-flex tw-items-center tw-space-x-2\">\n <span class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium tw-bg-gray-100 tw-text-gray-800\">{{ control.sype_type }}</span>\n <span class=\"tw-inline-flex tw-items-center tw-px-2 tw-py-0.5 tw-rounded-full tw-text-xs tw-font-medium\" \n [class.tw-bg-red-100]=\"!control.sype_isactive\"\n [class.tw-text-red-800]=\"!control.sype_isactive\"\n [class.tw-bg-green-100]=\"control.sype_isactive\"\n [class.tw-text-green-800]=\"control.sype_isactive\">\n {{ control.sype_isactive ? 'Active' : 'Inactive' }}\n </span>\n </div>\n </div>\n <div class=\"tw-flex tw-items-center tw-space-x-1 tw-opacity-0 tw-transition-opacity tw-duration-200 group-hover:tw-opacity-100\" \n [class.tw-opacity-100]=\"selectedControlId() === control._id\">\n <button \n cideEleButton\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"editControl(control); $event.stopPropagation()\">\n <cide-ele-icon>edit</cide-ele-icon>\n </button>\n <button \n cideEleButton\n variant=\"ghost\"\n size=\"sm\"\n (click)=\"deleteControl(control); $event.stopPropagation()\">\n <cide-ele-icon>delete</cide-ele-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"tw-flex tw-flex-col tw-items-center tw-justify-center tw-py-12 tw-text-center\" *ngIf=\"!loading() && controls().length === 0\">\n <cide-ele-icon class=\"tw-text-4xl tw-text-gray-300 tw-mb-4\">settings_input_component</cide-ele-icon>\n <p class=\"tw-text-gray-500 tw-font-medium tw-mb-1\">No controls available</p>\n <small class=\"tw-text-gray-400\">Create controls using the form on the left</small>\n </div>\n\n <div class=\"tw-flex tw-flex-col tw-items-center tw-justify-center tw-py-12 tw-text-center\" *ngIf=\"loading()\">\n <cide-ele-icon class=\"tw-text-2xl tw-text-blue-500 tw-mb-4 tw-animate-spin\">refresh</cide-ele-icon>\n <p class=\"tw-text-gray-500\">Loading controls...</p>\n </div>\n </div>\n </div>\n</div>\n\n ","// Page Management Components\r\nexport * from './components/page-list/page-list.component';\r\nexport * from './components/page-theme/page-theme.component';\r\nexport * from './components/page-controls/page-controls.component';\r\n\r\n// Page Management Services\r\nexport * from './services/page-management.service';\r\nexport * from './services/page-theme.service';\r\nexport * from './services/page-controls.service';\r\n\r\n// Page Management Interfaces - Now using model interfaces from cloud-ide-lms-model ","/*\n * Public API Surface of cloud-ide-core\n */\nexport * from './lib/cloud-ide-core.routes';\nexport * from './lib/cloud-ide-core.service';\nexport * from './lib/cloud-ide-core.component';\n\n// Menu Management Module\nexport * from './lib/core/menu-management';\n\n// Department Management Module\nexport * from './lib/core/department-management';\n\n// Designation Management Module\nexport * from './lib/core/designation-management';\n\n// Grade Level Management Module\nexport * from './lib/core/grade-level-management';\n\n// Page Management Components\nexport * from './lib/core/page-management';\n\n// User Management Module\n// export * from './lib/core/user-management';\n\n// // User Role Management Module\n// export * from './lib/core/user-role-management';\n\n// // Entity Management Module\n// export * from './lib/core/entity-management';\n\n// // General Master Management Module\n// export * from './lib/core/general-master-management';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;AAGO,MAAM,UAAU,GAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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"}
|