{"version":3,"file":"codefoxerpframe-codefoxerpframe-3f2e8af4.mjs","sources":["../../../projects/codefoxerpframe/src/lib/services/admin.service.ts","../../../projects/codefoxerpframe/src/lib/const/general.const.ts","../../../projects/codefoxerpframe/src/lib/const/routes.const.ts","../../../projects/codefoxerpframe/src/lib/helpers/routes.helpers.ts","../../../projects/codefoxerpframe/src/lib/helpers/general.helpers.ts","../../../projects/codefoxerpframe/src/lib/services/electron.service.ts","../../../projects/codefoxerpframe/src/lib/services/erp.service.ts","../../../projects/codefoxerpframe/src/lib/services/history.service.ts","../../../projects/codefoxerpframe/src/lib/services/hotkeys.service.ts","../../../projects/codefoxerpframe/src/lib/services/maintenance.service.ts","../../../projects/codefoxerpframe/src/lib/services/printerhelper.service.ts","../../../projects/codefoxerpframe/src/lib/services/settings.service.ts","../../../projects/codefoxerpframe/src/lib/services/user.service.ts","../../../projects/codefoxerpframe/src/lib/classes/globalerrorhandler.class.ts","../../../projects/codefoxerpframe/src/lib/classes/erp.dialog.class.ts","../../../projects/codefoxerpframe/src/lib/components/admin/components/admin/admin.component.ts","../../../projects/codefoxerpframe/src/lib/components/admin/components/admin/admin.component.html","../../../projects/codefoxerpframe/src/lib/components/admin/components/loggedusers/loggedusers.component.ts","../../../projects/codefoxerpframe/src/lib/components/admin/components/loggedusers/loggedusers.component.html","../../../projects/codefoxerpframe/src/lib/components/admin/components/routerstat/routerstat.component.ts","../../../projects/codefoxerpframe/src/lib/components/admin/components/routerstat/routerstat.component.html","../../../projects/codefoxerpframe/src/lib/components/admin/components/socketclients/socketclients.component.ts","../../../projects/codefoxerpframe/src/lib/components/admin/components/socketclients/socketclients.component.html","../../../projects/codefoxerpframe/src/lib/components/changepassword/changepassword.component.ts","../../../projects/codefoxerpframe/src/lib/components/changepassword/changepassword.component.html","../../../projects/codefoxerpframe/src/lib/components/chat/messageeditor/messageeditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/chat/messageeditor/messageeditor.component.html","../../../projects/codefoxerpframe/src/lib/components/chat/chat.component.ts","../../../projects/codefoxerpframe/src/lib/components/chat/chat.component.html","../../../projects/codefoxerpframe/src/lib/components/clienthistorymodal/clienthistorymodal.component.ts","../../../projects/codefoxerpframe/src/lib/components/clienthistorymodal/clienthistorymodal.component.html","../../../projects/codefoxerpframe/src/lib/components/filedownloadmodal/filedownloadmodal.component.ts","../../../projects/codefoxerpframe/src/lib/components/filedownloadmodal/filedownloadmodal.component.html","../../../projects/codefoxerpframe/src/lib/components/fileuploaderrorlogmodal/fileuploaderrorlogmodal.component.ts","../../../projects/codefoxerpframe/src/lib/components/fileuploaderrorlogmodal/fileuploaderrorlogmodal.component.html","../../../projects/codefoxerpframe/src/lib/components/fileuploadmodal/fileuploadmodal.component.ts","../../../projects/codefoxerpframe/src/lib/components/fileuploadmodal/fileuploadmodal.component.html","../../../projects/codefoxerpframe/src/lib/tokens/statusblock.token.ts","../../../projects/codefoxerpframe/src/lib/tokens/home.token.ts","../../../projects/codefoxerpframe/src/lib/components/header/header.component.ts","../../../projects/codefoxerpframe/src/lib/components/header/header.component.html","../../../projects/codefoxerpframe/src/lib/components/help/help.component.ts","../../../projects/codefoxerpframe/src/lib/interfaces/general.interfaces.ts","../../../projects/codefoxerpframe/src/lib/components/history/history.component.ts","../../../projects/codefoxerpframe/src/lib/components/history/history.component.html","../../../projects/codefoxerpframe/src/lib/directives/urlopener.directive.ts","../../../projects/codefoxerpframe/src/lib/components/home/home.component.ts","../../../projects/codefoxerpframe/src/lib/components/home/home.component.html","../../../projects/codefoxerpframe/src/lib/components/hotkeyeditor/hotkeyeditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/labelsviewer/labelsviewer.component.ts","../../../projects/codefoxerpframe/src/lib/components/labelsviewer/labelsviewer.component.html","../../../projects/codefoxerpframe/src/lib/components/login/login.component.ts","../../../projects/codefoxerpframe/src/lib/components/login/login.component.html","../../../projects/codefoxerpframe/src/lib/components/maintenance/components/maintenance/maintenance.component.ts","../../../projects/codefoxerpframe/src/lib/components/maintenance/components/maintenance/maintenance.component.html","../../../projects/codefoxerpframe/src/lib/components/maintenance/components/lockrelease/lockrelease.component.ts","../../../projects/codefoxerpframe/src/lib/components/maintenance/components/lockrelease/lockrelease.component.html","../../../projects/codefoxerpframe/src/lib/components/maintenance/components/system/system.component.ts","../../../projects/codefoxerpframe/src/lib/components/maintenance/components/system/system.component.html","../../../projects/codefoxerpframe/src/lib/components/printingtimermodal/printingtimermodal.component.ts","../../../projects/codefoxerpframe/src/lib/components/printingtimermodal/printingtimermodal.component.html","../../../projects/codefoxerpframe/src/lib/components/printlabelmodal/printlabelmodal.component.ts","../../../projects/codefoxerpframe/src/lib/components/printlabelmodal/printlabelmodal.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/labeleditor/labelseditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/labeleditor/labelseditor.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/labels/labels.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/labels/labels.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/settings/settings.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/settings/settings.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/usereditor/usereditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/usereditor/usereditor.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/usergroupeditor/usergroupeditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/usergroupeditor/usergroupeditor.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/usergroups/usergroups.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/usergroups/usergroups.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/usergroupspermissiontable/usergroupspermissiontable.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/usergroupspermissiontable/usergroupspermissiontable.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/users/users.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/users/users.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/workstationeditor/workstationeditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/workstationeditor/workstationeditor.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/workstations/workstations.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/workstations/workstations.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/countries/countries.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/countries/countries.component.html","../../../projects/codefoxerpframe/src/lib/directives/hotkey.directive.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/currencies/currencies.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/currencies/currencies.component.html","../../../projects/codefoxerpframe/src/lib/components/settings/components/currencyeditor/currencyeditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/settings/components/currencyeditor/currencyeditor.component.html","../../../projects/codefoxerpframe/src/lib/components/tabselector/tabselector.component.ts","../../../projects/codefoxerpframe/src/lib/components/tabselector/tabselector.component.html","../../../projects/codefoxerpframe/src/lib/components/userconfirm/userconfirm.component.ts","../../../projects/codefoxerpframe/src/lib/components/userconfirm/userconfirm.component.html","../../../projects/codefoxerpframe/src/lib/components/workstationset/workstationset.component.ts","../../../projects/codefoxerpframe/src/lib/components/workstationset/workstationset.component.html","../../../projects/codefoxerpframe/src/lib/validators/addresses.validators.ts","../../../projects/codefoxerpframe/src/lib/components/addresseditor/addresseditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/addresseditor/addresseditor.component.html","../../../projects/codefoxerpframe/src/lib/pipes/address.pipe.ts","../../../projects/codefoxerpframe/src/lib/components/addresslist/addresslist.component.ts","../../../projects/codefoxerpframe/src/lib/components/addresslist/addresslist.component.html","../../../projects/codefoxerpframe/src/lib/components/contacteditor/contacteditor.component.ts","../../../projects/codefoxerpframe/src/lib/components/contacteditor/contacteditor.component.html","../../../projects/codefoxerpframe/src/lib/components/contactlist/contactlist.component.ts","../../../projects/codefoxerpframe/src/lib/components/contactlist/contactlist.component.html","../../../projects/codefoxerpframe/src/lib/directives/history.directive.ts","../../../projects/codefoxerpframe/src/lib/components/buttonbar/buttonbar.component.ts","../../../projects/codefoxerpframe/src/lib/components/buttonbar/buttonbar.component.html","../../../projects/codefoxerpframe/src/lib/components/buttonbarordermodal/buttonbarordermodal.component.ts","../../../projects/codefoxerpframe/src/lib/components/buttonbarordermodal/buttonbarordermodal.component.html","../../../projects/codefoxerpframe/src/lib/pipes/historylabel.pipe.ts","../../../projects/codefoxerpframe/src/lib/providers/general.providers.ts","../../../projects/codefoxerpframe/src/lib/resolvers/general.resolvers.ts","../../../projects/codefoxerpframe/src/public-api.ts","../../../projects/codefoxerpframe/src/codefoxerpframe.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"codefoxui\";\r\nimport { ConnectedWebsocketClient, LoggedUserRow, SessionRow } from \"../interfaces/admin.interfaces\";\r\nimport { Observable } from \"rxjs\";\r\nimport { HttpHeaders, HttpParams } from \"@angular/common/http\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AdminService {\r\n\tapiService: ApiService = inject(ApiService);\r\n\r\n    getSocketClients(): Observable<{\r\n\t\tsocketClients: ConnectedWebsocketClient[]\r\n\t}> {\r\n\t\treturn this.apiService.get(['admin', 'network']);\r\n\t}\r\n\r\n    getLoggedUsers(ping: boolean): Observable<{\r\n\t\tloggedUserRows: LoggedUserRow[]\r\n\t}> {\r\n\t\tlet httpParams: HttpParams = new HttpParams();\r\n\t\thttpParams = httpParams.append('ping' , ping ? '1': '0');\r\n\t\treturn this.apiService.getWithHttpParams(['admin', 'loggedusers'], httpParams);\r\n\t}\r\n\r\n    getSessionRows(): Observable<{\r\n\t\trows: SessionRow[]\r\n\t}> {\r\n        let headers: HttpHeaders = new HttpHeaders({\r\n            'Content-Type': 'application/json',\r\n            'Authorization': \"Basic \" + btoa(\"codefox:xizjba8eXFichz9\")\r\n        });\r\n        return this.apiService.httpClient.get<any>(this.apiService.apiBaseUrl + '/serverlib/sessions', {\r\n            headers\r\n        });\r\n\t}\r\n\r\n    flushSessionsToDatabase(): Observable<{}> {\r\n\t\treturn this.apiService.patch(['admin', 'flushsessionstodb'], {});\r\n\t}\r\n}\r\n","import { ConfirmConfiguration } from \"codefoxui\";\r\n\r\nexport const DELETE_DIALOG_OPTIONS: ConfirmConfiguration = {\r\n    acceptText: 'Igen',\r\n    declineText: 'Nem',\r\n    text: 'Biztosan törlöd?',\r\n    title: 'Mr. Register',\r\n    switchButtonColors: true\r\n}","import { Routes } from \"@angular/router\";\r\nimport { hasPermissionGuard } from \"codefoxui\";\r\n\r\nexport const ERP_ADMIN_ROUTES: Routes = [\r\n\t{ path: 'loggedusers', loadComponent: () => import('../components/admin/components/loggedusers/loggedusers.component').then(c => c.LoggedusersComponent), canActivate: [hasPermissionGuard('admin.loggedusers')] },\r\n\t{ path: 'routerstat', loadComponent: () => import('../components/admin/components/routerstat/routerstat.component').then(c => c.RouterStatComponent), canActivate: [hasPermissionGuard('admin.routerstat')] },\r\n\t{ path: 'socketclients', loadComponent: () => import('../components/admin/components/socketclients/socketclients.component').then(c => c.SocketclientsComponent), canActivate: [hasPermissionGuard('admin.socketclients')] },\r\n    { path: 'sessionmanager', loadComponent: () => import('../components/admin/components/sessionmanager/sessionmanager.component').then(c => c.SessionManagerComponent), canActivate: [hasPermissionGuard('godmode')] }\r\n];\r\n\r\nexport const ERP_SETTINGS_ROUTES: Routes = [\r\n    { path: 'labels', loadComponent: () => import('../components/settings/components/labels/labels.component').then(c => c.LabelsComponent), canActivate: [hasPermissionGuard('labels.read')] },\r\n\t{ path: 'users', loadComponent: () => import('../components/settings/components/users/users.component').then(c => c.UsersComponent), canActivate: [hasPermissionGuard('users.read')] },\r\n\t{ path: 'usergroups', loadComponent: () => import('../components/settings/components/usergroups/usergroups.component').then(c => c.UsergroupsComponent), canActivate: [hasPermissionGuard('usergroups.read')] },\r\n\t{ path: 'workstations', loadComponent: () => import('../components/settings/components/workstations/workstations.component').then(c => c.WorkstationsComponent), canActivate: [hasPermissionGuard('workstations.read')] },\r\n    { path: 'countries', loadComponent: () => import('../components/settings/components/countries/countries.component').then(c => c.CountriesComponent), canActivate: [hasPermissionGuard('countries.read')] },\r\n    { path: 'currencies', loadComponent: () => import('../components/settings/components/currencies/currencies.component').then(c => c.CurrenciesComponent), canActivate: [hasPermissionGuard('currencies.read')] },\r\n];\r\n\r\nexport const ERP_MAINTENANCE_ROUTES: Routes = [\r\n\t{ path: 'lockrelease', loadComponent: () => import('../components/maintenance/components/lockrelease/lockrelease.component').then(c => c.LockreleaseComponent), canActivate: [hasPermissionGuard('maintenance.lockrelease')] },\r\n\t{ path: 'system', loadComponent: () => import('../components/maintenance/components/system/system.component').then(c => c.SystemComponent), canActivate: [hasPermissionGuard('maintenance.system')] }\r\n];\r\n\r\nexport const ERP_BASE_ROUTES: Routes = [\r\n\t{ path: '', loadChildren: () => import('../components/home/home.routes').then(r => r.HOME_ROUTES) },\r\n    { path: 'login', loadChildren: () => import('../components/login/login.routes').then(r => r.LOGIN_ROUTES) },\r\n\t{ path: 'workstationset', loadChildren: () => import('../components/workstationset/workstationset.routes').then(r => r.WORKSTATIONSET_ROUTES) },\r\n\t{ path: 'header', loadChildren: () => import('../components/header/header.routes').then(r => r.HEADER_ROUTES) },\r\n\t{ path: 'changepassword', loadChildren: () => import('../components/changepassword/changepassword.routes').then(r => r.CHANGEPASSWORD_ROUTES) },\r\n];\r\n","import { Route, Routes } from \"@angular/router\";\r\nimport { ERP_ADMIN_ROUTES, ERP_BASE_ROUTES, ERP_MAINTENANCE_ROUTES, ERP_SETTINGS_ROUTES } from \"../const\";\r\nimport { MenuItem } from \"codefoxui\";\r\n\r\nexport type ErpRouteParams = {\r\n    children?: Routes;\r\n    baseRoutes?: Routes;\r\n    menuItems?: MenuItem[];\r\n};\r\n\r\nexport function includeErpAdminRoute(params?: ErpRouteParams): Route {\r\n    return {\r\n        path: 'admin',\r\n        loadComponent: () => import('../components/admin/components/admin/admin.component').then(c => c.AdminComponent),\r\n        data: {\r\n            menuItems: params?.menuItems ?? []\r\n        },\r\n        children: [\r\n            ...(params?.baseRoutes ?? ERP_ADMIN_ROUTES),\r\n            ...(params?.children ?? [])\r\n        ]\r\n    }\r\n}\r\n\r\nexport function includeErpMaintenanceRoute(params?: ErpRouteParams): Route {\r\n    return {\r\n        path: 'maintenance',\r\n        loadComponent: () => import('../components/maintenance/components/maintenance/maintenance.component').then(c => c.MaintenanceComponent),\r\n        data: {\r\n            menuItems: params?.menuItems ?? []\r\n        },\r\n        children: [\r\n            ...(params?.baseRoutes ?? ERP_MAINTENANCE_ROUTES),\r\n            ...(params?.children ?? [])\r\n        ]\r\n    }\r\n}\r\n\r\nexport function includeErpSettingsRoute(params?: ErpRouteParams): Route {\r\n    return {\r\n        path: 'settings',\r\n        loadComponent: () => import('../components/settings/components/settings/settings.component').then(c => c.SettingsComponent),\r\n        data: {\r\n            menuItems: params?.menuItems ?? []\r\n        },\r\n        children: [\r\n            ...(params?.baseRoutes ?? ERP_SETTINGS_ROUTES),\r\n            ...(params?.children ?? [])\r\n        ]\r\n    }\r\n}\r\n\r\nexport function includeErpBaseRoutes(\r\n    params?: {\r\n        erpSettingsRouteParams?: ErpRouteParams,\r\n        erpAdminRouteParams?: ErpRouteParams,\r\n        erpMaintenanceRouteParams?: ErpRouteParams\r\n    }\r\n): Routes {\r\n    return [\r\n        ...ERP_BASE_ROUTES,\r\n        includeErpAdminRoute(params?.erpAdminRouteParams),\r\n        includeErpMaintenanceRoute(params?.erpMaintenanceRouteParams),\r\n        includeErpSettingsRoute(params?.erpSettingsRouteParams)\r\n    ]\r\n}","import { ActivatedRouteSnapshot } from \"@angular/router\";\r\nimport { ButtonBarItem, ButtonBarItemPermission } from \"../interfaces\";\r\nimport { CfPermissionsService } from \"codefoxui\";\r\n\r\n/**\r\n * Returns the id from the url\r\n * @param route `ActivatedRouteSnapshot`\r\n */\r\nexport function getIdFromParamMap(route: ActivatedRouteSnapshot): number | null {\r\n\tconst idString: string | null = route.paramMap.get('id');\r\n\tif (idString !== null) {\r\n\t\treturn parseInt(idString);\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nexport function digitsOnly(input: string): boolean {\r\n\treturn input.match(/^\\d+$/g) !== null;\r\n}\r\n\r\nexport function urlEncode(input: string): string {\r\n\tinput = input.replace(/\\;/g, '%3B');\r\n\tinput = input.replace(/\\?/g, '%3F');\r\n\tinput = input.replace(/\\//g, '%2F');\r\n\treturn input;\r\n}\r\n\r\nexport function isRunningFromElectron(): boolean {\r\n    return window.process !== undefined && window.process.versions !== undefined && window.process.versions[\"electron\"] !== undefined;\r\n}\r\n\r\nfunction isButtonBarItemPermission(buttonBarItemPermission: any): buttonBarItemPermission is ButtonBarItemPermission {\r\n\treturn typeof buttonBarItemPermission === 'object' && buttonBarItemPermission['mode'] !== undefined;\r\n}\r\n\r\nexport function filterByPermissions(permissionService: CfPermissionsService): (button: ButtonBarItem) => boolean {\r\n\treturn (button) => {\r\n\t\tif (button.permission === undefined) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst permissions: string[] = [];\r\n\t\tif (typeof button.permission === 'string') {\r\n\t\t\tpermissions.push(button.permission);\r\n\t\t} else if (button.permission instanceof Array) {\r\n\t\t\tpermissions.push(...button.permission);\r\n\t\t} else if (typeof button.permission.permissions === 'string') {\r\n\t\t\tpermissions.push(button.permission.permissions);\r\n\t\t} else {\r\n\t\t\tpermissions.push(...button.permission.permissions);\r\n\t\t}\r\n\t\t\r\n\t\tif (isButtonBarItemPermission(button.permission)) {\r\n\t\t\treturn permissionService.hasPermissions(permissions, button.permission.skipGodMode, button.permission.skipOnPermissions, button.permission.mode);\r\n\t\t} else {\r\n\t\t\treturn permissionService.hasPermissions(permissions);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function buttonBarSeverityHandler(button: ButtonBarItem): string {\r\n\tif (button.severity === undefined) {\r\n\t\treturn 'primary';\r\n\t}\r\n\t\r\n\tif (typeof button.severity === 'function') {\r\n\t\treturn button.severity();\r\n\t}\r\n\r\n\treturn button.severity;\r\n}\r\n\r\nexport function buttonBarLabelHandler(button: ButtonBarItem): string | null {\r\n\tif (button.label === undefined) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (typeof button.label === 'function') {\r\n\t\treturn button.label();\r\n\t}\r\n\r\n\treturn button.label;\r\n}\r\n","import { IpcRenderer, IpcRendererEvent } from 'electron';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { DestroyRef, inject, Injectable } from '@angular/core';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { CfDialogRef, CfLoggerService } from 'codefoxui';\r\nimport { ElectronIpcReceiveValueMap, ElectronIpcSendValueMap } from '../interfaces/electron.interfaces';\r\nimport { VersionInfo } from '../interfaces/general.interfaces';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { isRunningFromElectron } from '../helpers';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ElectronService {\r\n\r\n\tloggerService: CfLoggerService = inject(CfLoggerService);\r\n\r\n\tonSubject: Subject<{key: any, value: any}> = new Subject();\r\n\r\n    preventConsoleLog: boolean = false;\r\n\tparentTabGuid: string | null = null;\r\n\tdebugMode: boolean = false;\r\n\tshutdownMessage: string = '';\r\n\tshutdownTime: string | null = null;\r\n\r\n\tclientSlug: string | null = null;\r\n\r\n\tversionInfo: VersionInfo | null = null;\r\n\t\r\n\tlive: boolean = false;\r\n\r\n    projectGuid: string = '';\r\n\r\n\tguid: string = '';\r\n\r\n    urlState: {[key: string]: any} = {};\r\n\tstate: {[key: string]: any} = {};\r\n    settings: {[key: string]: any} = {};\r\n\r\n    titleStore: {title: string, dialogRef: CfDialogRef | null}[] = []\r\n\r\n    private ipcRenderer: IpcRenderer | null = null;\r\n\r\n\t// Get url state\r\n    getUrlState(urlState: string, defaultOnUndefined: any = null): any {\r\n        return this.urlState[urlState] ?? defaultOnUndefined;\r\n    }\r\n\r\n\t// Get state\r\n\tgetState<T>(key: string, defaultOnUndefined: T): any {\r\n\t\treturn this.state[key] ?? defaultOnUndefined;\r\n\t}\r\n\r\n\t// Set state\r\n\tsetState(key: string, value: any): void {\r\n        this.state[key] = value;\r\n\t\tthis.send(\"SET_STATE\", {\r\n\t\t\tkey,\r\n\t\t\tvalue\r\n\t\t});\r\n    }\r\n\r\n\t// Send\r\n\tsend<T extends keyof ElectronIpcSendValueMap>(key: T, value: ElectronIpcSendValueMap[T]): void {\r\n\t\tif (this.ipcRenderer !== null) {\r\n\t\t\tthis.ipcRenderer.send('cfelectron', {key, value});\r\n\t\t\tthis.loggerService.info('IPC MESSAGE SENT: ' + JSON.stringify({key, value}));\r\n\t\t}\r\n\t}\r\n\r\n\t// On\r\n\ton<T extends keyof ElectronIpcReceiveValueMap>(onKey: T): Observable<ElectronIpcReceiveValueMap[T]> {\r\n\t\treturn this.onSubject.pipe(\r\n\t\t\tfilter(({key}) => key.toUpperCase() === onKey),\r\n\t\t\tmap(({value}) => value)\r\n\t\t);\r\n\t}\r\n\r\n\t// Livedataset update\r\n\tonLivedatasetUpdate(datasetName: string, destroyRef: DestroyRef): Observable<string> {\r\n\t\treturn this.on('LIVEDATASET_UPDATE').pipe(\r\n            takeUntilDestroyed(destroyRef),\r\n\t\t\tfilter((message) => message.toUpperCase() === datasetName.toUpperCase())\r\n\t\t);\r\n\t}\r\n\r\n\tonBroadcastMessage(key: string, destroyRef: DestroyRef): Observable<any> {\r\n\t\treturn this.on('BROADCAST_MESSAGE_RECEIVED').pipe(\r\n\t\t\ttakeUntilDestroyed(destroyRef),\r\n\t\t\tfilter((message) => message.key.toUpperCase() === key.toUpperCase())\r\n\t\t);\r\n\t}\r\n\r\n\t// OpenURL\r\n\topenUrl(url: string, params?: {\r\n\t\turlState?: {[key: string]: any};\r\n\t\tcheckAlreadyOpened?: boolean;\r\n\t\tjumpToFirstOrOpen?: boolean;\r\n\t\ttitle?: string;\r\n        openConsole?: boolean\r\n\t}): void {\r\n\t\tthis.send('OPEN_URL', {\r\n\t\t\turl,\r\n\t\t\turlState: params?.urlState ?? {},\r\n\t\t\tcheckAlreadyOpened: params?.checkAlreadyOpened ?? false,\r\n\t\t\tjumpToFirstOrOpen: params?.jumpToFirstOrOpen ?? false,\r\n\t\t\ttitle: params?.title ?? '',\r\n            openConsole: params?.openConsole ?? false\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n     * Set title\r\n     * \r\n     * Push title to titleStore\r\n     * Override title if the same `CfDialogRef` is existing\r\n     * \r\n     * @param title strint\r\n     * @param dialogRef `CfDialogRef` or `null`\r\n     */\r\n\tsetTitle(title: string, dialogRef: CfDialogRef | null = null): void {\r\n        if (dialogRef !== null) {\r\n            const existingTitleStoreIndex: number = this.titleStore.findIndex((titleStoreItem) => titleStoreItem.dialogRef === dialogRef);\r\n            if (existingTitleStoreIndex !== -1) {\r\n                this.titleStore[existingTitleStoreIndex].title = title;\r\n            } else {\r\n                this.titleStore.push({\r\n                    title,\r\n                    dialogRef\r\n                });\r\n                dialogRef.onClose.subscribe(() => {\r\n                    this.titleStore = this.titleStore.filter((titleStoreItem) => titleStoreItem.dialogRef !== dialogRef);\r\n                    if (this.titleStore.length > 0) {\r\n                        this.send('SET_TITLE', this.titleStore[this.titleStore.length - 1].title);\r\n                    }\r\n                });\r\n            }\r\n        } else {\r\n            this.titleStore.push({\r\n                title,\r\n                dialogRef: null\r\n            });\r\n        }\r\n\t\tthis.send('SET_TITLE', title);\r\n\t}\r\n\r\n    lock(module: string, id: string | number, send: boolean): void {\r\n        this.send('LOCK', {\r\n            module,\r\n            id,\r\n\t\t\tsend\r\n        });\r\n    }\r\n\r\n    releaseLock(module: string, id: string | number): void {\r\n        this.send('RELEASE_LOCK', {\r\n            module,\r\n            id\r\n        });\r\n    }\r\n\r\n\t// Get settings\r\n\tgetSettings<T>(key: string, defaultOnUndefined: T): any {\r\n\t\treturn this.settings[key] ?? defaultOnUndefined;\r\n\t}\r\n\r\n    forceClose(): void {\r\n        this.send('CLOSE', {\r\n            force: true\r\n        });\r\n    }\r\n\r\n    sendGuidMessageToParent(data: any): void {\r\n        if (this.parentTabGuid === null) {\r\n            return;\r\n        }\r\n        this.send('GUID_MESSAGE', {\r\n            guid: this.parentTabGuid,\r\n            data\r\n        });\r\n    }\r\n\r\n\tbroadcast(key: string, data: any): void {\r\n\t\tthis.send('BROADCAST_MESSAGE', {\r\n\t\t\tkey,\r\n\t\t\tdata\r\n\t\t});\r\n\t}\r\n\r\n\tinitialize(): void {\r\n\r\n\t\tif (!isRunningFromElectron()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.ipcRenderer = window.require('electron').ipcRenderer;\r\n\t\t\r\n\t\tthis.ipcRenderer.on('cfelectron', (_: IpcRendererEvent, message: {key: any, value: any}) => {\r\n\t\t\tconsole.log(message.key);\r\n\t\t\tif (message.key === undefined || message.value === undefined) {\r\n\t\t\t\tthis.loggerService.error('INVALID IPC MESSAGE RECEIVED: ' + JSON.stringify(message));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.loggerService.warn('IPC MESSAGE RECEIVED: ' + JSON.stringify(message.key));\r\n\t\t\tthis.onSubject.next(message);\r\n\t\t});\r\n\r\n\t\tthis.loggerService.info('IPC renderer inited');\r\n\t}\r\n\t\r\n\tconstructor() {\r\n\t\tthis.initialize();\r\n\t}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ApiService, LabelValue } from 'codefoxui';\r\nimport { map, Observable, of, tap } from 'rxjs';\r\nimport { ChangeLogItem, Country, GetMessagesRequest, GetMessagesResponse, HomeInitResponse, Message, MessageEditor, TranslateRequest, TranslateResponse, VersionInfo, WorkstationCreateRequest } from '../interfaces/general.interfaces';\r\nimport { HttpParams } from '@angular/common/http';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ErpService {\r\n\tapiService: ApiService = inject(ApiService);\r\n\r\n\tgetLatestVersionInfo(guid: string): Observable<VersionInfo> {\r\n\t\treturn this.apiService.get(['#https://codefox.hu:13716/versioninfo', guid]);\r\n\t}\r\n\t\r\n\tsetUserSettings(module: string, name: string, config: any): Observable<string> {\r\n\t\treturn this.apiService.post(['usersettings', module, name], config);\r\n\t}\r\n\r\n    getUserSettings(module: string, name: string): Observable<any> {\r\n\t\treturn this.apiService.get(['usersettings', module, name]);\r\n\t}\r\n\t\r\n\tgetHome(): Observable<HomeInitResponse>  {\r\n        return this.apiService.get(['home']);\r\n    }\r\n\r\n\tgetChangelog(): Observable<{ changeLogItems: ChangeLogItem[] }> {\r\n        return this.apiService.get(['home', 'changelog']);\r\n    }\r\n\t\r\n\tcreateWorkstation(workstationCreateRequest: WorkstationCreateRequest): Observable<{}> {\r\n\t\treturn this.apiService.post(['workstations', 'setup'], workstationCreateRequest);\r\n\t}\r\n\r\n\tdeleteWorkstation(workstationId: number): Observable<{}> {\r\n\t\treturn this.apiService.delete(['workstations', 'setup', workstationId]);\r\n\t}\r\n\t\r\n\tgetHeaderStatus(): Observable<{\r\n\t\titems: {key: string; value: any}[]\r\n\t}> {\r\n\t\treturn this.apiService.get(['status']);\r\n\t}\r\n\r\n\tcreateMessage(request: MessageEditor): Observable<{ message: Message }> {\r\n\t\treturn this.apiService.post(['chat'], request);\r\n\t}\r\n\r\n\tupdateMessage(messageId: number, request: MessageEditor): Observable<{ message: Message }> {\r\n\t\treturn this.apiService.patch(['chat', messageId], request);\r\n\t}\r\n\r\n\tdeleteMessage(messageId: number): Observable<{}> {\r\n\t\treturn this.apiService.delete(['chat', messageId]);\r\n\t}\r\n\r\n\tmessageDone(messageId: number): Observable<{ message: Message }> {\r\n\t\treturn this.apiService.patch(['chat', messageId, 'done'], null);\r\n\t}\r\n\r\n\tmessageUnDone(messageId: number): Observable<{ message: Message }> {\r\n\t\treturn this.apiService.patch(['chat', messageId, 'undone'], null);\r\n\t}\r\n\r\n\tgetMessages(request: GetMessagesRequest): Observable<GetMessagesResponse> {\r\n\t\tlet params: HttpParams = new HttpParams().set('kind', request.kind).append('kindId', request.kindId);\r\n\t\treturn this.apiService.getWithHttpParams(['chat'], params);\r\n\t}\r\n\r\n\tuploadFiles(endPoint: string[], files: File[]): Observable<{}> {\r\n\t\tconst formData: FormData = new FormData();\r\n\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\tformData.append('file' + i.toString(), files[i]);\r\n\t\t}\r\n\t\treturn this.apiService.post(endPoint, formData);\r\n\t}\r\n\r\n\tgetLabels(): Observable<{\r\n\t\tlabels: LabelValue<number>[];\r\n\t}> {\r\n\t\treturn this.apiService.get(['labels', 'list']);\r\n\t}\r\n\r\n    getList<T = number>(endPoint: string[]): Observable<LabelValue<T>[]> {\r\n        return this.apiService.get<{\r\n            items: LabelValue<T>[]\r\n        }>(endPoint).pipe(map(({ items }) => items));\r\n    }\r\n\r\n    getAddressPublicPlacesTypes(): Observable<{ publicPlaces: string[] }> {\r\n        return this.apiService.get(['addresseditor', 'publicplacetypes'])\r\n    }\r\n\r\n\tgetCityByPostcode(postcode: string, countryCode: string): Observable<{ cities: string[] }> {\r\n\t\tlet params: HttpParams = new HttpParams();\r\n        params = params.set('countrycode', countryCode);\r\n        params = params.set('postcode', postcode);\r\n\t\treturn this.apiService.getWithHttpParams(['addresseditor', 'cities'], params);\r\n\t}\r\n\r\n\tgetCountries(): Observable<{ countries: Country[] }> {\r\n\t\treturn this.apiService.get(['countries']);\r\n\t}\r\n\r\n\tsetCountries(countries: Country[]): Observable<{}> {\r\n\t\treturn this.apiService.patch(['countries'], countries);\r\n\t}\r\n\r\n    countries: LabelValue<string>[] = [];\r\n    countriesMap: Map<string, string> = new Map();\r\n    getCountryList(): Observable<LabelValue<string>[]> {\r\n        if (this.countries.length === 0) {\r\n            return this.getList<string>(['countries', 'list']).pipe(tap((items) => {\r\n                this.countries = items;\r\n                for (let item of items) {\r\n                    this.countriesMap.set(item.value, item.label);\r\n                }\r\n            }));\r\n        } else {\r\n            return of(this.countries);\r\n        }\r\n    }\r\n\r\n    translate(translateRequest: Partial<TranslateRequest> & {targetLangId: string;}, endPoint: string): Observable<Partial<TranslateResponse>> {\r\n        return this.apiService.post(['translate', endPoint], translateRequest);\r\n    }\r\n\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"codefoxui\";\r\nimport { Observable } from \"rxjs\";\r\nimport { Modification } from \"../interfaces/general.interfaces\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class HistoryService {\r\n\r\n\tapiService: ApiService = inject(ApiService);\r\n\r\n\tgetHistory(model: string, id: number): Observable<{\r\n\t\tmodifications: Modification[]\r\n\t}> {\r\n\t\treturn this.apiService.get(['history', model, id]);\r\n\t}\r\n\r\n\tparseHistory(): Observable<{}> {\r\n\t\treturn this.apiService.get(['parsehistory']);\r\n\t}\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { CfDialogService } from \"codefoxui\";\r\nimport { filter } from \"rxjs\";\r\nimport { ElectronService } from \"./electron.service\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class HotkeyService {\r\n\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tattachedEvents: {[key: string]: string} = this.electronService.getState('hotkeys', {});\r\n\r\n\tsetHotkey(eventName: string): void {\r\n\t\tthis.dialogService.openImport(() => import('../components/hotkeyeditor/hotkeyeditor.component').then(c => c.HotkeyEditorComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\tkey: this.attachedEvents[eventName] || null\r\n\t\t\t}\r\n\t\t}).then(({ onClose }) => {\r\n\t\t\tonClose.pipe(filter(rsp => rsp !== undefined)).subscribe((key: string | null) => {\r\n\t\t\t\tif (key === null) {\r\n\t\t\t\t\tdelete this.attachedEvents[eventName];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.attachedEvents[eventName] = key;\r\n\t\t\t\t}\r\n\t\t\t\tthis.electronService.setState('hotkeys', this.attachedEvents);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tstartDocumentKeydownListener(): void {\r\n\t\tdocument.addEventListener('keyup', (keyboardEvent: KeyboardEvent) => {\r\n\t\t\tthis.documentKeyup(keyboardEvent);\r\n\t\t});\r\n\t}\r\n\r\n\tdocumentKeyup(keyboardEvent: KeyboardEvent): void {\r\n\r\n\t\t// Prevent keyup on elements\r\n\t\tconst preventElements: string[] = ['input', 'textarea'];\r\n\t\tif (preventElements.includes((keyboardEvent.target as HTMLElement).nodeName.toLowerCase())) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Has event attached to button?\r\n\t\tconst eventParts: string[] = [keyboardEvent.key.toLowerCase()];\r\n\t\tif (['control', 'shift', 'alt'].includes(eventParts[0].toLowerCase())) {\r\n\t\t\teventParts.pop();\r\n\t\t}\r\n\t\tif (keyboardEvent.shiftKey) {\r\n\t\t\teventParts.push('shift');\r\n\t\t}\r\n\t\tif (keyboardEvent.altKey) {\r\n\t\t\teventParts.push('alt');\r\n\t\t}\r\n\t\tif (keyboardEvent.ctrlKey) {\r\n\t\t\teventParts.push('ctrl');\r\n\t\t}\r\n\t\t\r\n\t\tlet attachedEvent: string | null = null;\r\n\t\tObject.keys(this.attachedEvents).forEach((attachedEventName: string) => {\r\n\t\t\tconst attachedEventKeyParts: string[] = this.attachedEvents[attachedEventName].toLowerCase().split('+');\r\n\t\t\tif (attachedEventKeyParts.length === eventParts.length && attachedEventKeyParts.every((eventPart: string) => eventParts.includes(eventPart.toLowerCase()))) {\r\n\t\t\t\tattachedEvent = attachedEventName;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (attachedEvent === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst element: HTMLElement | null = document.querySelector('[data-hotkey-name=\"' + attachedEvent + '\"]');\r\n\t\tif (element === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telement.click();\r\n\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tthis.startDocumentKeydownListener();\r\n\t}\r\n\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"codefoxui\";\r\nimport { Observable } from \"rxjs\";\r\nimport { MaintenanceLockRow, MaintenanceSystemInit, ServerServiceItem, ServerServiceLogItem } from \"../interfaces/maintenance.interfaces\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class MaintenanceService {\r\n    \r\n\tapiService: ApiService = inject(ApiService);\r\n\r\n\tforceSocketUpdate(socketName: string): Observable<{}> {\r\n\t\treturn this.apiService.patch(['maintenance', 'forcesocketupdate'], { socketName });\r\n\t}\r\n\r\n\tsendShutdownMessage(message: string, minutes: number): Observable<{}> {\r\n\t\treturn this.apiService.post(['maintenance', 'system', 'shutdown'], {\r\n\t\t\tmessage,\r\n\t\t\tminutes\r\n\t\t});\r\n\t}\r\n\r\n\tsendShutdownCancel(): Observable<{}> {\r\n\t\treturn this.apiService.delete(['maintenance', 'system', 'shutdown']);\r\n\t}\r\n\r\n\tgetServices(): Observable<{\r\n\t\tservices: ServerServiceItem[]\r\n\t}> {\r\n\t\treturn this.apiService.get(['serverlib', 'services']);\r\n\t}\r\n\r\n\tstartService(serviceId: number): Observable<{}> {\r\n\t\treturn this.apiService.patch(['serverlib', 'services', serviceId, 'start'], {});\r\n\t}\r\n\r\n\tstopService(serviceId: number): Observable<{}> {\r\n\t\treturn this.apiService.patch(['serverlib', 'services', serviceId, 'stop'], {});\r\n\t}\r\n\r\n\tgetServiceLog(serviceId: number): Observable<{\r\n\t\titems: ServerServiceLogItem[]\r\n\t}> {\r\n\t\treturn this.apiService.get(['serverlib', 'services', serviceId, 'logs']);\r\n\t}\r\n\t\r\n\tsystemInit(): Observable<MaintenanceSystemInit> {\r\n\t\treturn this.apiService.get(['maintenance', 'system', 'init']);\r\n\t}\r\n\r\n\tgetLocks(): Observable<MaintenanceLockRow[]> {\r\n\t\treturn this.apiService.get(['maintenance', 'locks']);\r\n\t}\r\n\r\n\treleaseLock(module: string, id: number): Observable<{}> {\r\n\t\treturn this.apiService.patch(['maintenance', 'releaselock'], { module, id })\r\n\t}\r\n\r\n\tresetSystemCounters(): Observable<{}> {\r\n\t\treturn this.apiService.patch(['maintenance', 'system', 'counters'], {});\r\n\t}\r\n\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { ApiService } from \"codefoxui\";\r\nimport { Observable } from \"rxjs\";\r\nimport { PrintDocument, PrintRequest } from \"../interfaces\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class PrinterHelperService {\r\n\r\n\tapiService: ApiService = inject(ApiService);\r\n\r\n\tprinterHelperBaseUrl: string = '';\r\n\tprinterHelperXmlPath: string = '';\r\n\telectronPath: string = '';\r\n\r\n\tgetPrinters(): Observable<{\r\n\t\tprinters: string[]\r\n\t}> {\r\n\t\treturn this.apiService.get(['#' + this.printerHelperBaseUrl, 'printers']);\r\n\t}\r\n\r\n    getPrintDocuments(): Observable<PrintDocument[]> {\r\n\t\treturn this.apiService.get(['#' + this.printerHelperBaseUrl, 'documents']);\r\n    }\r\n\r\n\tprint(printRequest: PrintRequest): Observable<{}> {\r\n\t\tprintRequest.xmlFileName = this.printerHelperXmlPath + printRequest.xmlFileName;\r\n\t\tprintRequest.electronPath = this.electronPath;\r\n        printRequest.apiBaseUrl = this.apiService.apiBaseUrl !== null ? this.apiService.apiBaseUrl : '';\r\n\t\treturn this.apiService.post(['#' + this.printerHelperBaseUrl, 'print'], printRequest);\r\n\t}\r\n}\r\n","import { inject, Injectable } from \"@angular/core\";\r\nimport { ApiService, CfObservable, LabelValue } from \"codefoxui\";\r\nimport { CurrencyEditor, Permission, PermissionTableResponse, SetGroupPermissionRequest, UserEditor, UserGroupEditor, WorkstationEditor } from \"../interfaces/settings.interfaces\";\r\nimport { Observable } from \"rxjs\";\r\nimport { LabelConfiguration } from \"../interfaces\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SettingsService {\r\n\tapiService: ApiService = inject(ApiService);\r\n\r\n\tcreateUser(request: UserEditor): Observable<{}> {\r\n\t\treturn this.apiService.post(['admin', 'users'], request);\r\n\t}\r\n\r\n\tupdateUser(id: number, request: UserEditor): Observable<{}> {\r\n\t\treturn this.apiService.patch(['admin', 'users', id], request);\r\n\t}\r\n\r\n\tgetUser(id: number): Observable<{\r\n\t\tuserEditor: UserEditor\r\n\t}> {\r\n\t\treturn this.apiService.get(['admin', 'users', id]);\r\n\t}\r\n\r\n\tcopyUserSettings(sourceUserId: number, targetUserId: number): Observable<{}> {\r\n\t\treturn this.apiService.post(['users', 'copysettings'], {\r\n\t\t\tsourceUserId,\r\n\t\t\ttargetUserId\r\n\t\t});\r\n\t}\r\n\r\n\tgetUserGroups(): Observable<{\r\n\t\titems: LabelValue<number>[];\r\n\t}> {\r\n\t\treturn this.apiService.get(['admin', 'usergroups', 'list']);\r\n\t}\r\n\r\n\tcreateUserGroup(request: UserGroupEditor): Observable<{}> {\r\n\t\treturn this.apiService.post(['admin', 'usergroups'], request);\r\n\t}\r\n\r\n\tgetUserGroup(id: number): Observable<{\r\n\t\tuserGroupEditor: UserGroupEditor\r\n\t}> {\r\n\t\treturn this.apiService.get(['admin', 'usergroups', id]);\r\n\t}\r\n\r\n\tupdateUserGroup(id: number, request: UserGroupEditor): Observable<{}> {\r\n\t\treturn this.apiService.patch(['admin', 'usergroups', id], request);\r\n\t}\r\n\r\n\tdeleteUserGroup(id: number): Observable<{}> {\r\n\t\treturn this.apiService.delete(['admin', 'usergroups', id]);\r\n\t}\r\n\r\n\tgetPermissions(): Observable<{\r\n\t\tpermissions: Permission[]\r\n\t}> {\r\n\t\treturn this.apiService.get(['admin', 'permissions']);\r\n\t}\r\n\r\n\tgetUsergroupPermissionTable(): Observable<PermissionTableResponse> {\r\n\t\treturn this.apiService.get(['admin', 'permissions', 'table']);\r\n\t}\r\n\r\n\tupdateUsergroupPermissionTable(setGroupPermissionRequest: SetGroupPermissionRequest): Observable<{}> {\r\n\t\treturn this.apiService.patch(['admin', 'permissions', 'table'], setGroupPermissionRequest);\r\n\t}\r\n\r\n\tcreateWorkStation(request: WorkstationEditor): Observable<{}> {\r\n\t\treturn this.apiService.post(['workstations'], request);\r\n\t}\r\n\r\n\tupdateWorkStation(id: number, request: WorkstationEditor): Observable<{}> {\r\n\t\treturn this.apiService.patch(['workstations', id], request);\r\n\t}\r\n\r\n\tdeleteWorkStation(id: number): Observable<{}> {\r\n\t\treturn this.apiService.delete(['workstations', id]);\r\n\t}\r\n\r\n\tgetWorkStation(id: number): Observable<{\r\n\t\tworkstationEditor: WorkstationEditor\r\n\t}> {\r\n\t\treturn this.apiService.get(['workstations', id]);\r\n\t}\r\n\r\n\tcreateLabel(request: LabelConfiguration): Observable<{}> {\r\n\t\treturn this.apiService.post(['labels'], request);\r\n\t}\r\n\r\n\tupdateLabel(id: number, request: LabelConfiguration): Observable<{}> {\r\n\t\treturn this.apiService.patch(['labels', id], request);\r\n\t}\r\n\r\n\tdeleteLabel(id: number): Observable<{}> {\r\n\t\treturn this.apiService.delete(['labels', id]);\r\n\t}\r\n\r\n\tgetLabel(id: number): Observable<{\r\n\t\tlabelConfiguration: LabelConfiguration\r\n\t}> {\r\n\t\treturn this.apiService.get(['labels', id]);\r\n\t}\r\n\r\n    // CURRENCIES\r\n    createCurrency(currencyEditor: CurrencyEditor): Observable<{}> {\r\n        return this.apiService.post(['currencies'], currencyEditor);\r\n    }\r\n\r\n    getCurrency(currencyId: number): Observable<{\r\n        currencyEditor: CurrencyEditor\r\n    }> {\r\n        return this.apiService.get(['currencies', currencyId]);\r\n    }\r\n\r\n    updateCurrency(currencyId: number, currencyEditor: CurrencyEditor): Observable<{}> {\r\n        return this.apiService.patch(['currencies', currencyId], currencyEditor);\r\n    }\r\n\r\n    deleteCurrency(currencyId: number): CfObservable<{}> {\r\n\t\treturn this.apiService.cf.delete(['currencies', currencyId]);\r\n    }\r\n    \r\n}","import { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiService } from 'codefoxui';\r\nimport { LoginInitResponse, LoginRequest, LoginResponse } from '../interfaces/user.interfaces';\r\nimport { HttpParams } from '@angular/common/http';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class UserService {\r\n\tapiService: ApiService = inject(ApiService);\r\n\r\n\tfullname: string | null = null;\r\n\tusername: string | null = null;\r\n\tuserId: number | null = null;\r\n\tworkstation: string | null = null;\r\n\r\n\tlogin(loginRequest: LoginRequest): Observable<LoginResponse> {\r\n\t\treturn this.apiService.post(['users', 'login'], loginRequest);\r\n\t}\r\n\r\n\tloginInit(): Observable<LoginInitResponse> {\r\n\t\treturn this.apiService.getWithHttpParams(['users', 'login', 'init']);\r\n\t}\r\n\r\n\tchangePassword(oldPassword: string, newPassword: string): Observable<{}> {\r\n\t\treturn this.apiService.patch(['admin', 'user', 'changepassword'], {\r\n\t\t\toldPassword,\r\n\t\t\tnewPassword\r\n\t\t});\r\n\t}\r\n\r\n\tgetConfirmationUsers(permission: string): Observable<{\r\n\t\tusers: string[]\r\n\t}> {\r\n\t\tconst httpParams: HttpParams = new HttpParams().append('permission', permission);\r\n\t\treturn this.apiService.getWithHttpParams(['users' ,'confirm'], httpParams);\r\n\t}\r\n\r\n\tconfirmUser(username: string, password: string): Observable<{\r\n\t\terror: string | null,\r\n\t\tuserId: number | null\r\n\t}> {\r\n\t\treturn this.apiService.post(['users', 'confirm'], {\r\n\t\t\tusername,\r\n\t\t\tpassword\r\n\t\t});\r\n\t}\r\n}","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { ErrorHandler, inject, Injectable } from '@angular/core';\r\nimport { ElectronService } from '../services';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class GlobalErrorHandler implements ErrorHandler {\r\n\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\thandleError(error: any) {\r\n\t\tconsole.error(error);\r\n\r\n\t\tlet errorText: string = '';\r\n\r\n\t\tif (error instanceof HttpErrorResponse) {\r\n\t\t\terrorText = 'HTTP ERROR ' + JSON.stringify(error);\r\n\t\t} else {\r\n\t\t\tif (typeof error === 'object' && error.stack !== undefined) {\r\n\t\t\t\terrorText = error.stack;\r\n\t\t\t} else {\r\n\t\t\t\tif (typeof error === 'string') {\r\n\t\t\t\t\terrorText = error;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (errorText !== '') {\r\n\t\t\tthis.electronService.send(\"CLIENT_ERROR\", errorText);\r\n\t\t}\r\n\t}\r\n}","import { CfDialog, CfDialogService, CfMessageService } from \"codefoxui\";\r\nimport { ElectronService } from \"../services\";\r\nimport { ChangeDetectorRef, inject } from \"@angular/core\";\r\n\r\nexport class ErpDialog extends CfDialog {\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tmessageService: CfMessageService = inject(CfMessageService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\r\n\tconstructor(params?: {title?: string}) {\r\n\t\tsuper();\r\n\t\tif (params !== undefined) {\r\n\t\t\tif (params.title !== undefined) {\r\n\t\t\t\tthis.electronService.setTitle(params.title, this.ref);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\r\nimport { ActivatedRoute, RouterOutlet } from '@angular/router';\r\nimport { FullPageComponent, MenuItem } from 'codefoxui';\r\nimport { ElectronService } from '../../../../services/electron.service';\r\n\r\n@Component({\r\n\tselector: 'app-admin',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tRouterOutlet,\r\n\t\tFullPageComponent\r\n\t],\r\n\ttemplateUrl: './admin.component.html',\r\n\tstyleUrls: ['./admin.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdminComponent {\r\n\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tactivatedRoute: ActivatedRoute = inject(ActivatedRoute);\r\n\r\n\tmenuItems: MenuItem[] = [\r\n\t\t{ title: 'Szerver statisztika', routerLink: ['routerstat'], permissions: ['admin.routerstat'] },\r\n\t\t{ title: 'Hálózati kapcsolatok', routerLink: ['socketclients'], permissions: ['admin.socketclients'] },\r\n\t\t{ title: 'Bejelentkezett felhasználók', routerLink: ['loggedusers'], permissions: ['admin.loggedusers'] },\r\n\t\t{ title: 'Session manager', routerLink: ['sessionmanager'], permissions: ['godmode'] },\r\n\t]\r\n\r\n\tconstructor() {\r\n\t\tthis.electronService.setTitle('Admin');\r\n\t\tconst menuItems: MenuItem[] | undefined = this.activatedRoute.snapshot.data['menuItems'];\r\n\t\tif (menuItems !== undefined) {\r\n\t\t\tthis.menuItems.push(...menuItems);\r\n\t\t}\r\n\t}\r\n}\r\n","<cf-fullpage [menuItems]=\"menuItems\" [menuClasses]=\"'cf-pt-4 menu-sidebar'\" [contentClasses]=\"'cf-p-4'\" [menuWidth]=\"'260px'\">\r\n\t<router-outlet></router-outlet>\r\n</cf-fullpage>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, LOCALE_ID, OnInit, ViewChild } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { LIVEGRID_DATE_FORMAT_SHORT_DATETIME, LiveGridColumnType, LiveGridComponent, LiveGridOptions } from \"codefoxlivegrid\";\r\nimport { ButtonDirective, CfDestroyRef, CfPermissionDirective } from \"codefoxui\";\r\nimport { LoggedUserRow } from \"../../../../interfaces/admin.interfaces\";\r\nimport { AdminService } from \"../../../../services/admin.service\";\r\nimport { ElectronService } from '../../../../services/electron.service';\r\n\r\n@Component({\r\n\tselector: 'app-loggedusers',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tLiveGridComponent,\r\n\t\tButtonDirective,\r\n\t\tFormsModule,\r\n\t\tCfPermissionDirective\r\n\t],\r\n\ttemplateUrl: './loggedusers.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LoggedusersComponent extends CfDestroyRef implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tadminService: AdminService = inject(AdminService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tlocaleId: string = inject(LOCALE_ID);\r\n\r\n\tloggedUsersLivegridOptions: LiveGridOptions<LoggedUserRow> = {\r\n        name: 'loggedusers',\r\n        idField: \"liveGridId\",\r\n        useInternalIdCounter: true,\r\n        columns: [{\r\n            field: \"userId\",\r\n            width: 300,\r\n            type: LiveGridColumnType.NUMBER,\r\n            title: \"Felhasználó azonosító\"\r\n        }, {\r\n            field: \"username\",\r\n            width: 200,\r\n            type: LiveGridColumnType.STRING,\r\n            title: \"Felhasználó név\"\r\n        }, {\r\n            field: \"fullname\",\r\n            width: 150,\r\n            type: LiveGridColumnType.STRING,\r\n            title: \"Teljes név\"\r\n        }, {\r\n            field: \"workstation\",\r\n            width: 150,\r\n            type: LiveGridColumnType.STRING,\r\n            title: \"Számítógép\"\r\n        }, {\r\n            field: \"expiration\",\r\n            width: 150,\r\n            type: LiveGridColumnType.DATE,\r\n            dateFormat: LIVEGRID_DATE_FORMAT_SHORT_DATETIME,\r\n            title: \"Lejárat\"\r\n        }, {\r\n            field: \"pingStatus\",\r\n            width: 150,\r\n            type: LiveGridColumnType.BOOLEAN,\r\n            title: 'Státusz',\r\n            drawFunction: ({ ctx, row, rect, isActive, format, textY }) => {\r\n                let status = row.data.pingStatus ? \"✔\" : \"X\";\r\n                ctx.fillStyle = row.data.pingStatus ? \"#008000\" : \"#DC2626\";\r\n                \r\n                if (isActive) {\r\n                    ctx.fillStyle = format.backgroundColor;\r\n                    ctx.fillRect(rect.x, rect.y, rect.w, rect.h);\r\n                    ctx.fillStyle = format.textColor;\r\n                }\r\n\r\n                ctx.fillText(status, rect.x - (rect.w / 2) + (rect.w) - 5, textY + 0.5);\r\n\r\n                return false;\r\n            }\r\n        }]\r\n    };\r\n\t@ViewChild('liveGrid') liveGrid: LiveGridComponent<LoggedUserRow> | undefined = undefined;\r\n\r\n\tpongFrom: string = '';\r\n\tpingAllLoading: boolean = false;\r\n\r\n\tgetLoggedUsers(ping: boolean = false): void {\r\n\t\tthis.pingAllLoading = true;\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.adminService.getLoggedUsers(ping).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({loggedUserRows}) => {\r\n            if (this.liveGrid === undefined) {\r\n                return;\r\n            }\r\n            this.liveGrid.truncate();\r\n            this.liveGrid.updateData({\r\n                updates: loggedUserRows\r\n            });\r\n\t\t}).add(() => {\r\n\t\t\tthis.pingAllLoading = false;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tflushSessionsToDatabase(): void {\r\n\t\tthis.adminService.flushSessionsToDatabase().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.getLoggedUsers();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.getLoggedUsers();\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Bejelentkezett felhasználók');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-fill-height cf-flex cf-flex-column\">\r\n\t<div class=\"cf-mb-4 cf-flex cf-flex-spacer-2\">\r\n\t\t<button cfButton [severity]=\"'success'\" [disabled]=\"pingAllLoading\" [label]=\"'Ping All'\" (click)=\"getLoggedUsers(true)\"></button>\r\n\t\t<button cfButton [severity]=\"'success'\" [label]=\"'Frissítés'\" (click)=\"getLoggedUsers()\"></button>\r\n\t\t<button cfButton [severity]=\"'info'\" [label]=\"'Kiírás adatbázisba'\" *hasPermission=\"'admin.loggedusersflush'\" (click)=\"flushSessionsToDatabase()\"></button>\r\n\t</div>\r\n\t<cf-livegrid #liveGrid [createOptions]=\"loggedUsersLivegridOptions\" (activeRowChanged)=\"cdr.detectChanges()\" class=\"cf-flex-grow cf-mb-4\"></cf-livegrid>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, ViewChild } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { LiveGridColumnType, LiveGridComponent, LiveGridOptions } from \"codefoxlivegrid\";\r\nimport { CfDestroyRef } from \"codefoxui\";\r\nimport { RouterUrlMetricRow } from \"../../../../interfaces/admin.interfaces\";\r\nimport { interval } from \"rxjs\";\r\nimport { ElectronService } from '../../../../services/electron.service';\r\n\r\n@Component({\r\n\tselector: 'app-routerstat',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tLiveGridComponent\r\n\t],\r\n\ttemplateUrl: './routerstat.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class RouterStatComponent extends CfDestroyRef implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\trouterStatLivegridOptions: LiveGridOptions<RouterUrlMetricRow> = {\r\n        name: 'Test',\r\n        endPoint: ['serverlib', 'controlpanel', 'routermetrics'],\r\n        idField: \"id\",\r\n        columns: [{\r\n            field: \"url\",\r\n            width: 300,\r\n            type: LiveGridColumnType.STRING,\r\n            title: \"Url\"\r\n        }, {\r\n            field: \"method\",\r\n            width: 200,\r\n            type: LiveGridColumnType.STRING,\r\n            title: \"Metódus\"\r\n        }, {\r\n            field: \"count\",\r\n            width: 150,\r\n            type: LiveGridColumnType.NUMBER,\r\n            title: \"Hívások száma\"\r\n        }, {\r\n            field: \"avgDuration\",\r\n            width: 150,\r\n            type: LiveGridColumnType.NUMBER,\r\n            title: \"Átlag válaszidő\"\r\n        }]\r\n    };\r\n\r\n\t@ViewChild('liveGrid') liveGrid: LiveGridComponent<RouterUrlMetricRow> | undefined = undefined;\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tinterval(2000).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tif (this.liveGrid !== undefined) {\r\n\t\t\t\tthis.liveGrid.updateGrid();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n        this.electronService.setTitle('Szerver statisztika');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}\r\n","<cf-livegrid #liveGrid [createOptions]=\"routerStatLivegridOptions\" [height]=\"'100%'\"></cf-livegrid>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, ViewChild } from \"@angular/core\";\r\nimport { LiveGridColumnType, LiveGridComponent, LiveGridOptions } from \"codefoxlivegrid\";\r\nimport { ButtonDirective, CfDestroyRef } from \"codefoxui\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { AdminService } from \"../../../../services/admin.service\";\r\nimport { ConnectedWebsocketClient } from \"../../../../interfaces/admin.interfaces\";\r\nimport { ElectronService } from '../../../../services/electron.service';\r\n\r\n@Component({\r\n\tselector: 'app-socketclients',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tButtonDirective,\r\n\t\tLiveGridComponent\r\n\t],\r\n\ttemplateUrl: './socketclients.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SocketclientsComponent extends CfDestroyRef implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tadminService: AdminService = inject(AdminService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\t@ViewChild('liveGrid') liveGrid: LiveGridComponent<ConnectedWebsocketClient> | undefined = undefined;\r\n\tliveGridOptions: LiveGridOptions<ConnectedWebsocketClient> = {\r\n        name: 'adminsocketclients',\r\n        idField: 'liveGridId',\r\n        useInternalIdCounter: true,\r\n        columns: [{\r\n            field: 'userId',\r\n            type: LiveGridColumnType.NUMBER,\r\n            title: 'userId'\r\n        }, {\r\n            field: 'remoteAddress',\r\n            type: LiveGridColumnType.STRING,\r\n            title: 'remoteAddress'\r\n        }, {\r\n            field: 'origin',\r\n            type: LiveGridColumnType.STRING,\r\n            title: 'origin'\r\n        }]\r\n    };\r\n\r\n\tgetClients(): void {\r\n\t\tthis.adminService.getSocketClients().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ socketClients }) => {\r\n            if (this.liveGrid === undefined) {\r\n                return;\r\n            }\r\n            this.liveGrid.truncate();\r\n            this.liveGrid.updateData({\r\n                updates: socketClients\r\n            });\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.getClients();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n        this.electronService.setTitle('Hálózati kapcsolatok');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}\r\n","<div class=\"cf-fill-height cf-flex cf-flex-column\">\r\n\t<div class=\"cf-mb-4\">\r\n\t\t<button cfButton [severity]=\"'success'\" [label]=\"'Frissítés'\" (click)=\"getClients()\"></button>\r\n\t</div>\r\n\t<cf-livegrid #liveGrid [createOptions]=\"liveGridOptions\" class=\"cf-flex-grow\"></cf-livegrid>\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { AfterViewInit, ChangeDetectorRef, Component, inject, ViewChild } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from \"@angular/forms\";\r\nimport { InterceptorsService, InputTextComponent, InterceptorType, CfDestroyRef, ButtonDirective } from \"codefoxui\";\r\nimport { ElectronService } from \"../../services/electron.service\";\r\nimport { ServerErrorResponse } from \"../../interfaces/general.interfaces\";\r\nimport { UserService } from \"../../services/user.service\";\r\n\r\n@Component({\r\n\tselector: 'app-changepassword',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tInputTextComponent,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './changepassword.component.html',\r\n\tstyleUrls: ['./changepassword.component.scss']\r\n})\r\nexport class ChangepasswordComponent extends CfDestroyRef implements AfterViewInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tuserService: UserService = inject(UserService);\r\n\tinterceptorsService: InterceptorsService = inject(InterceptorsService);\r\n\r\n\tformGroup: FormGroup = new FormGroup({\r\n\t\toldPassword: new FormControl('', [Validators.required]),\r\n\t\tnewPassword: new FormControl('', [Validators.required]),\r\n\t\tnewPasswordRepeat: new FormControl('', [Validators.required])\r\n\t});\r\n\r\n\t@ViewChild('oldPasswordInput') oldPasswordInput: InputTextComponent | undefined = undefined;\r\n\r\n\t#error: string | null = null;\r\n\r\n\tset error(error: string | null) {\r\n\t\tthis.#error = error;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tget error(): string | null {\r\n\t\treturn this.#error;\r\n\t}\r\n\r\n\tchangePassword(): void {\r\n\r\n\t\tthis.error = null;\r\n\r\n\t\tif (this.formGroup.invalid) {\r\n\t\t\tthis.error = 'Minden adat kitöltése kötelező!';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.formGroup.get('newPassword')!.value !== this.formGroup.get('newPasswordRepeat')!.value) {\r\n\t\t\tthis.error = 'A 2 beírt jelszó nem egyezik!';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.interceptorsService.skip = [InterceptorType.ERROR];\r\n\t\tthis.userService.changePassword(\r\n\t\t\tthis.formGroup.get('oldPassword')!.value,\r\n\t\t\tthis.formGroup.get('newPassword')!.value\r\n\t\t).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\r\n\t\t\tnext: () => {\r\n\t\t\t\tthis.close();\r\n\t\t\t},\r\n\t\t\terror: (httpErrorResponse: HttpErrorResponse) => {\r\n\t\t\t\tconst serverErrorResponse: ServerErrorResponse = httpErrorResponse.error;\r\n\t\t\t\tthis.error = serverErrorResponse.message;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tclose(): void {\r\n\t\tthis.electronService.send('CLOSE_SIMPLE_WINDOW', null);\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tif (this.oldPasswordInput !== undefined) {\r\n\t\t\tthis.oldPasswordInput.focus();\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.formGroup.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}\r\n","<div id=\"changepassword-content\">\r\n\t<form [formGroup]=\"formGroup\" (ngSubmit)=\"changePassword()\">\r\n\t\t<div class=\"cf-grid cf-cols-12\">\r\n\t\t\t<div class=\"cf-col-12 cf-text-center cf-mb-4\">\r\n\t\t\t\t<img id=\"logo\" src=\"assets/logo.png\" />\r\n\t\t\t</div>\r\n\t\t\t<cf-inputtext #oldPasswordInput [type]=\"'password'\" [label]=\"'Régi jelszó'\" formControlName=\"oldPassword\" class=\"cf-col-12\"></cf-inputtext>\r\n\t\t\t<cf-inputtext [type]=\"'password'\" [label]=\"'Új jelszó'\" formControlName=\"newPassword\" class=\"cf-col-12\"></cf-inputtext>\r\n\t\t\t<cf-inputtext [type]=\"'password'\" [label]=\"'Új jelszó ismét'\" formControlName=\"newPasswordRepeat\" class=\"cf-col-12\"></cf-inputtext>\r\n\t\t\t<div class=\"cf-col-12 cf-flex cf-flex-right\">\r\n\t\t\t\t<button [type]=\"'button'\" cfButton [label]=\"'Bezárás'\" [severity]=\"'danger'\" (click)=\"close()\"></button>\r\n\t\t\t\t<button cfButton [disabled]=\"formGroup.invalid\" [label]=\"'Jelszó módosítása'\" [severity]=\"'success'\" class=\"cf-ml-auto\"></button>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"error !== null\" class=\"cf-col-12 cf-text-bold cf-text-color-danger cf-mt-2\">{{error}}</div>\r\n\t\t</div>\r\n\t</form>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ButtonDirective, DateTimePickerComponent, CfDialog, CheckboxComponent, DropdownComponent, InputTextareaComponent, LabelValue, LOCAL_DATETIME_NOW } from 'codefoxui';\r\nimport { ErpService } from '../../../services';\r\nimport { Message, MessageEditor } from '../../../interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-messageeditor',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tInputTextareaComponent,\r\n\t\tDropdownComponent,\r\n\t\tDateTimePickerComponent,\r\n\t\tCheckboxComponent,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './messageeditor.component.html',\r\n\tstyleUrls: ['./messageeditor.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MessageeditorComponent extends CfDialog implements OnInit {\r\n\r\n\terpService: ErpService = inject(ErpService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\tmessageId: number | null = null;\r\n\tminDate: Date | null = new Date();\r\n\ttoday: Date = new Date();\r\n\tusers: LabelValue<number | null>[] = [];\r\n\tlocalDateTime: string = inject(LOCAL_DATETIME_NOW);\r\n\r\n\tmessageEditorFormGroup: FormGroup = new FormGroup({\r\n\t\tmessage: new FormControl('', [Validators.required]),\r\n\t\ttodo: new FormControl(false),\r\n\t\tassignedUserId: new FormControl(null),\r\n\t\tdueDate: new FormControl(this.localDateTime),\r\n\t\tdeadline: new FormControl(this.localDateTime)\r\n\t});\r\n\r\n\tsave(): void {\r\n\t\tconst messageEditor: MessageEditor = {\r\n\t\t\tkind: this.config.getData('kind'),\r\n\t\t\tkindId: this.config.getData('kindId'),\r\n\t\t\t...this.messageEditorFormGroup.value\r\n\t\t};\r\n\r\n\t\tif (this.messageId === null) {\r\n\t\t\tthis.erpService.createMessage(messageEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ message }) => {\r\n\t\t\t\tthis.ref.close(message);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.erpService.updateMessage(this.messageId, messageEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ message }) => {\r\n\t\t\t\tthis.ref.close(message);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\r\n\t\tthis.erpService.getList<number>(['admin', 'users', 'list']).pipe(\r\n\t\t\ttakeUntilDestroyed(this.destroyRef)\r\n\t\t).subscribe((users: LabelValue<number>[]) => {\r\n\t\t\tthis.users = [{ label: \"Nincs kiválasztva\", value: null }, ...users];\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tconst message: Message = this.config.getData('message');\r\n\t\tif (message !== null) {\r\n\t\t\tthis.messageId = message.chatMessageId;\r\n\t\t\tthis.messageEditorFormGroup.patchValue(message, { emitEvent: false });\r\n\r\n\t\t\tif (message.dueDate !== null) {\r\n\t\t\t\tthis.minDate = new Date(message.dueDate);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.messageEditorFormGroup.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tthis.messageEditorFormGroup.get('dueDate')!.valueChanges.pipe(takeUntilDestroyed()).subscribe((dueDate: string) => {\r\n\t\t\tthis.minDate = new Date(dueDate);\r\n\t\t\tif (dueDate > this.messageEditorFormGroup.get('deadline')!.value) {\r\n\t\t\t\tthis.messageEditorFormGroup.get('deadline')!.setValue(dueDate, { emitEvent: false });\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-dialog-title\" *ngIf=\"messageId === null\">Üzenet hozzáadása</div>\r\n<div class=\"cf-dialog-title\" *ngIf=\"messageId !== null\">Üzenet szerkesztése</div>\r\n\r\n<form [formGroup]=\"messageEditorFormGroup\" class=\"cf-mt-4\">\r\n\t<div class=\"cf-vgrid\">\r\n\t\t<cf-inputtextarea [label]=\"'Üzenet'\" [height]=\"'64px'\" formControlName=\"message\"></cf-inputtextarea>\r\n\t\t<ng-container *ngIf=\"messageEditorFormGroup.get(['todo'])!.value\">\r\n\t\t\t<cf-dropdown [label]=\"'Hozzárendelt személy'\" [searchable]=\"true\" [values]=\"users\" formControlName=\"assignedUserId\"></cf-dropdown>\r\n\t\t\t<cf-datetimepicker [label]=\"'Mikortól kell elvégezni'\" [local]=\"true\" [mode]=\"'datetime'\" [minDate]=\"today\" formControlName=\"dueDate\"></cf-datetimepicker>\r\n\t\t\t<cf-datetimepicker [label]=\"'Határidő'\" formControlName=\"deadline\" [local]=\"true\" [mode]=\"'datetime'\" [minDate]=\"minDate\"></cf-datetimepicker>\r\n\t\t</ng-container>\r\n\r\n\t\t<div class=\"cf-flex cf-ai-center\">\r\n\t\t\t<cf-checkbox [label]=\"'Feladat'\" formControlName=\"todo\"></cf-checkbox>\r\n\t\t\t<button cfButton [severity]=\"'success'\" type=\"button\" [disabled]=\"messageEditorFormGroup.invalid\" (click)=\"save()\" class=\"cf-ml-auto\">Mentés</button>\r\n\t\t\t<button cfButton [severity]=\"'danger'\" type=\"button\" (click)=\"close()\" class=\"cf-ml-2\">Bezárás</button>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, Input, SimpleChanges, ChangeDetectorRef, OnChanges, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CfDialogService, CfPermissionsService, CfDestroyRef, CheckboxComponent, ButtonDirective } from 'codefoxui';\r\nimport { debounceTime, filter, Subject, switchMap } from 'rxjs';\r\nimport { UserService } from '../../services/user.service';\r\nimport { ErpService } from '../../services';\r\nimport { Message } from '../../interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-chat',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tCheckboxComponent,\r\n\t\tButtonDirective,\r\n\t],\r\n\ttemplateUrl: './chat.component.html',\r\n\tstyleUrls: ['./chat.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tproviders: [DatePipe]\r\n})\r\nexport class ChatComponent extends CfDestroyRef implements OnChanges {\r\n\r\n\terpService: ErpService = inject(ErpService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tpermission: CfPermissionsService = inject(CfPermissionsService);\r\n\tuserService: UserService = inject(UserService);\r\n\tdatePipe: DatePipe = inject(DatePipe);\r\n\r\n\t@Input() kind: string | null = null;\r\n\t@Input() kindId: number | null = null;\r\n\r\n\tmessages: Message[] = [];\r\n\tshowOnlyTodo: boolean = false;\r\n\thideTodoDone: boolean = true;\r\n\r\n\tkindIdChanged: Subject<void> = new Subject();\r\n\r\n\tget filteredMessages(): Message[] {\r\n\t\tif (this.showOnlyTodo) {\r\n\t\t\treturn this.messages.filter((message: Message) => message.todo && !message.ready);\r\n\t\t}\r\n\t\tif (this.hideTodoDone) {\r\n\t\t\treturn this.messages.filter((message: Message) => !message.ready);\r\n\t\t}\r\n\t\treturn [...this.messages];\r\n\t}\r\n\r\n\thasPermission(userId: number): boolean {\r\n\t\treturn this.permission.hasPermission('godmode') || userId === this.userService.userId;\r\n\t}\r\n\r\n\thasPermissionForDelete(userId: number): boolean {\r\n\t\treturn this.permission.hasPermission('chat.delete') || userId === this.userService.userId;\r\n\t}\r\n\r\n\tgetMessageText(message: Message): string {\r\n\t\tif (message.dueDate === null && message.deadline === null) {\r\n\t\t\treturn \"Elvégzendő feladat!\";\r\n\t\t}\r\n\t\tif (message.dueDate === null && message.deadline !== null) {\r\n\t\t\treturn \"El kell végezni eddig: \" + this.datePipe.transform(message.deadline, \"y.MM.dd\");\r\n\t\t}\r\n\t\tif (message.dueDate !== null && message.deadline === null) {\r\n\t\t\treturn \"Ekkortól kell elvégezni: \" + this.datePipe.transform(message.dueDate, \"y.MM.dd\");\r\n\t\t}\r\n\t\tif (message.dueDate !== null && message.deadline !== null) {\r\n\t\t\treturn \"Ekkortól kell elvégezni: \" + this.datePipe.transform(message.dueDate, \"y.MM.dd\") + \", eddig: \" + this.datePipe.transform(message.deadline, \"y.MM.dd\");\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tshowEditorModal(message: Message | null = null): void {\r\n\t\tif (message !== null && !this.hasPermission(message.userId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.dialogService.openImport(() => import('./messageeditor/messageeditor.component').then(c => c.MessageeditorComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\tkind: this.kind,\r\n\t\t\t\tkindId: this.kindId,\r\n\t\t\t\tmessage\r\n\t\t\t}\r\n\t\t}).then(({ onClose }) => {\r\n\t\t\tonClose.pipe(takeUntilDestroyed(this.destroyRef), filter(response => response !== undefined)).subscribe((response: Message) => {\r\n\t\t\t\tlet index: number = this.messages.findIndex((message) => response.chatMessageId === message.chatMessageId);\r\n\t\t\t\tif (index === -1) {\r\n\t\t\t\t\tthis.messages.push(response);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.messages[index] = { ...response };\r\n\t\t\t\t}\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tshowDeleteModal(messageId: number): void {\r\n\t\tthis.dialogService.confirmAccept('delete').then(() => {\r\n\t\t\tthis.erpService.deleteMessage(messageId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.messages = this.messages.filter((message) => message.chatMessageId !== messageId);\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tdone(message: Message, index: number): void {\r\n\t\tthis.erpService.messageDone(message.chatMessageId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ message }) => {\r\n\t\t\tmessage.ready = true;\r\n\t\t\tthis.messages[index] = message;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tunDone(message: Message, index: number): void {\r\n\t\tthis.erpService.messageUnDone(message.chatMessageId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ message }) => {\r\n\t\t\tmessage.ready = false;\r\n\t\t\tthis.messages[index] = message;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tdetectChanges(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tngOnChanges(simpleChanges: SimpleChanges): void {\r\n\t\tif (simpleChanges['kindId'] !== undefined || simpleChanges['kind'] !== undefined) {\r\n\t\t\tthis.kindIdChanged.next();\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.kindIdChanged.pipe(\r\n\t\t\ttakeUntilDestroyed(),\r\n\t\t\tdebounceTime(200),\r\n\t\t\tfilter(() => this.kind !== null && this.kindId !== null),\r\n\t\t\tswitchMap(() => this.erpService.getMessages({ kind: this.kind!, kindId: this.kindId! }))\r\n\t\t).subscribe(({ messages }) => {\r\n\t\t\tthis.messages = messages;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-column cf-p-2\" id=\"content\">\r\n\t<div class=\"message-list cf-flex-grow cf-p-2\">\r\n\t\t<div class=\"messages cf-vgrid cf-mb-1\">\r\n\t\t\t<div class=\"message-card cf-flex cf-flex-column\" *ngFor=\"let message of filteredMessages; let i = index\">\r\n\t\t\t\t<div class=\"message-body cf-flex-grow cf-flex cf-flex-column\">\r\n\t\t\t\t\t<div class=\"cf-vgrid cf-grid-gap-2 cf-p-2\">\r\n\t\t\t\t\t\t<div class=\"cf-flex cf-flex-spacer-2 cf-ai-center\">\r\n\t\t\t\t\t\t\t<h4 class=\"cf-flex-grow\">{{message.fullname}}</h4>\r\n\t\t\t\t\t\t\t<span class=\"remixicon edit-2-line cf-cursor-pointer message-editor-button\" *ngIf=\"hasPermission(message.userId)\" (click)=\"showEditorModal(message)\"></span>\r\n\t\t\t\t\t\t\t<span class=\"remixicon delete-bin-line cf-cursor-pointer message-editor-button\" *ngIf=\"hasPermissionForDelete(message.userId)\" (click)=\"showDeleteModal(message.chatMessageId)\"></span>\r\n\t\t\t\t\t\t\t<span class=\"message-date cf-user-select-none\">{{message.date|date:'Y.MM.dd HH:mm'}}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t{{message.message}}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"message-footer cf-flex cf-p-2\" *ngIf=\"message.todo && !message.ready\">\r\n\t\t\t\t\t<div class=\"cf-flex-grow\">\r\n\t\t\t\t\t\t<div class=\"cf-flex-column\">\r\n\t\t\t\t\t\t\t{{getMessageText(message)}}\r\n\t\t\t\t\t\t\t<div *ngIf=\"message.assignedUserId !== null\">Hozzárendelt személy: {{message.assignedFullname}}</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<span *ngIf=\"message.assignedUserId !== null && hasPermission(message.assignedUserId)\" class=\"cf-text-bold cf-cursor-pointer cf-p-1 done-text\" (click)=\"done(message, i)\">Elvégeztem</span>\r\n\t\t\t\t\t<span *ngIf=\"message.assignedUserId === null\" class=\"cf-text-bold cf-cursor-pointer cf-p-1 done-text\" (click)=\"done(message, i)\">Elvégeztem</span>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"message-footer success cf-flex cf-p-2 cf-ai-center\" *ngIf=\"message.todo && message.ready\">\r\n\t\t\t\t\t<div class=\"cf-flex-grow\">Elvégezte: {{message.readyFullname}}, {{message.readyDate |date:'Y.MM.dd HH:mm'}}</div>\r\n\t\t\t\t\t<span class=\"cf-text-bold cf-cursor-pointer cf-p-1 done-text\" *ngIf=\"message.assignedUserId !== null && hasPermission(message.assignedUserId)\" (click)=\"unDone(message, i)\">Mégsem végeztem el</span>\r\n\t\t\t\t\t<span class=\"cf-text-bold cf-cursor-pointer cf-p-1 done-text\" *ngIf=\"message.assignedUserId === null\" (click)=\"unDone(message, i)\">Mégsem végeztem el</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"cf-flex cf-ai-center\">\r\n\t\t<div class=\"cf-flex cf-flex-column\">\r\n\t\t\t<cf-checkbox [label]=\"'Elvégzendő feladatok'\" [(ngModel)]=\"showOnlyTodo\" (ngModelChange)=\"detectChanges()\"></cf-checkbox>\r\n\t\t\t<cf-checkbox [label]=\"'Elvégzett feladatok elrejtése'\" [(ngModel)]=\"hideTodoDone\" (ngModelChange)=\"detectChanges()\"></cf-checkbox>\r\n\t\t</div>\r\n\t\t<button class=\"cf-ml-auto\" cfButton [severity]=\"'success'\" [icon]=\"'file-3-line'\" [label]=\"'Új üzenet'\" (click)=\"showEditorModal(null)\"></button>\r\n\t</div>\r\n</div>\r\n","import { NgFor, NgIf } from '@angular/common';\r\nimport { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CfDestroyRef, CfDialogRef } from 'codefoxui';\r\nimport { ErpService } from '../../services/erp.service';\r\nimport { ChangeLogItem, ChangeLogModule, ChangeLogModuleItem } from '../../interfaces/general.interfaces';\r\nimport { ElectronService } from '../../services';\r\n\r\n@Component({\r\n\tselector: 'app-clienthistorymodal',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tNgFor,\r\n\t\tNgIf\r\n\t],\r\n\ttemplateUrl: './clienthistorymodal.component.html',\r\n\tstyleUrls: ['./clienthistorymodal.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ClienthistorymodalComponent extends CfDestroyRef implements OnInit {\r\n\r\n\terpService: ErpService = inject(ErpService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tdialogRef: CfDialogRef = inject(CfDialogRef);\r\n\r\n\tchangeLogModule: ChangeLogModule[] = [];\r\n\tchangeLogItems: ChangeLogItem[] = [];\r\n\r\n\tget nonModuleItems(): ChangeLogModule[] {\r\n\t\treturn this.changeLogModule.filter(({ moduleName }) => moduleName === null);\r\n\t}\r\n\r\n\tget moduleItems(): ChangeLogModule[] {\r\n\t\treturn this.changeLogModule.filter(({ moduleName }) => moduleName !== null);\r\n\t}\r\n\r\n\tgetItemsByVersionIndex(versionIndex: number, module: boolean = false): ChangeLogModule[] {\r\n\t\treturn module ? this.moduleItems.filter(({ changeIndex }) => changeIndex === versionIndex) : this.nonModuleItems.filter(({ changeIndex }) => changeIndex === versionIndex);\r\n\t}\r\n\r\n\tprocessChangelogItems(): void {\r\n\t\tthis.changeLogItems.forEach(({ changes }, index: number) => {\r\n\t\t\tchanges.forEach((change: string) => {\r\n\t\t\t\tthis.pushItems(change.includes(\":\"), change, index);\r\n\t\t\t});\r\n\t\t});\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tpushItems(module: boolean = false, change: string, versionIndex: number) {\r\n\t\tlet currentModuleName: string | null = null;\r\n\t\tlet currentChange: string | null = change;\r\n\r\n\t\tlet changelogItem: ChangeLogModuleItem = {\r\n\t\t\tcaption: '',\r\n\t\t\tinfo: ''\r\n\t\t}\r\n\r\n\t\tif (module) {\r\n\t\t\tcurrentModuleName = change.split(\":\")[0];\r\n\t\t\tcurrentChange = change.split(\":\")[1];\r\n\t\t}\r\n\r\n\t\tlet splitedString: string[] = currentChange.split('***');\r\n\t\tchangelogItem.caption = splitedString[0];\r\n\t\tif (splitedString.length > 1) {\r\n\t\t\tchangelogItem.info = splitedString[1];\r\n\t\t}\r\n\r\n\t\tlet item: ChangeLogModule | undefined = module ? this.changeLogModule.find(({ moduleName, changeIndex }) => moduleName === currentModuleName && changeIndex === versionIndex) : this.changeLogModule.find(({ changeIndex }) => versionIndex === changeIndex);\r\n\t\tif (item === undefined) {\r\n\t\t\tthis.changeLogModule.push({ moduleName: currentModuleName, changeIndex: versionIndex, changes: currentChange !== null && currentChange.length > 0 ? [changelogItem] : [] });\r\n\t\t} else {\r\n\t\t\tif (currentChange !== null && currentChange.length > 0) {\r\n\t\t\t\t\r\n\t\t\t\titem.changes.push(changelogItem)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.erpService.getChangelog().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ changeLogItems }) => {\r\n\t\t\tthis.changeLogItems = changeLogItems;\r\n\t\t\tthis.processChangelogItems();\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Változási napló', this.dialogRef);\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-dialog-title\">Változási napló</div>\r\n<div class=\"cf-dialog-content\">\r\n    <div class=\"cf-vgrid cf-grid-gap-4\">\r\n        <div class=\"changelog-item\" *ngFor=\"let item of changeLogItems; let versionIndex = index\">\r\n            <div class=\"changelog-header cf-flex cf-flex-spacer-2\">\r\n                <div class=\"date\">{{item.date}}</div>\r\n                <div class=\"version cf-ml-auto\">{{item.version}}</div>\r\n            </div>\r\n\r\n            <ng-container *ngFor=\"let change of getItemsByVersionIndex(versionIndex, false);\">\r\n                <div class=\"module cf-mt-1\">Globális</div>\r\n                <ul class=\"non-module\">\r\n                    <li *ngFor=\"let item of change.changes\">{{item.caption}}\r\n                        <div *ngIf=\"item.info !== ''\" class=\"info\">{{item.info}}</div>\r\n                    </li>\r\n                </ul>\r\n            </ng-container>\r\n\r\n            <ng-container *ngFor=\"let change of getItemsByVersionIndex(versionIndex, true);\">\r\n                <div class=\"module cf-mt-1\">{{change.moduleName}}</div>\r\n                <ul>\r\n                    <li *ngFor=\"let item of change.changes\">{{item.caption}}\r\n                        <div *ngIf=\"item.info !== ''\" class=\"info\">{{item.info}}</div>\r\n                    </li>\r\n                </ul>\r\n            </ng-container>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, ViewChild } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { LiveGridColumnType, LiveGridComponent, LiveGridOptions } from \"codefoxlivegrid\";\r\nimport { ButtonDirective, CfDialog, generateUuid } from \"codefoxui\";\r\nimport { filter } from \"rxjs\";\r\nimport { ElectronService } from \"../../services\";\r\nimport { FileDownload, FileDownloadReport } from \"../../interfaces\";\r\n\r\n@Component({\r\n\tselector: 'app-filedownloadmodal',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tButtonDirective,\r\n\t\tLiveGridComponent\r\n\t],\r\n\ttemplateUrl: 'filedownloadmodal.component.html',\r\n\tstyleUrls: ['./filedownloadmodal.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FiledownloadmodalComponent extends CfDialog implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tguid: string = generateUuid();\r\n\r\n\tfilesToDownload: FileDownload[] = [];\r\n\r\n\tfileDownloadReports: FileDownloadReport[] = [];\r\n\tcompleted: boolean = false;\r\n\r\n\tfileDownloadReportLiveGridOptions: LiveGridOptions<FileDownloadReport> = {\r\n\t\tname: 'filedownloadfilegrid',\r\n\t\tidField: 'liveGridId',\r\n\t\tuseInternalIdCounter: true,\r\n\t\tfilterBarVisible: false,\r\n\t\tsearchBarVisible: false,\r\n\t\tstatusBarVisible: false,\r\n\t\tcolumns: [{\r\n\t\t\tfield: 'basePath',\r\n\t\t\ttitle: 'Mappa',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\tfield: 'name',\r\n\t\t\ttitle: 'Név',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\tfield: 'error',\r\n\t\t\ttitle: 'Hiba',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\tfield: 'overwrite',\r\n\t\t\ttitle: 'Felülírva',\r\n\t\t\ttype: LiveGridColumnType.BOOLEAN\r\n\t\t}]\r\n\t};\r\n\r\n\t@ViewChild('fileDownloadReportLiveGrid') fileDownloadReportLiveGrid: LiveGridComponent<FileDownloadReport> | undefined = undefined;\r\n\r\n\tget hasExtra(): boolean {\r\n\t\treturn this.fileDownloadReports.some((fileDownloadReport: FileDownloadReport) => fileDownloadReport.error !== null || fileDownloadReport.overwrite);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\r\n\t\tthis.electronService.send('DOWNLOAD_FILES', {\r\n\t\t\tfilesToDownload: this.filesToDownload,\r\n\t\t\tguid: this.guid\r\n\t\t});\r\n\t}\r\n\r\n\treportProgress(fileDownloadReport: FileDownloadReport): void {\r\n\t\tthis.fileDownloadReports.push(fileDownloadReport);\r\n\t\tif (this.fileDownloadReports.length === this.filesToDownload.length) {\r\n\t\t\tthis.completed = true;\r\n\t\t\tthis.cdr.detectChanges();\r\n            if (this.fileDownloadReportLiveGrid === undefined) {\r\n                return;\r\n            }\r\n            this.fileDownloadReportLiveGrid.truncate();\r\n            this.fileDownloadReportLiveGrid.updateData({\r\n                updates: this.fileDownloadReports\r\n            })\r\n\t\t}\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.filesToDownload = this.config.getData('filesToDownload', []);\r\n\r\n\t\tthis.electronService.on(\"FILE_DOWNLOAD_REPORT\").pipe(\r\n\t\t\ttakeUntilDestroyed(),\r\n\t\t\tfilter((fileDownloadReport: FileDownloadReport) => {\r\n\t\t\t\treturn fileDownloadReport.guid === this.guid;\r\n\t\t\t})\r\n\t\t).subscribe((fileDownloadReport: FileDownloadReport) => {\r\n\t\t\tthis.reportProgress(fileDownloadReport);\r\n\t\t});\r\n\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}\r\n","<div class=\"cf-vgrid\">\r\n\t<div class=\"cf-dialog-title\">Letöltés</div>\r\n\r\n\t<div *ngIf=\"!completed\" class=\"cf-text-center\">Letöltés folyamatban: {{fileDownloadReports.length}} / {{filesToDownload.length}}</div>\r\n\t<div *ngIf=\"completed\">\r\n\t\t<cf-livegrid #fileDownloadReportLiveGrid [createOptions]=\"fileDownloadReportLiveGridOptions\"></cf-livegrid>\r\n\t</div>\r\n\r\n\t<div class=\"cf-flex cf-flex-right\">\r\n\t\t<button cfButton [severity]=\"'danger'\" [label]=\"'Bezárás'\" (click)=\"close()\"></button>\r\n\t</div>\r\n</div>","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\r\nimport { CfDialog, CfSafeHtmlPipe } from \"codefoxui\";\r\n\r\n@Component({\r\n\tselector: 'app-fileuploaderrorlogmodal',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCfSafeHtmlPipe\r\n\t],\r\n\ttemplateUrl: './fileuploaderrorlogmodal.component.html',\r\n\tstyleUrls: ['./fileuploaderrorlogmodal.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class Fileuploaderrorlogmodalcomponent extends CfDialog {\r\n\terrorLog: string = this.config.getData('errorLog', \"\");\r\n}\r\n","<div class=\"cf-dialog-title\">Ellenőrzési hibák</div>\r\n<div class=\"cf-text-bold\">Sikertelen feldolgozás! Javísd ki ezeket a hibákat, majd próbáld meg újra feltölteni a fájlt!</div>\r\n\r\n<div id=\"error-container\" class=\"cf-overflow-y-auto cf-mt-4\">\r\n\t<div class=\"cf-text-color-danger cf-text-bold\" [innerHTML]=\"errorLog | cfsafehtml\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, ElementRef, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ButtonDirective, InterceptorsService, CfDialog, CfDialogService, CfMessageService, InterceptorType } from 'codefoxui';\r\nimport { ErpService } from '../../services';\r\n\r\n@Component({\r\n\tselector: 'app-fileuploadmodal',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './fileuploadmodal.component.html',\r\n\tstyleUrls: ['./fileuploadmodal.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FileuploadmodalComponent extends CfDialog implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\terpService: ErpService = inject(ErpService);\r\n\tmessageService: CfMessageService = inject(CfMessageService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tinterceptorsService: InterceptorsService = inject(InterceptorsService);\r\n\r\n\ttitle: string = 'Fájl feltöltése';\r\n\tmode: 'SINGLE' | 'MULTIPLE' = 'SINGLE';\r\n\tfiles: File[] = [];\r\n\tacceptedTypes: string[] = [];\r\n\tendPoint: string[] | null = null;\r\n\tdisplayErrorLogModal: boolean = false;\r\n\tdragoverActive: boolean = false;\r\n\tuploading: boolean = false;\r\n\r\n\t@ViewChild('fileUploadInput') fileUploadInput: ElementRef<HTMLInputElement> | undefined = undefined;\r\n\r\n\tget accept(): string {\r\n\t\treturn this.acceptedTypes.join(', ');\r\n\t}\r\n\r\n\tfileUploadInputChanged(): void {\r\n\t\tif (this.fileUploadInput === undefined || this.fileUploadInput.nativeElement.files === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.processFiles(this.fileUploadInput.nativeElement.files);\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\topenFileUpload(): void {\r\n\t\tif (this.fileUploadInput === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.fileUploadInput.nativeElement.click();\r\n\t}\r\n\r\n\tprocessFiles(files: FileList): void {\r\n\t\tif (this.mode === 'SINGLE') {\r\n\t\t\tthis.files = [];\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\tif (this.acceptedTypes.length > 0) {\r\n\t\t\t\tif (this.acceptedTypes.includes(files.item(i)!.type)) {\r\n\t\t\t\t\tthis.files.push(files.item(i)!);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.files.push(files.item(i)!);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tfileDropped(event: DragEvent): void {\r\n\t\tevent.preventDefault();\r\n\t\tif (event.dataTransfer === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.processFiles(event.dataTransfer.files);\r\n\t\tthis.dragoverActive = false;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tdragleave(): void {\r\n\t\tthis.dragoverActive = false;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tdragover(event: Event): void {\r\n\t\tevent.preventDefault();\r\n\t\tthis.dragoverActive = true;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.files = [];\r\n\t\tif (this.fileUploadInput !== undefined) {\r\n\t\t\tthis.fileUploadInput.nativeElement.value = '';\r\n\t\t}\r\n\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tremoveFile(index: number): void {\r\n\t\tthis.files.splice(index, 1);\r\n\t\tthis.cdr.detectChanges();\r\n\r\n\t\tif (this.files.length === 0) {\r\n\t\t\tthis.clear();\r\n\t\t}\r\n\t}\r\n\r\n\tsave(): void {\r\n\t\tif (this.files.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.uploading = true;\r\n\t\tthis.cdr.detectChanges();\r\n\t\t\r\n\t\tlet loadedFiles: number = 0;\r\n\t\tlet hadError: boolean = false;\r\n\t\tfor (let i = 0; i < this.files.length; i++) {\r\n\t\t\tconst file = this.files[i];\r\n\t\t\tconst reader: FileReader = new FileReader();\r\n\t\t\treader.readAsText(file);\r\n\r\n\t\t\treader.addEventListener('loadend', (event: ProgressEvent<FileReader>) => {\r\n\t\t\t\tif (event.target !== null && event.target.error !== null) {\r\n\t\t\t\t\tlet errorName: string = event.target.error.name;\r\n\t\t\t\t\tif (errorName === \"NotReadableError\" || errorName === \"NotFoundError\") {\r\n\t\t\t\t\t\terrorName = \"Fálj olvasási hiba, a fájl megváltozott vagy nem található.\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.messageService.showDangerMessage(\"Feltöltési hiba!\", \"( \" + file.name + \" ) Próbáld meg újra kiválasztani a fájlt! (\" + errorName + \")\");\r\n\t\t\t\t\thadError = true;\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tloadedFiles++;\r\n\t\t\t\tif (loadedFiles === this.files.length) {\r\n\t\t\t\t\tif (hadError) {\r\n\t\t\t\t\t\tthis.uploading = false;\r\n\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (this.endPoint !== null) {\r\n\t\t\t\t\t\t\tif (this.displayErrorLogModal) {\r\n\t\t\t\t\t\t\t\tthis.interceptorsService.skip = [InterceptorType.ERROR];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.erpService.uploadFiles(this.endPoint, this.files).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\r\n\t\t\t\t\t\t\t\tnext:(response: any) => {\r\n\t\t\t\t\t\t\t\t\tthis.close(response);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\terror: (httpErrorResponse: HttpErrorResponse) => {\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tif (this.displayErrorLogModal) {\r\n\t\t\t\t\t\t\t\t\t\tif (httpErrorResponse.error.message === undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis.messageService.showDangerMessage(\"Hiba!\", httpErrorResponse.error);\r\n\t\t\t\t\t\t\t\t\t\t\treturn;\t\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tthis.dialogService.openImport(() => import('../fileuploaderrorlogmodal/fileuploaderrorlogmodal.component').then(c => c.Fileuploaderrorlogmodalcomponent), {\r\n\t\t\t\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\t\t\t\terrorLog: httpErrorResponse.error.message\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}).add(() => {\r\n\t\t\t\t\t\t\t\tif (this.displayErrorLogModal) {\r\n\t\t\t\t\t\t\t\t\tthis.interceptorsService.skip = [];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tthis.uploading = false;\r\n\t\t\t\t\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.close(this.files);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() { \r\n\t\tsuper();\r\n\r\n\t\tthis.title = this.config.getData('title', 'Fájl feltöltése');\r\n\t\tthis.mode = this.config.getData('mode', 'SINGLE');\r\n\t\tthis.files = this.config.getData('files', []);\r\n\t\tif (this.files === null) {\r\n\t\t\tthis.files = [];\r\n\t\t}\r\n\t\tthis.acceptedTypes = this.config.getData('acceptedTypes', []);\r\n\t\tthis.endPoint = this.config.getData('endpoint', null);\r\n\t\tthis.displayErrorLogModal = this.config.getData('displayErrorLogModal', false);\r\n\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-dialog-title\">{{title}}</div>\r\n\r\n<div id=\"upload-file\" class=\"cf-m-2\" [ngClass]=\"{'dragoveractive': dragoverActive}\" (click)=\"openFileUpload()\" (drop)=\"fileDropped($event)\" (dragover)=\"dragover($event)\" (dragleave)=\"dragleave()\">\r\n\t<span class=\"remixicon file-upload-line\"></span>\r\n\t<span *ngIf=\"files.length === 0\" id=\"upload-file-title\">Válassz ki egy fájlt vagy húzd be ide</span>\r\n\t<span *ngIf=\"files.length !== 0 && mode === 'SINGLE'\" id=\"upload-file-title\">Fájl kiválasztva: {{files[0].name}}</span>\r\n\t<span *ngIf=\"files.length !== 0 && mode === 'MULTIPLE'\" id=\"upload-file-title\">Válassz ki egy fájlt vagy húzd be ide</span>\r\n</div>\r\n\r\n<div class=\"cf-p-4\" *ngIf=\"mode === 'MULTIPLE' && files.length > 0\">\r\n\t<h4 class=\"cf-pb-1 cf-mb-1 file-container-title\">Fájlok kiválasztva ({{files.length}})</h4>\r\n\t<div class=\"cf-flex cf-flex-column cf-flex-spacer-1 file-container-height\">\r\n\t\t<div class=\"cf-pl-2 cf-flex cf-flex-spacer-2 cf-ai-center\" *ngFor=\"let file of files; let i = index\">\r\n\t\t\t<span>{{file.name}}</span>\r\n\t\t\t<button cfButton [severity]=\"'danger'\" [disabled]=\"uploading\" class=\"cf-ml-auto mini-button\" [icon]=\"'close-line'\" (click)=\"removeFile(i)\"></button>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<input #fileUploadInput type=\"file\" [multiple]=\"mode === 'MULTIPLE'\" [accept]=\"accept\" (change)=\"fileUploadInputChanged()\" />\r\n<div class=\"cf-mt-4 cf-flex cf-flex-spacer\">\r\n\t<button cfButton *ngIf=\"files.length > 0\" [severity]=\"'danger'\" [label]=\"mode === 'MULTIPLE' ? 'Fájlok törlése':'Fájl törlése'\" [disabled]=\"uploading\" (click)=\"clear()\"></button>\r\n\t<button cfButton class=\"cf-ml-auto\" [label]=\"endPoint !== null ? 'Feltöltés' : 'Kiválasztás'\" [loading]=\"uploading\" [icon]=\"uploading ? 'loader-5-fill' : 'upload-fill'\" [disabled]=\"files.length === 0 || uploading\" [severity]=\"'success'\" (click)=\"save()\"></button>\r\n\t<button cfButton [label]=\"'Mégsem'\" [disabled]=\"uploading\" [severity]=\"'danger'\" (click)=\"close()\"></button>\r\n</div>\r\n","import { InjectionToken, Type } from \"@angular/core\";\r\n\r\nexport const STATUS_BLOCK_COMPONENT: InjectionToken<(() => Promise<Type<any>>) | null> = new InjectionToken('Status block component', {\r\n    factory: () => {\r\n        return null;\r\n    }\r\n});\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const HOME_ALLOWED_MODULE_TAGS: InjectionToken<string[]> = new InjectionToken('Home allowed module tags', {\r\n    factory: () => {\r\n        return [];\r\n    }\r\n});\r\n","import { AfterViewInit, ApplicationRef, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, createComponent, DestroyRef, ElementRef, EmbeddedViewRef, HostListener, inject, Injector, OnInit, Type, ViewChild } from '@angular/core';\r\nimport { NgZone } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CfPermissionsService, DurationPipe } from 'codefoxui';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { interval, Subscription } from 'rxjs';\r\nimport { ElectronService } from '../../services/electron.service';\r\nimport { UserService } from '../../services/user.service';\r\nimport { ErpService } from '../../services/erp.service';\r\nimport { CfTabShortConfiguration, ElectronHeaderConfiguration } from '../../interfaces/electron.interfaces';\r\nimport { STATUS_BLOCK_COMPONENT } from '../../tokens';\r\n\r\n@Component({\r\n\tselector: 'app-header',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tDurationPipe\r\n\t],\r\n\ttemplateUrl: './header.component.html',\r\n\tstyleUrls: ['./header.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HeaderComponent implements OnInit, AfterViewInit {\r\n\t\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tzone: NgZone = inject(NgZone);\r\n\tuserService: UserService = inject(UserService);\r\n\terpService: ErpService = inject(ErpService);\r\n\tpermissionsService: CfPermissionsService = inject(CfPermissionsService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tdestroyRef: DestroyRef = inject(DestroyRef);\r\n\tinjector: Injector = inject(Injector);\r\n    statusBlockComponent: (() => Promise<Type<any>>) | null = inject(STATUS_BLOCK_COMPONENT);\r\n\r\n\tfullname: string | null = null;\r\n\tnotificationCount: number = 0;\r\n\theaderConfiguration: ElectronHeaderConfiguration | null = null;\r\n\r\n\tdebugMode: boolean = this.electronService.debugMode;\r\n\r\n\tshutdownMessage: string = this.electronService.shutdownMessage;\r\n\tshutdownTime: string | null = this.electronService.shutdownTime;\r\n\r\n\tshutdownSubscription: Subscription | null = null;\r\n\r\n\tserverLoading: boolean = false;\r\n\r\n\t@ViewChild('tabgroups') tabgroups: ElementRef<HTMLDivElement> | undefined = undefined;\r\n    @ViewChild('statusblock') statusblock: ElementRef<HTMLDivElement> | undefined = undefined;\r\n\r\n\tget timeTillShutdown(): number {\r\n\t\tif (this.shutdownTime === null) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tlet timeTillShutdown: number = Math.floor((new Date(this.shutdownTime).getTime() - new Date().getTime()) / 1000);\r\n\t\tif (timeTillShutdown < 0) {\r\n\t\t\ttimeTillShutdown = 0;\r\n\t\t}\r\n\t\treturn timeTillShutdown;\r\n\t}\r\n\r\n    hasClientErrors(tab: CfTabShortConfiguration): boolean {\r\n        return tab.clientErrors !== undefined && tab.clientErrors instanceof Array && tab.clientErrors.length > 0;\r\n    }\r\n\r\n\ttabGroupScroll(wheelEvent: WheelEvent): void {\r\n\t\tif (this.tabgroups === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.tabgroups.nativeElement.scrollLeft += wheelEvent.deltaY;\r\n\t}\r\n\r\n\tchangeActiveTab(guid: string, triggerChange: boolean = false): void {\r\n\t\tif (this.headerConfiguration !== null) {\r\n\t\t\tthis.headerConfiguration.activeGuid = guid;\r\n\t\t}\r\n\t\tif (triggerChange) {\r\n\t\t\tthis.electronService.send('ACTIVATE', guid);\r\n\t\t}\r\n\t}\r\n\r\n\tshowChangePasswordWindow(): void {\r\n\t\tthis.electronService.send('SHOW_CHANGE_PASSWORD_WINDOW', null);\r\n\t}\r\n\r\n\tsetZoomFactor(up: boolean, fix: number | null = null): void {\r\n\t\tif (this.headerConfiguration === null || this.headerConfiguration.activeGuid === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.electronService.send('ZOOM', {\r\n\t\t\tguid: this.headerConfiguration.activeGuid,\r\n\t\t\tup,\r\n\t\t\tfix\r\n\t\t});\r\n\t}\r\n\r\n\tsetDarkMode(darkMode: boolean): void {\r\n\t\tthis.electronService.send('SET_DARK_MODE', darkMode);\r\n\t}\r\n\r\n    closeAll(): void {\r\n\t\tthis.electronService.send('CLOSE_ALL', null);\r\n    }\r\n\r\n    refresh(): void {\r\n\t\tif (this.headerConfiguration === null || this.headerConfiguration.activeGuid === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.electronService.send('REFRESH', this.headerConfiguration.activeGuid);\r\n    }\r\n\r\n    openDevTools(): void {\r\n\t\tif (this.headerConfiguration === null || this.headerConfiguration.activeGuid === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.electronService.send('OPEN_DEV_TOOLS', this.headerConfiguration.activeGuid);\r\n    }\r\n    \r\n    takeScreenshot(): void {\r\n\t\tif (this.headerConfiguration === null || this.headerConfiguration.activeGuid === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.electronService.send('TAKE_SCREENSHOT', this.headerConfiguration.activeGuid);\r\n    }\r\n\r\n\tshowInfoWindow(): void {\r\n\t\tthis.electronService.send('SHOW_INFO_WINDOW', null);\r\n\t}\r\n\r\n\topenInNewWindow(event: MouseEvent, guid: string): void {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis.electronService.send('OPEN_IN_NEW_WINDOW', guid);\r\n\t}\r\n\r\n\tclientErrorsEvent(event: MouseEvent, guid: string): void {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tif (event.ctrlKey) {\r\n\t\t\tthis.electronService.send('CLEAR_CLIENT_ERRORS', null);\r\n\t\t} else {\r\n\t\t\tthis.electronService.send('OPEN_DEV_TOOLS', guid);\r\n\t\t}\r\n\t}\r\n\r\n\tonDragStart(tab: CfTabShortConfiguration, event: DragEvent): void {\r\n        if (tab.home) {\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n            return;\r\n        }\r\n\t\tthis.electronService.send('DRAG_START', tab.guid);\r\n\t}\r\n\r\n\t@HostListener('drop', ['$event'])\r\n\tonDrop(event: MouseEvent): boolean {\r\n\t\tthis.electronService.send('DROP', null);\r\n\t\tevent.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n\r\n\t@HostListener('dragover', ['$event'])\r\n\tonDragOver(event: MouseEvent): boolean {\r\n\t\tevent.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n\r\n\tcloseTab(event: MouseEvent, guid: string): void {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis.electronService.send('CLOSE', {\r\n            guid,\r\n            force: event.ctrlKey && event.altKey\r\n        });\r\n\t}\r\n\r\n\tisTabGroupActive(tag: string): boolean {\r\n\t\tlet result: boolean = false;\r\n\t\tif (this.headerConfiguration !== null) {\r\n\t\t\tthis.headerConfiguration.tabGroups.forEach((tabGroup) => {\r\n\t\t\t\tif (tabGroup.tag === tag && tabGroup.tabs.some(tab => this.headerConfiguration !== null && tab.guid === this.headerConfiguration.activeGuid)) {\r\n\t\t\t\t\tresult = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tstartShutdownTimer(): void {\r\n\t\tif (this.shutdownSubscription !== null) {\r\n\t\t\tthis.shutdownSubscription.unsubscribe();\r\n\t\t\tthis.shutdownSubscription = null;\r\n\t\t}\r\n\t\tthis.shutdownSubscription = interval(1000).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t})\r\n\t}\r\n\r\n    attachStatusBlocks(): void {\r\n        if (this.statusBlockComponent === null) {\r\n            return;\r\n        }\r\n        this.statusBlockComponent().then((component: Type<any>) => {\r\n            if (this.statusblock === undefined) {\r\n                return;\r\n            }\r\n            const appRef: ApplicationRef = this.injector.get(ApplicationRef);\r\n            const componentRef: ComponentRef<any> = createComponent(component, {\r\n                environmentInjector: appRef.injector\r\n            });\r\n            appRef.attachView(componentRef.hostView);\r\n            this.statusblock.nativeElement.appendChild((componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement)\r\n        });\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this.attachStatusBlocks();\r\n    }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.electronService.send('GET_HEADER_CONFIGURATION', null);\r\n\t\tif (this.shutdownTime !== null) {\r\n\t\t\tthis.startShutdownTimer();\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tthis.fullname = this.userService.fullname;\r\n\t\tthis.electronService.on('SET_HEADER_CONFIGURATION').pipe(takeUntilDestroyed()).subscribe(({activeGuid, tabGroups}) => {\r\n\t\t\tthis.zone.run(() => {\r\n\t\t\t\tthis.headerConfiguration = {activeGuid, tabGroups};\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t});\r\n        this.electronService.on(\"SAVE_TABS\").pipe(takeUntilDestroyed()).subscribe((value) => {\r\n            this.erpService.setUserSettings('client', this.electronService.clientSlug !== null ? 'tabs:' + this.electronService.clientSlug : 'tabs', value).subscribe(() => {});\r\n        });\r\n        this.electronService.on(\"SAVE_ZOOM_FACTORS\").pipe(takeUntilDestroyed()).subscribe((value) => {\r\n            this.erpService.setUserSettings('zoomfactors', 'data', value).subscribe(() => {});\r\n        });\r\n\t\tthis.electronService.on('SHUTDOWN').pipe(takeUntilDestroyed()).subscribe(({ message, time }) => {\r\n\t\t\tthis.shutdownMessage = message;\r\n\t\t\tthis.shutdownTime = time;\r\n\t\t\tthis.startShutdownTimer();\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tthis.electronService.on('SHUTDOWN_CANCEL').pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.shutdownMessage = '';\r\n\t\t\tthis.shutdownTime = null;\r\n\t\t\tif (this.shutdownSubscription !== null) {\r\n\t\t\t\tthis.shutdownSubscription.unsubscribe();\r\n\t\t\t\tthis.shutdownSubscription = null;\r\n\t\t\t}\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tthis.electronService.on('DARK_MODE_SET').pipe(takeUntilDestroyed()).subscribe(({ darkMode, saveData }) => {\r\n\t\t\tif (saveData) {\r\n\t\t\t\tthis.erpService.setUserSettings('darkmode', 'data', darkMode).subscribe(() => {});\r\n\t\t\t}\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tthis.electronService.on(\"SERVER_LOADING\").pipe(takeUntilDestroyed()).subscribe((serverLoading: boolean) => {\r\n\t\t\tthis.serverLoading = serverLoading;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}","<div id=\"left\" class=\"cf-flex-grow cf-overflow-hidden\">\r\n\t<div id=\"top-line\" class=\"cf-flex cf-ai-center cf-flex-spacer-4\">\r\n\t\t<img id=\"logo\" src=\"assets/logo.png\" />\r\n\t\t<div #statusblock id=\"statusblocks\" class=\"cf-flex-grow cf-overflow-x-auto\" *ngIf=\"this.statusBlockComponent !== null\"></div>\r\n\t</div>\r\n\t<div #tabgroups id=\"tabgroups\" *ngIf=\"headerConfiguration !== null\" (wheel)=\"tabGroupScroll($event)\" class=\"cf-overflow-x-auto\">\r\n        <ng-container *ngFor=\"let tabGroup of headerConfiguration.tabGroups\">\r\n            <div class=\"tabgroup\" *ngIf=\"tabGroup.pinned || tabGroup.tabs.length > 0\" [ngClass]=\"{'active': isTabGroupActive(tabGroup.tag)}\">\r\n                <div class=\"tabgroup-color\" [ngStyle]=\"{'background-color': tabGroup.color}\"></div>\r\n                <div class=\"tabgroup-background-color\" [ngStyle]=\"{'background-color': tabGroup.color}\"></div>\r\n                <div class=\"cf-flex tabgroup-title-title\" (click)=\"changeActiveTab(tabGroup.tabs[0].guid, true)\">\r\n                    <span class=\"tabgroup-title\" *ngIf=\"!isTabGroupActive(tabGroup.tag)\">{{tabGroup.title}}</span>\r\n                    <span class=\"tabgroup-title\" *ngIf=\"isTabGroupActive(tabGroup.tag)\" [ngStyle]=\"{'color': tabGroup.color}\">{{tabGroup.title}}</span>\r\n                    <span class=\"p-ml-auto\"></span>\r\n                </div>\r\n                <div class=\"tabs\">\r\n                    <div class=\"tab\" *ngFor=\"let tab of tabGroup.tabs\" draggable=\"true\" (dragstart)=\"onDragStart(tab, $event)\" (click)=\"changeActiveTab(tab.guid, true)\">\r\n                        <span *ngIf=\"debugMode && hasClientErrors(tab)\" class=\"remixicon error-warning-fill cf-text-color-danger\" (click)=\"clientErrorsEvent($event, tab.guid)\"></span>\r\n                        <span *ngIf=\"tab.guid !== headerConfiguration.activeGuid\">{{tab.title || 'Töltés...'}}</span>\r\n                        <span *ngIf=\"tab.guid === headerConfiguration.activeGuid\" [ngStyle]=\"{'color': tabGroup.color}\">{{tab.title || 'Töltés...'}}</span>\r\n                        <ng-container *ngIf=\"!tab.home && tab.guid === headerConfiguration.activeGuid\">\r\n                            <span class=\"remixicon file-copy-line\" (click)=\"openInNewWindow($event, tab.guid)\"></span>\r\n                            <span class=\"remixicon close-line\" (click)=\"closeTab($event, tab.guid);\"></span>\r\n                        </ng-container>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n    </div>\r\n</div>\r\n\r\n<div id=\"right\" class=\"cf-flex cf-flex-column cf-flex-justify-content-flex-end cf-ml-3 cf-mb-3\">\r\n\t<div class=\"cf-flex cf-ai-center cf-flex-spacer-1 cf-flex-right\">\r\n\t\t<span>{{fullname}}</span>\r\n\t\t<span class=\"control remixicon key-line\" (click)=\"showChangePasswordWindow()\"></span>\r\n\t</div>\r\n\t<div class=\"cf-flex cf-ai-center cf-flex-spacer-1 cf-mt-3 cf-user-select-none\">\r\n\t\t<span class=\"control remixicon restart-line\" *ngIf=\"debugMode && serverLoading\"></span>\r\n\t\t<span class=\"control remixicon close-line\" *ngIf=\"debugMode\" (click)=\"closeAll()\"></span>\r\n\t\t<span class=\"control remixicon refresh-line\" *ngIf=\"debugMode\" (click)=\"refresh()\"></span>\r\n\t\t<span class=\"control remixicon window-2-line\" *ngIf=\"debugMode\" (click)=\"openDevTools()\"></span>\r\n\t\t<span class=\"control remixicon screenshot-2-line\" *ngIf=\"debugMode\" (click)=\"takeScreenshot()\"></span>\r\n\t\t<span class=\"control remixicon information-line\" *ngIf=\"debugMode\" (click)=\"showInfoWindow()\"></span>\r\n\t\t<span class=\"control remixicon moon-line\" (click)=\"setDarkMode(true)\"></span>\r\n\t\t<span class=\"control remixicon sun-line\" (click)=\"setDarkMode(false)\"></span>\r\n\t\t<span class=\"control remixicon add-fill\" (click)=\"setZoomFactor(true)\"></span>\r\n\t\t<span class=\"control\" (click)=\"setZoomFactor(true, 1)\">0</span>\r\n\t\t<span class=\"control remixicon subtract-fill\" (click)=\"setZoomFactor(false)\"></span>\r\n\t</div>\r\n</div>\r\n\r\n<div id=\"shutdown\" *ngIf=\"shutdownTime !== null\">{{shutdownMessage}} {{timeTillShutdown|duration}}</div>","import { NgStyle } from \"@angular/common\";\r\nimport { Component, inject, Input } from \"@angular/core\";\r\nimport { ElectronService } from \"../../services\";\r\n\r\n@Component({\r\n\tselector: 'app-help',\r\n\tstandalone: true,\r\n\ttemplate: `<span [ngStyle]=\"{'width.px': size, 'height.px': size}\" (click)=\"open()\"><span [ngStyle]=\"{'fontSize.px': size * 0.7}\" class=\"remixicon question-line\"></span></span>`,\r\n\timports: [\r\n\t\tNgStyle\r\n\t],\r\n\tstyleUrls: ['./help.component.scss']\r\n})\r\nexport class HelpComponent {\r\n\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\t@Input() url: string = '';\r\n\t@Input() size: number = 34;\r\n\r\n\topen(): void {\r\n\t\tthis.electronService.send('HELP', this.url);\r\n\t}\r\n\r\n}\r\n","import { Type } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { CfDialogConfiguration } from \"codefoxui\";\r\n\r\nexport interface FileDownload {\r\n\turl: string;\r\n\tdir: string;\r\n\tname: string;\r\n}\r\n\r\nexport interface FileDownloadReport {\r\n    liveGridId: number | null;\r\n\tguid: string;\r\n\tcompleted: number;\r\n\tbasePath: string | null;\r\n\tdownloadPath: string | null;\r\n\tname: string | null;\r\n\tfilePath: string | null;\r\n\tcount: number;\r\n\terror: string | null;\r\n\toverwrite: boolean;\r\n}\r\n\r\nexport interface VersionInfo {\r\n\tclient: string | null;\r\n\tsetup: string | null;\r\n    xmls: string | null;\r\n    config: string | null;\r\n}\r\n\r\nexport interface ServerErrorResponse {\r\n\tid: number;\r\n\tmessage: string;\r\n}\r\n\r\n// HOME\r\nexport interface HomeInitResponse  {\r\n\tmodules: HomeModule[]\r\n    changeLogDate: string | null;\r\n\tboards: HomeInitResponseBoard[];\r\n\tshowHelp: boolean;\r\n}\r\n\r\nexport enum CommandMethod {\r\n    URL = 'URL',\r\n    MODAL = 'MODAL'\r\n}\r\n\r\nexport interface Command {\r\n    method: CommandMethod;\r\n    name: string;\r\n    url: string;\r\n}\r\n\r\nexport interface HomeModule {\r\n    name: string;\r\n    tag: string;\r\n    url: string;\r\n    commands: Command[];\r\n}\r\n\r\nexport interface HomeInitResponseBoard {\r\n\tseverity: string;\r\n\tlabel: string;\r\n\turl: string;\r\n}\r\n\r\nexport interface ChangeLogItem {\r\n    date: string;\r\n    version: string;\r\n    changes: string[];\r\n}\r\n\r\nexport interface ChangeLogModuleItem {\r\n\tcaption: string;\r\n\tinfo: string;\r\n}\r\n\r\nexport interface ChangeLogModule {\r\n    moduleName: string | null;\r\n\tchangeIndex: number;\r\n\tchanges: ChangeLogModuleItem[];\r\n}\r\n\r\nexport interface WorkstationCreateRequest {\r\n\tname: string;\r\n\thardwareHash: string;\r\n\tcpu: string;\r\n\tmemory: number;\r\n\tscreens: string;\r\n}\r\n\r\n// PRINTER HELPER\r\nexport interface PrintPreviewRequest {\r\n\txmlFileName: string;\r\n\tfileName: string;\r\n    issueCount: number;\r\n    issues: boolean[];\r\n    data: any;\r\n    labelPositions?: PrintHelperPrintLabelPosition[];\r\n\tpreview: boolean;\r\n\trotated?: boolean;\r\n}\r\n\r\nexport interface PrintHelperPrintLabelPosition {\r\n    top: number;\r\n    left: number;\r\n    width: number;\r\n    height: number;\r\n    printable: boolean;\r\n}\r\n\r\nexport interface PrintDocument {\r\n\tlabel: string;\r\n\tvalue: string;\r\n\ttype: string;\r\n}\r\n\r\nexport interface PrintRequest extends PrintPreviewRequest {\r\n\tprinterName: string;\r\n\telectronPath?: string;\r\n    apiBaseUrl?: string;\r\n    serverFileName: string;\r\n}\r\n\r\nexport interface HistoryLike {\r\n\tupdatedByFullname: string;\r\n\tupdatedAt: string | null;\r\n}\r\n\r\n\r\n// Modification\r\nexport interface ModificationChangedField {\r\n\tf: string; // fieldName\r\n\to: any; // oldValue\r\n\tn: any; // newValue\r\n}\r\n\r\nexport enum ModificationAction {\r\n\tCREATE = 'CREATE',\r\n\tUPDATE = 'UPDATE',\r\n\tDELETE = 'DELETE'\r\n}\r\n\r\nexport interface ModificationChange {\r\n\tm: string; // model\r\n\tn: string; // name\r\n\ta: ModificationAction; // action\r\n\tf: ModificationChangedField[]; // fields\r\n\tc: ModificationChange[]; // children\r\n\tcollapsed: boolean;\r\n}\r\n\r\nexport interface Modification {\r\n\tfullname: string;\r\n\tdate: string;\r\n\tchange: ModificationChange;\r\n}\r\n\r\nexport interface GetMessagesRequest {\r\n\tkind: string;\r\n\tkindId: number;\r\n}\r\n\r\nexport interface GetMessagesResponse {\r\n\tmessages: Message[];\r\n}\r\n\r\nexport interface Message {\r\n\tchatMessageId: number;\r\n\tkind: string;\r\n\tkindId: number;\r\n\tdate: string | null;\r\n\tuserId: number;\r\n\tfullname: string;\r\n\tmessage: string;\r\n\ttodo: boolean;\r\n\tdueDate: string | null;\r\n\tdeadline: string | null;\r\n\tassignedUserId: number | null;\r\n\tassignedFullname: string;\r\n\tready: boolean;\r\n\treadyUserId: number;\r\n\treadyFullname: string;\r\n\treadyDate: string | null;\r\n}\r\n\r\nexport interface MessageEditor {\r\n\tkind: string;\r\n\tkindId: number;\r\n\tmessage: string;\r\n\ttodo: boolean;\r\n\tassignedFullname: string;\r\n\tassignedUserId: number | null;\r\n\tdueDate: string | null;\r\n\tdeadline: string | null;\r\n}\r\n\r\nexport interface LabelConfiguration {\r\n    colsCount: number;\r\n    horizontalGap: number;\r\n    useLabelSize: boolean;\r\n    labelHeight: number;\r\n    labelWidth: number;\r\n    marginBottom: number;\r\n    marginLeft: number;\r\n    marginRight: number;\r\n    marginTop: number;\r\n    paperHeight: number;\r\n    paperWidth: number;\r\n    rowsCount: number;\r\n    verticalGap: number;\r\n}\r\n\r\nexport interface PrintHelperPrintLabelPosition {\r\n    top: number;\r\n    left: number;\r\n    width: number;\r\n    height: number;\r\n    printable: boolean;\r\n}\r\n\r\nexport interface PaperSize {\r\n    paperHeight: number;\r\n    paperWidth: number;\r\n}\r\n\r\nexport interface AddressItem {\r\n\taddressId: number | null;\r\n\tcountryCode: string;\r\n\tpostcode: string;\r\n\tcity: string;\r\n\taddress: string;\r\n\tparcelNumber: string;\r\n\tpublicPlaceName: string;\r\n\tpublicPlaceType: string;\r\n\thouseNumber: string;\r\n\tbuilding: string;\r\n\tstairway: string;\r\n\tlevel: string;\r\n\tdoor: string;\r\n\tnote: string;\r\n\tdefaultBillingAddress: boolean;\r\n\tdefaultShippingAddress: boolean;\r\n\ttouched: boolean;\r\n    extra: string;\r\n}\r\n\r\nexport interface ContactItem {\r\n\tcontactId: number | null;\r\n    type: string;\r\n    typeId: number;\r\n\torderContact: boolean;\r\n\tshippingContact: boolean;\r\n\tuseInformal: boolean;\r\n\tname: string;\r\n\tphone: string;\r\n\temail: string;\r\n\tbillingEmail: boolean;\r\n\tnote: string;\r\n\ttouched: boolean;\r\n}\r\n\r\nenum CountryType {\r\n\tEU = 'EU',\r\n\tTHIRD = 'THIRD',\r\n\tGSP = 'GSP'\r\n}\r\n\r\nexport interface Country {\r\n\tname: string;\r\n\tcountryCode: string\r\n\ttype: CountryType;\r\n}\r\n\r\nexport interface CountryFormGroup {\r\n\tname: FormControl<string>;\r\n\tcountryCode: FormControl<string>\r\n\ttype: FormControl<CountryType>;\r\n}\r\n\r\nexport interface TranslateRequest {\r\n    string: string;\r\n    stringArray: string[];\r\n    stringHtml: string;\r\n    stringHtmlArray: string[];\r\n}\r\n\r\nexport interface TranslateResponse {\r\n    string: string;\r\n    stringArray: string[];\r\n    stringHtml: string;\r\n    stringHtmlArray: string[];\r\n}\r\n\r\nexport interface ButtonBarItemDialog {\r\n\tname?: string;\r\n\tcomponent?: () => Promise<Type<any>>;\r\n\tconfiguration?: CfDialogConfiguration | (() => CfDialogConfiguration);\r\n\ttitle?: string;\r\n}\r\n\r\nexport interface ButtonBarItemPermission {\r\n\tpermissions: string | string[];\r\n\tskipGodMode?: boolean;\r\n\tskipOnPermissions?: string[];\r\n\tmode?: 'and' | 'or';\r\n}\r\n\r\nexport type ButtonBarButtonSeverityType = 'warning' | 'danger' | 'info' | 'success' | 'primary' | 'secondary';\r\n\r\nexport interface ButtonBarItem {\r\n\tid: number;\r\n\tlabel?: string | (() => string);\r\n\tseverity?: ButtonBarButtonSeverityType | (() => Partial<ButtonBarButtonSeverityType>);\r\n\tclickCallback?: () => void;\r\n\tdialog?: string | (() => Promise<Type<any>>) | ButtonBarItemDialog;\r\n\tisDisabled?: boolean | (() => boolean);\r\n\tpermission?: string | string[] | ButtonBarItemPermission;\r\n\thotkey?: string;\r\n\tappUrlOpenerUrl?: string | null | (() => string | null);\r\n\tappUrlOpenerUrlState?: {[key: string]: any};\r\n\ticon?: () => string;\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { ButtonDirective, CfDialog } from \"codefoxui\";\r\nimport { Modification, ModificationAction, ModificationChange } from \"../../interfaces\";\r\nimport { HistoryService } from \"../../services/history.service\";\r\n\r\n@Component({\r\n\tselector: 'app-history',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './history.component.html',\r\n\tstyleUrls: ['./history.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HistoryComponent extends CfDialog implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\thistoryService: HistoryService = inject(HistoryService);\r\n\r\n\thistoryModel: string | null = this.config.getData('historyModel', null);\r\n\thistoryId: number | null = this.config.getData('historyId', null);\r\n\r\n\tmodifications: Modification[] = [];\r\n\r\n\tModificationAction = ModificationAction;\r\n\r\n\tgetHistory(): void {\r\n\t\tif (this.historyModel === null || this.historyId === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.historyService.getHistory(this.historyModel, this.historyId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ modifications }) => {\r\n\t\t\tthis.modifications = modifications;\r\n\t\t\tthis.collapseAll();\r\n\t\t});\r\n\t}\r\n\r\n\tcollapseAll(): void {\r\n\t\tthis.setAllModifications(this.modifications, true);\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\topenAll(): void {\r\n\t\tthis.setAllModifications(this.modifications, false);\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tsetAllModifications(modifications: Modification[], collapsed: boolean): void {\r\n\t\tfor (let i = 0; i < modifications.length; i++) {\r\n\t\t\tthis.setAllChanges([modifications[i].change], collapsed);\r\n\t\t}\r\n\t}\r\n\r\n\tsetAllChanges(modificationChanges: ModificationChange[], collapsed: boolean): void {\r\n\t\tfor (let i = 0; i < modificationChanges.length; i++) {\r\n\t\t\tmodificationChanges[i].collapsed = collapsed;\r\n\t\t\tthis.setAllChanges(modificationChanges[i].c, collapsed);\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleCollapse(modificationChange: ModificationChange): void {\r\n\t\tif (modificationChange.f.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tmodificationChange.collapsed = !modificationChange.collapsed;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.getHistory();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}","<div class=\"cf-dialog-title\">Verzióelőzmények</div>\r\n\r\n<div id=\"container\">\r\n\t<div class=\"modification cf-p-2\" *ngFor=\"let modification of modifications\">\r\n\t\t<div class=\"modification-header cf-p-2 cf-flex\">\r\n\t\t\t<div class=\"cf-text-bold\">{{modification.fullname}}</div>\r\n\t\t\t<div class=\"cf-ml-auto\">{{modification.date|date:'YYYY.MM.dd HH:mm:ss'}}</div>\r\n\t\t</div>\r\n\t\t<ng-container [ngTemplateOutlet]=\"modificationChangesTemplate\" [ngTemplateOutletContext]=\"{changes: [modification.change]}\"></ng-container>\r\n\t</div>\r\n</div>\r\n\r\n<div class=\"cf-flex cf-flex cf-flex-spacer-2\">\r\n\t<button cfButton [severity]=\"'success'\" [label]=\"'Összes kibontása'\" (click)=\"openAll()\"></button>\r\n\t<button cfButton [severity]=\"'success'\" [label]=\"'Összes bezárása'\" (click)=\"collapseAll()\"></button>\r\n\t<span class=\"cf-ml-auto\"></span>\r\n\t<button cfButton [severity]=\"'danger'\" [label]=\"'Bezárás'\" (click)=\"close()\"></button>\r\n</div>\r\n\r\n<ng-template #modificationChangesTemplate let-changes=\"changes\">\r\n\t<div class=\"change\" [ngClass]=\"{\r\n\t\t'create': change.a === ModificationAction.CREATE,\r\n\t\t'update': change.a === ModificationAction.UPDATE,\r\n\t\t'delete': change.a === ModificationAction.DELETE\r\n\t}\" *ngFor=\"let change of changes\">\r\n\t\t<div class=\"change-title cf-cursor-pointer cf-p-2 cf-text-bold cf-flex cf-flex-spacer-2\" [ngClass]=\"{'cf-mb-2': change.collapsed}\" (click)=\"toggleCollapse(change)\">\r\n\t\t\t<span *ngIf=\"change.a === ModificationAction.CREATE\">{{change.m}} hozzáadása: {{change.n}}</span>\r\n\t\t\t<span *ngIf=\"change.a === ModificationAction.UPDATE\">{{change.m}} szerkesztése: {{change.n}}</span>\r\n\t\t\t<span *ngIf=\"change.a === ModificationAction.DELETE\">{{change.m}} törlése: {{change.n}}</span>\r\n\t\t\t<span class=\"cf-ml-auto\"></span>\r\n\t\t\t<span class=\"remixicon arrow-drop-down-line\" *ngIf=\"change.collapsed && change.f.length > 0\"></span>\r\n\t\t\t<span class=\"remixicon arrow-drop-up-line\" *ngIf=\"!change.collapsed && change.f.length > 0\"></span>\r\n\t\t</div>\r\n\t\t<div class=\"change-table cf-m-3\" *ngIf=\"change.f.length > 0 && !change.collapsed\">\r\n\t\t\t<ng-container *ngFor=\"let field of change.f\">\r\n\t\t\t\t<div class=\"change-table-row\" *ngIf=\"(field.o !== null && field.o !== '') || (field.n !== null && field.n !== '')\">\r\n\t\t\t\t\t<div>{{field.f}}</div>\r\n\t\t\t\t\t<div>{{field.o}}</div>\r\n\t\t\t\t\t<div>{{field.n}}</div>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngIf=\"change.c.length > 0\" [ngTemplateOutlet]=\"modificationChangesTemplate\" [ngTemplateOutletContext]=\"{changes: change.c}\"></ng-container>\r\n\t</div>\r\n</ng-template>","import { Directive, HostListener, inject, Input } from '@angular/core';\r\nimport { CfPermissionsService } from 'codefoxui';\r\nimport { ElectronService } from '../services/electron.service';\r\n\r\n@Directive({\r\n    selector: '[appUrlOpener]',\r\n\tstandalone: true\r\n})\r\nexport class UrlOpenerDirective {\r\n\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tpermissionsService: CfPermissionsService = inject(CfPermissionsService);\r\n\r\n\t@Input() url: string | null = null;\r\n    @Input() urlState: {[key: string]: any} = {};\r\n\t@Input() checkPermission: string | null = null;\r\n\t@Input() checkAlreadyOpened: boolean = false;\r\n\t@Input() jumpToFirstOrOpen: boolean = false;\r\n\r\n    @HostListener('click', ['$event'])\r\n    open(pointerEvent: PointerEvent): void {\r\n        if (this.url === null) {\r\n            return;\r\n        }\r\n\t\tif (this.checkPermission !== null && !this.permissionsService.hasPermission(this.checkPermission)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.electronService.openUrl(this.url, {\r\n\t\t\turlState: this.urlState,\r\n\t\t\tcheckAlreadyOpened: this.checkAlreadyOpened,\r\n\t\t\tjumpToFirstOrOpen: this.jumpToFirstOrOpen,\r\n            openConsole: pointerEvent.ctrlKey && pointerEvent.shiftKey\r\n\t\t});\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, inject, NgZone } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CfDialogService, CfDestroyRef, ButtonDirective, CfPermissionsService } from 'codefoxui';\r\nimport { ErpService } from '../../services/erp.service';\r\nimport { ElectronService } from '../../services/electron.service';\r\nimport { CommandMethod, HomeInitResponse, HomeInitResponseBoard, HomeModule } from '../../interfaces/general.interfaces';\r\nimport { UrlOpenerDirective } from '../../directives/urlopener.directive';\r\nimport { HOME_ALLOWED_MODULE_TAGS } from '../../tokens/home.token';\r\n\r\n@Component({\r\n\tselector: 'app-home',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tUrlOpenerDirective,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './home.component.html',\r\n\tstyleUrls: ['./home.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HomeComponent extends CfDestroyRef implements OnInit {\r\n\r\n\tactivatedRoute: ActivatedRoute = inject(ActivatedRoute);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tpermissionsService: CfPermissionsService = inject(CfPermissionsService);\r\n\terpService: ErpService = inject(ErpService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\trouter: Router = inject(Router);\r\n\tngZone: NgZone = inject(NgZone);\r\n\r\n\tbackDropFilterVisible: boolean = true;\r\n\r\n\teeActive = false;\r\n\tCommandMethod = CommandMethod;\r\n\t#modules: HomeModule[] = [];\r\n\tboards: HomeInitResponseBoard[] = [];\r\n\tchangeLogDate: string | null = null;\r\n\tshowHelp: boolean = false;\r\n    allowedModuleTags: string[] = inject(HOME_ALLOWED_MODULE_TAGS);\r\n\r\n    get modules(): HomeModule[] {\r\n        if (this.electronService.live) {\r\n            return this.#modules.filter(({ tag }) => this.allowedModuleTags.includes(tag));\r\n        }\r\n        return this.#modules;\r\n    }\r\n\r\n    set modules(modules: HomeModule[]) {\r\n        this.#modules = modules;\r\n    }\r\n\r\n\tsetBackdropFilterVisible(status: boolean): void {\r\n\t\tthis.backDropFilterVisible = status;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tshowDialog(url: string): void {\r\n\t\tthis.setBackdropFilterVisible(false);\r\n        this.dialogService.openPredefined(url);\r\n\t}\r\n\r\n\tshowClientHistoryDialog(changeLogDate: string | null = null): void {\r\n\t\tthis.setBackdropFilterVisible(false);\r\n\t\tthis.dialogService.openImport(() => import('../clienthistorymodal/clienthistorymodal.component').then(c => c.ClienthistorymodalComponent)).then(({ onClose }) => {\r\n\t\t\tonClose.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.setBackdropFilterVisible(true);\r\n\t\t\t\tif (changeLogDate !== null) {\r\n\t\t\t\t\tthis.electronService.setState('changeLogDate', changeLogDate);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\topenBoard(url: string, title: string): void {\r\n\t\tthis.electronService.openUrl(url, {\r\n\t\t\ttitle\r\n\t\t});\r\n\t}\r\n\r\n\topenHelp(): void {\r\n\t\tthis.electronService.send('HELP', '');\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tif (this.changeLogDate !== null) {\r\n\t\t\tlet changeLogDate: Date | null = this.electronService.getState('changeLogDate', null);\r\n\t\t\tif (changeLogDate === null || new Date(changeLogDate).getTime() !== new Date(this.changeLogDate).getTime()) {\r\n\t\t\t\tthis.showClientHistoryDialog(this.changeLogDate);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tchangeEE(): void {\r\n\t\tthis.eeActive = !this.eeActive;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Főoldal');\r\n\t\tthis.electronService.on('PERMISSIONS_CHANGED').pipe(takeUntilDestroyed()).subscribe((permissions) => {\r\n\t\t\tthis.permissionsService.permissions = permissions;\r\n\t\t\tthis.erpService.getHome().pipe(takeUntilDestroyed(this.destroyRef)).subscribe((homeInitResponse: HomeInitResponse) => {\r\n\t\t\t\tthis.boards = homeInitResponse.boards;\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t});\r\n\t\tthis.electronService.on('OPENED_TABS').pipe(takeUntilDestroyed()).subscribe((tabConfigurations) => {\r\n\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\tthis.dialogService.openImport(() => import('../tabselector/tabselector.component').then(c => c.TabSelectorComponent), {\r\n\t\t\t\t\tdata: {\r\n\t\t\t\t\t\ttabConfigurations\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t\tconst homeInitResponse: HomeInitResponse = this.activatedRoute.snapshot.data['homeInitResponse'];\r\n\t\tthis.modules = homeInitResponse.modules;\r\n\t\tthis.boards = homeInitResponse.boards;\r\n\t\tthis.showHelp = homeInitResponse.showHelp;\r\n        this.changeLogDate = homeInitResponse.changeLogDate;\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}\r\n","<div class=\"cf-fullpage cf-flex\" id=\"container\" [ngClass]=\"{'ee': eeActive}\">\r\n    <div id=\"scroll-area\" class=\"cf-flex-grow\">\r\n        <div class=\"cf-flex\" id=\"modules\">\r\n            <div class=\"module\" [ngClass]=\"{'backdrop-filter': backDropFilterVisible}\" *ngFor=\"let module of modules\">\r\n                <div class=\"not-allowed\" *ngIf=\"!allowedModuleTags.includes(module.tag)\"></div>\r\n                <div class=\"module-link\" appUrlOpener [url]=\"module.url\" [checkAlreadyOpened]=\"true\">\r\n                    <img [src]=\"'assets/home/modules/' + module.tag + '.png'\" />\r\n                    <div class=\"title\">{{module.name}}</div>\r\n                </div>\r\n                <div class=\"separator\" *ngIf=\"module.commands.length > 0\"></div>\r\n                <div class=\"commands\">\r\n                    <div class=\"command\" *ngFor=\"let command of module.commands\">\r\n                        <span *ngIf=\"command.method === CommandMethod.URL\" appUrlOpener [checkAlreadyOpened]=\"true\" [url]=\"command.url\">{{command.name}}</span>\r\n                        <span *ngIf=\"command.method === CommandMethod.MODAL\" (click)=\"showDialog(command.url)\">{{command.name}}</span>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div id=\"footer\" class=\"cf-flex cf-flex-spacer-4\">\r\n\t\t<button cfButton [severity]=\"'success'\" [label]=\"'Változási napló'\" (click)=\"showClientHistoryDialog()\"></button>\r\n\t\t<ng-container *ngIf=\"showHelp\">\r\n\t\t\t<button cfButton [severity]=\"'info'\" [label]=\"'Súgó'\" (click)=\"openHelp()\"></button>\r\n\t\t</ng-container>\r\n\t\t<span class=\"cf-ml-auto\"></span>\r\n\t\t<button cfButton [severity]=\"board.severity\" [label]=\"board.label\" (click)=\"openBoard(board.url, board.label)\" *ngFor=\"let board of boards\"></button>\r\n    </div>\r\n\t<div id=\"ee\" (click)=\"changeEE()\"></div>\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, ViewChild } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { ButtonDirective, CfDialog, InputTextComponent } from \"codefoxui\";\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\ttemplate: `\r\n\t\t<div class=\"cf-vgrid\">\r\n\t\t\t<div class=\"cf-dialog-title\">Gyorsgomb hozzárendelés</div>\r\n\t\t\t<div class=\"cf-flex cf-flex-spacer-2\">\r\n\t\t\t\t<cf-inputtext #input [label]=\"'Billenytűparancs'\" class=\"cf-flex-grow\" [(ngModel)]=\"key\" (onKeydown)=\"onKeydown($event)\"></cf-inputtext>\r\n\t\t\t\t<button cfButton [severity]=\"'danger'\" [icon]=\"'close-line'\" (click)=\"clear()\"></button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"cf-flex cf-flex-right cf-flex-spacer-2\">\r\n\t\t\t\t<button cfButton [severity]=\"'success'\" [label]=\"'Mentés'\" (click)=\"save()\"></button>\r\n\t\t\t\t<button cfButton [severity]=\"'danger'\" [label]=\"'Bezárás'\" (click)=\"close()\"></button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t`,\r\n\tstyles: [\r\n\t\t':host { display: block; width: 20vw }'\r\n\t],\r\n\timports: [\r\n\t\tInputTextComponent,\r\n\t\tCommonModule,\r\n\t\tButtonDirective,\r\n\t\tFormsModule\r\n\t]\r\n})\r\nexport class HotkeyEditorComponent extends CfDialog implements OnInit, AfterViewInit {\r\n\r\n\tattachedEvents: {[key: string]: string} = this.config.getData('attachedEvents', {});\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tkey: string | null = this.config.getData('key', null);\r\n\r\n\t@ViewChild('input') input: InputTextComponent | undefined = undefined;\r\n\r\n\tonKeydown(keyboardEvent: KeyboardEvent): void {\r\n\t\tkeyboardEvent.preventDefault();\r\n\t\tkeyboardEvent.stopPropagation();\r\n\t\tconst eventParts: string[] = [];\r\n\t\tif (keyboardEvent.shiftKey) {\r\n\t\t\teventParts.push('shift');\r\n\t\t}\r\n\t\tif (keyboardEvent.altKey) {\r\n\t\t\teventParts.push('alt');\r\n\t\t}\r\n\t\tif (keyboardEvent.ctrlKey) {\r\n\t\t\teventParts.push('ctrl');\r\n\t\t}\r\n\t\teventParts.push(keyboardEvent.key.toLowerCase());\r\n\t\tif (['control', 'shift', 'alt'].includes(eventParts[eventParts.length - 1].toLowerCase())) {\r\n\t\t\teventParts.pop();\r\n\t\t}\r\n\t\t(keyboardEvent.target as HTMLInputElement).value = eventParts.join('+').toUpperCase();\r\n\t}\r\n\r\n\tclear(): void {\r\n\t\tthis.key = null;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tsave(): void {\r\n\t\tthis.close(this.key);\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tif (this.input !== undefined) {\r\n\t\t\tthis.input.focus();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, Input, ViewChild, ElementRef, ChangeDetectorRef, OnChanges, AfterViewInit, inject } from '@angular/core';\r\nimport { LabelConfiguration, PaperSize } from '../../interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-labelsviewer',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule\r\n\t],\r\n\ttemplateUrl: './labelsviewer.component.html',\r\n\tstyleUrls: ['./labelsviewer.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LabelsviewerComponent implements OnChanges, AfterViewInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\t@Input() labelConfiguration: LabelConfiguration | null = null;\r\n\t@Input() values: boolean[] = [];\r\n\t@Input() printMode: boolean = false;\r\n\t@Input() reverseOrder: boolean = false;\r\n\r\n\t@ViewChild('backpaper') backpaper: ElementRef<HTMLDivElement> | undefined = undefined;\r\n\r\n\tpaperSize: PaperSize = {\r\n\t\tpaperHeight: 0,\r\n\t\tpaperWidth: 0,\r\n\t};\r\n\tlabelCount: number = 0;\r\n\r\n\tcalculateSize(): void {\r\n\t\tif (this.backpaper === undefined || this.labelConfiguration === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst data: LabelConfiguration = this.labelConfiguration;\r\n\t\tthis.labelCount = (data.colsCount * data.rowsCount);\r\n\r\n\t\tlet paperWidth: number = data.paperWidth;\r\n\t\tlet paperHeight: number = data.paperHeight;\r\n\t\tconst containerWidth: number = this.backpaper.nativeElement.getBoundingClientRect().width - 16;\r\n\t\tconst containerHeight: number = this.backpaper.nativeElement.getBoundingClientRect().height - 16;\r\n\r\n\t\tif (data.useLabelSize) {\r\n\t\t\tpaperWidth = data.marginLeft + data.marginRight + ((data.colsCount - 1) * data.horizontalGap) + (data.colsCount * data.labelWidth);\r\n\t\t\tpaperHeight = data.marginTop + data.marginBottom + ((data.rowsCount - 1) * data.verticalGap) + (data.rowsCount * data.labelHeight);\r\n\t\t}\r\n\r\n\t\tconst widthRatio: number = paperWidth / containerWidth;\r\n\t\tconst heightRatio: number = paperHeight / containerHeight;\r\n\r\n\t\tif (heightRatio < widthRatio) {\r\n\t\t\tthis.paperSize.paperWidth = containerWidth;\r\n\t\t\tthis.paperSize.paperHeight = this.paperSize.paperWidth * (paperHeight / paperWidth);\r\n\t\t} else {\r\n\t\t\tthis.paperSize.paperHeight = containerHeight;\r\n\t\t\tthis.paperSize.paperWidth = this.paperSize.paperHeight * (paperWidth / paperHeight);\r\n\t\t}\r\n\r\n\t\tthis.values = new Array(this.labelCount).fill(false)\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tselect(id: number): void {\r\n\t\tif (!this.printMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.reverseOrder) {\r\n\t\t\tthis.values[(this.labelCount - 1) - id] = !this.values[(this.labelCount - 1) - id];\r\n\t\t} else {\r\n\t\t\tthis.values[id] = !this.values[id];\r\n\t\t}\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tgenerateLabelArray(length: number): number[] {\r\n\t\treturn new Array(length).fill(0);\r\n\t}\r\n\r\n\tngOnChanges(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.calculateSize();\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.calculateSize();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div id=\"back-paper\" class=\"cf-flex cf-flex-center cf-ai-center\" #backpaper>\r\n    <div id=\"paper\" [ngStyle]=\"{ 'width': paperSize.paperWidth + 'px', 'height': paperSize.paperHeight + 'px' }\" *ngIf=\"paperSize !== null && labelConfiguration !== null\">\r\n        <div id=\"inner-paper\" [ngStyle]=\" {'grid-template-columns': 'repeat(' + labelConfiguration.colsCount + ',1fr)', 'gap':  labelConfiguration.horizontalGap + 'px ' + labelConfiguration.verticalGap + 'px', 'margin': labelConfiguration.marginTop + 'px ' + labelConfiguration.marginRight + 'px ' + labelConfiguration.marginBottom + 'px ' + labelConfiguration.marginLeft + 'px'}\">\r\n            <div [ngClass]=\"{'selected': this.reverseOrder ? this.values[(this.labelCount-1) - i] : this.values[i] }\" *ngFor=\"let label of generateLabelArray(labelConfiguration.colsCount * labelConfiguration.rowsCount); let i = index;\" (click)=\"select(i)\">\r\n                <div *ngIf=\"!reverseOrder\">{{i + 1}}</div>\r\n                <div *ngIf=\"reverseOrder\">\r\n                    {{generateLabelArray(labelCount).length - i}}</div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, ViewChild } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from \"@angular/forms\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { ButtonDirective, InterceptorsService, DropdownComponent, InputTextComponent, InterceptorType } from \"codefoxui\";\r\nimport { switchMap, combineLatest, of } from 'rxjs';\r\nimport { ElectronService } from \"../../services/electron.service\";\r\nimport { ServerErrorResponse, VersionInfo } from \"../../interfaces/general.interfaces\";\r\nimport { LoginInitResponse, LoginResponse } from \"../../interfaces/user.interfaces\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { ErpService } from \"../../services/erp.service\";\r\n\r\n@Component({\r\n\tselector: 'app-login',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tDropdownComponent,\r\n\t\tInputTextComponent,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './login.component.html',\r\n\tstyleUrls: ['./login.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LoginComponent implements AfterViewInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tactivatedRouter: ActivatedRoute = inject(ActivatedRoute);\r\n\tuserService: UserService = inject(UserService);\r\n\tinterceptorsService: InterceptorsService = inject(InterceptorsService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\terpService: ErpService = inject(ErpService);\r\n\tdestroyRef: DestroyRef = inject(DestroyRef);\r\n\r\n\tlastLoginedUser: string | null = null;\r\n\r\n\tformGroup: FormGroup = new FormGroup({\r\n\t\tusername: new FormControl('', [Validators.required]),\r\n\t\tpassword: new FormControl('', [Validators.required])\r\n\t});\r\n\r\n\tusers: string[] = [];\r\n\r\n\terror: string | null = null;\r\n\tactualVersionInfo: VersionInfo | null = this.electronService.versionInfo;\r\n    latestVersionError: boolean = false;\r\n\tlive: boolean = this.electronService.live;\r\n\r\n\thasNewVersion: boolean = false;\r\n\r\n\t@ViewChild('passwordInput') passwordInput: InputTextComponent | undefined;\r\n\r\n\tlogin(): void {\r\n\r\n\t\tconst lastLoggedInUsername: string = this.formGroup.get('username')!.value;\r\n\t\tif (lastLoggedInUsername !== this.lastLoginedUser) {\r\n\t\t\tthis.electronService.setState('lastLoginedUser', lastLoggedInUsername);\r\n\t\t}\r\n\r\n\t\tthis.error = null;\r\n\t\tthis.cdr.detectChanges();\r\n\r\n\t\tif (this.formGroup.invalid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.interceptorsService.skip = [InterceptorType.ERROR];\r\n\t\tthis.userService.login(this.formGroup.value).pipe(\r\n\t\t\tswitchMap((loginResponse: LoginResponse) => combineLatest([\r\n\t\t\t\tthis.erpService.getUserSettings('client', this.electronService.clientSlug !== null ? 'tabs:' + this.electronService.clientSlug : 'tabs'),\r\n                this.erpService.getUserSettings('zoomfactors', 'data'),\r\n\t\t\t\tthis.erpService.getUserSettings('darkmode', 'data'),\r\n\t\t\t\tof(loginResponse)\r\n\t\t\t]))\r\n\t\t).subscribe({\r\n\t\t\tnext: ([ restore, zoomfactors, darkmode, loginResponse ]) => {\r\n\t\t\t\tthis.electronService.send(\"LOGIN\", {\r\n\t\t\t\t\t...loginResponse,\r\n\t\t\t\t\trestore,\r\n                    zoomfactors,\r\n\t\t\t\t\tdarkmode\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\terror: (httpErrorResponse: HttpErrorResponse) => {\r\n\t\t\t\tconst serverErrorResponse: ServerErrorResponse = httpErrorResponse.error;\r\n\t\t\t\tthis.error = serverErrorResponse.message;\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t}\r\n\t\t}).add(() => {\r\n\t\t\tthis.interceptorsService.skip = [];\r\n\t\t});\r\n\t}\r\n\r\n\tclose(): void {\r\n\t\tthis.electronService.send('CLOSE_APP', null);\r\n\t}\r\n\r\n\tupdate(): void {\r\n\t\tthis.electronService.send('UPDATE', null);\r\n\t}\r\n\r\n    getLatestVersionInfo(): void {\r\n        this.interceptorsService.skip = [InterceptorType.ERROR];\r\n        this.erpService.getLatestVersionInfo(this.electronService.projectGuid).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\r\n            next: (latestVersioninfo: VersionInfo) => {\r\n                this.hasNewVersion = this.actualVersionInfo === null ||\r\n                    this.actualVersionInfo.client === null ||\r\n                    this.actualVersionInfo.setup === null ||\r\n                    this.actualVersionInfo.xmls === null ||\r\n                    this.actualVersionInfo.config === null ||\r\n                    latestVersioninfo.client === null ||\r\n                    latestVersioninfo.setup === null ||\r\n                    latestVersioninfo.xmls === null ||\r\n                    latestVersioninfo.config === null ||\r\n                    this.actualVersionInfo.client !== latestVersioninfo.client ||\r\n                    this.actualVersionInfo.setup !== latestVersioninfo.setup ||\r\n                    this.actualVersionInfo.xmls !== latestVersioninfo.xmls ||\r\n                    this.actualVersionInfo.xmls !== latestVersioninfo.xmls;\r\n                this.cdr.detectChanges();\r\n            },\r\n            error: () => {\r\n                this.latestVersionError = true;\r\n                this.cdr.detectChanges();\r\n            }\r\n        })\r\n    }\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tif (this.lastLoginedUser !== null && this.passwordInput) {\r\n\t\t\tthis.passwordInput.focus();\r\n\t\t}\r\n        this.getLatestVersionInfo();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tconst loginInitResponse: LoginInitResponse = this.activatedRouter.snapshot.data['init'] as LoginInitResponse;\r\n\r\n\t\tthis.lastLoginedUser = this.electronService.getState('lastLoginedUser', null);\r\n\t\tif (this.lastLoginedUser !== null) {\r\n\t\t\tthis.formGroup.get('username')!.setValue(this.lastLoginedUser);\r\n\t\t}\r\n\r\n\t\tthis.users = ['', ...loginInitResponse.users];\r\n\r\n\t\tthis.formGroup.valueChanges.pipe(\r\n\t\t\ttakeUntilDestroyed()\r\n\t\t).subscribe(()=> {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}","<div id=\"login-content\">\r\n\t<form [formGroup]=\"formGroup\" (ngSubmit)=\"login()\">\r\n\t\t<div class=\"cf-grid cf-cols-12\">\r\n\t\t\t<div class=\"cf-col-12 cf-text-center cf-mb-4\">\r\n\t\t\t\t<img id=\"logo\" src=\"assets/logo.png\" />\r\n\t\t\t</div>\r\n\t\t\t<cf-dropdown [values]=\"users\" [label]=\"'Felhasználónév'\" formControlName=\"username\" class=\"cf-col-12\"></cf-dropdown>\r\n\t\t\t<cf-inputtext #passwordInput [type]=\"'password'\" [label]=\"'Jelszó'\" formControlName=\"password\" class=\"cf-col-12\"></cf-inputtext>\r\n\t\t\t<div class=\"cf-col-12 cf-flex cf-flex-right\">\r\n\t\t\t\t<button [type]=\"'button'\" cfButton [label]=\"'Bezárás'\" [severity]=\"'danger'\" (click)=\"close()\"></button>\r\n\t\t\t\t<button cfButton [disabled]=\"formGroup.invalid\" [label]=\"'Belépés'\" [severity]=\"'success'\" class=\"cf-ml-auto\"></button>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"error !== null\" class=\"cf-col-12 cf-text-bold cf-text-color-danger cf-mt-2\">{{error}}</div>\r\n\t\t</div>\r\n\t</form>\r\n</div>\r\n<ng-container *ngIf=\"live\">\r\n    <div id=\"update\" *ngIf=\"latestVersionError\">\r\n        <div class=\"cf-text-bold cf-text-center cf-text-color-danger cf-mb-2\">Nem lehet lekérni a friss verzió információkat!</div>\r\n    </div>\r\n    <div id=\"update\" *ngIf=\"hasNewVersion\">\r\n        <div class=\"cf-text-bold cf-text-center cf-text-color-danger cf-mb-2\">Ha más nincs bejelentkezve, kérjük frissítsd a programot!</div>\r\n        <div class=\"update-button-container\">\r\n            <button cfButton [severity]=\"'danger'\" [label]=\"'Frissítés'\" id=\"update-button\" (click)=\"update()\"></button>\r\n        </div>\r\n    </div>\r\n    <div id=\"version\" *ngIf=\"actualVersionInfo !== null\">\r\n        <b>Programverzió:</b> {{actualVersionInfo.client}} <b>Telepítő verzió:</b> {{actualVersionInfo.setup}}\r\n    </div>\r\n</ng-container>\r\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\r\nimport { ActivatedRoute, RouterOutlet } from '@angular/router';\r\nimport { FullPageComponent, MenuItem } from 'codefoxui';\r\nimport { ElectronService } from '../../../../services/electron.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tRouterOutlet,\r\n\t\tFullPageComponent\r\n\t],\r\n\ttemplateUrl: './maintenance.component.html',\r\n\tstyleUrls: ['./maintenance.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MaintenanceComponent {\r\n\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tactivatedRoute: ActivatedRoute = inject(ActivatedRoute);\r\n\r\n\tmenuItems: MenuItem[] = [\r\n\t\t{ title: 'Lock feloldás', routerLink: ['lockrelease'], permissions: ['maintenance.lockrelease'] },\r\n\t\t{ title: 'Rendszer', routerLink: ['system'], permissions: ['maintenance.system'] }\r\n\t]\r\n\r\n\tconstructor() {\r\n\t\tthis.electronService.setTitle('Karbantartás');\r\n\t\tconst menuItems: MenuItem[] | undefined = this.activatedRoute.snapshot.data['menuItems'];\r\n\t\tif (menuItems !== undefined) {\r\n\t\t\tthis.menuItems.push(...menuItems);\r\n\t\t}\r\n\t}\r\n}\r\n","<cf-fullpage [menuItems]=\"menuItems\" [menuClasses]=\"'cf-pt-4 menu-sidebar'\" [contentClasses]=\"'cf-p-4'\" [menuWidth]=\"'260px'\">\r\n\t<router-outlet></router-outlet>\r\n</cf-fullpage>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, ViewChild } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { LIVEGRID_DATE_FORMAT_DATETIME, LiveGridColumnType, LiveGridComponent, LiveGridOptions } from \"codefoxlivegrid\";\r\nimport { CfDialogService, CfMessageService, CfDestroyRef, ButtonDirective } from \"codefoxui\";\r\nimport { MaintenanceService } from \"../../../../services/maintenance.service\";\r\nimport { ElectronService } from \"../../../../services/electron.service\";\r\nimport { MaintenanceLockRow } from \"../../../../interfaces/maintenance.interfaces\";\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tButtonDirective,\r\n\t\tLiveGridComponent\r\n\t],\r\n\ttemplateUrl: './lockrelease.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LockreleaseComponent extends CfDestroyRef implements OnInit {\r\n\t\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tmaintenanceService: MaintenanceService = inject(MaintenanceService);\r\n\tmessageService: CfMessageService = inject(CfMessageService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tliveGridOptions: LiveGridOptions<MaintenanceLockRow> = {\r\n        name: 'livegridlock',\r\n        idField: 'liveGridId',\r\n        useInternalIdCounter: true,\r\n        columns: [{\r\n            field: 'id',\r\n            type: LiveGridColumnType.NUMBER,\r\n            title: 'Id'\r\n        }, {\r\n            field: 'info',\r\n            type: LiveGridColumnType.STRING,\r\n            title: 'Név'\r\n        },\r\n        {\r\n            field: 'moduleTitle',\r\n            type: LiveGridColumnType.STRING,\r\n            title: 'Modul',\r\n        },\r\n        {\r\n            field: 'fullname',\r\n            type: LiveGridColumnType.STRING,\r\n            decimalCount: 2,\r\n            title: 'Felhasználó'\r\n        }, {\r\n            field: 'updated',\r\n            type: LiveGridColumnType.DATE,\r\n            title: 'Dátum',\r\n            dateFormat: LIVEGRID_DATE_FORMAT_DATETIME\r\n        }]\r\n    };\r\n\r\n\t@ViewChild('liveGrid') liveGrid: LiveGridComponent<MaintenanceLockRow> | undefined = undefined;\r\n\t\r\n\tupdateLiveGrid(): void {\r\n\t\tthis.maintenanceService.getLocks().pipe(takeUntilDestroyed(this.destroyRef)).subscribe((rows: MaintenanceLockRow[]) => {\r\n            if (this.liveGrid === undefined) {\r\n                return;\r\n            }\r\n            this.liveGrid.truncate();\r\n            this.liveGrid.updateData({\r\n                updates: rows\r\n            });\r\n\t\t});\r\n\t}\r\n\r\n\treleaseLock(): void {\r\n\t\tif (this.liveGrid === undefined || this.liveGrid.activeRow === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.dialogService.confirmAccept('delete').then(() => {\r\n\t\t\tif (this.liveGrid === undefined || this.liveGrid.activeRow === null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\r\n\t\t\tthis.maintenanceService.releaseLock(this.liveGrid.activeRow.data.module, this.liveGrid.activeRow.data.id).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.messageService.showSuccessMessage(\"Feloldás\", \"Sikeres feloldás!\");\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tdetectChanges(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.updateLiveGrid();\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.onLivedatasetUpdate('USER_LOCKS', this.destroyRef).pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.updateLiveGrid();\r\n\t\t});\r\n        this.electronService.setTitle('Lock feloldás');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-card cf-flex cf-flex-spacer-2 cf-flex-column cf-fill-height\">\r\n\t<h3>Lock feloldás</h3>\r\n\t<div class=\"cf-flex cf-flex-spacer-2 cf-ai-center\">\r\n\t\t<button cfButton class=\"cf-ml-auto\" [severity]=\"'success'\" [label]=\"'Frissítés'\" (click)=\"updateLiveGrid()\"></button>\r\n\t\t<button cfButton [severity]=\"'danger'\" [label]=\"'Feloldás'\" (click)=\"releaseLock()\"></button>\r\n\t</div>\r\n\t<cf-livegrid #liveGrid [createOptions]=\"liveGridOptions\" (activeRowChanged)=\"detectChanges()\" class=\"cf-flex-grow\"></cf-livegrid>\r\n</div>\r\n","import { DatePipe, JsonPipe, NgFor, NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { CfMessageService, CfDestroyRef, DropdownComponent, ButtonDirective, InputNumberComponent, InputTextComponent, CfDialogService, CfPermissionDirective } from \"codefoxui\";\r\nimport { MaintenanceService } from \"../../../../services/maintenance.service\";\r\nimport { Observable } from \"rxjs\";\r\nimport { ServerServiceItem, ServerServiceLogItem } from \"../../../../interfaces/maintenance.interfaces\";\r\nimport { ElectronService } from \"../../../../services/electron.service\";\r\n\r\n@Component({\r\n\tselector: 'app-network',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tFormsModule,\r\n\t\tDropdownComponent,\r\n\t\tButtonDirective,\r\n\t\tInputNumberComponent,\r\n\t\tInputTextComponent,\r\n\t\tNgFor,\r\n\t\tNgIf,\r\n\t\tDatePipe,\r\n\t\tCfPermissionDirective\r\n\t],\r\n\ttemplateUrl: './system.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SystemComponent extends CfDestroyRef implements OnInit {\r\n\t\r\n\tmaintenanceService: MaintenanceService = inject(MaintenanceService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tmessageService: CfMessageService = inject(CfMessageService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tsocketUpdates: string[] = [];\r\n\tsocket: string | null = null;\r\n\r\n\tshutdownMinutes: number | null = 10;\r\n\tshutdownMessage: string = '';\r\n\r\n\tservices: ServerServiceItem[] = [];\r\n\tserviceLog: {\r\n\t\tserverServiceItem: ServerServiceItem,\r\n\t\titems: ServerServiceLogItem[]\r\n\t} | null = null;\r\n\tserviceToogleLoading: boolean = false;\r\n\r\n\tresetSystemCountersLoading: boolean = false;\r\n\r\n\tsendSocketUpdate(): void {\r\n\t\tif (this.socket === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.maintenanceService.forceSocketUpdate(this.socket).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.messageService.showSuccessMessage(\"Sikeres kiküldés!\", \"Sikeresen kiküldted a socket frissítést!\");\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tsendShutdownMessage(): void {\r\n\t\tif (this.shutdownMinutes === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.dialogService.confirmAccept({\r\n\t\t\ttitle: 'Rendszer újraindítás broadcast',\r\n\t\t\ttext: 'Biztosan kiküldöd? A rendszer ' + this.shutdownMinutes + ' perc múlva ki fog lépteteni mindenkit!',\r\n\t\t\tacceptText: 'Küldés',\r\n\t\t\tdeclineText: 'Mégsem'\r\n\t\t}).then(() => {\r\n\t\t\tif (this.shutdownMinutes === null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.maintenanceService.sendShutdownMessage(this.shutdownMessage, this.shutdownMinutes).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {});\r\n\t\t});\r\n\t}\r\n\r\n\tsendShutdownCancel(): void {\r\n\t\tthis.dialogService.confirmAccept({\r\n\t\t\ttitle: 'Leállítás megszakítása',\r\n\t\t\ttext: 'Biztosan megszakítod?',\r\n\t\t\tacceptText: 'Megszakítás',\r\n\t\t\tdeclineText: 'Mégsem'\r\n\t\t}).then(() => {\r\n\t\t\tthis.maintenanceService.sendShutdownCancel().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {});\r\n\t\t});\r\n\t}\r\n\r\n\tgetServices(): void {\r\n\t\tthis.maintenanceService.getServices().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ services }) => {\r\n\t\t\tthis.services = services;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleService(serverServiceItem: ServerServiceItem): void {\r\n\r\n\t\tif (this.serviceToogleLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.serviceToogleLoading = true;\r\n\r\n\t\tlet obs: Observable<{}> = this.maintenanceService.startService(serverServiceItem.serviceId);\r\n\t\tif (serverServiceItem.isRunning) {\r\n\t\t\tobs = this.maintenanceService.stopService(serverServiceItem.serviceId);\r\n\t\t}\r\n\r\n\t\tobs.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.serviceToogleLoading = false;\r\n\t\t\tserverServiceItem.isRunning = !serverServiceItem.isRunning;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tgetServiceLog(serverServiceItem: ServerServiceItem): void {\r\n\t\tthis.maintenanceService.getServiceLog(serverServiceItem.serviceId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ items }) => {\r\n\t\t\tthis.serviceLog = {\r\n\t\t\t\tserverServiceItem,\r\n\t\t\t\titems\r\n\t\t\t};\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tcloseServiceLog(): void {\r\n\t\tthis.serviceLog = null;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tresetSystemCounters(): void {\r\n\t\tthis.resetSystemCountersLoading = true;\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.maintenanceService.resetSystemCounters().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.messageService.showSuccessMessage(\"Sikeres újratöltés!\", \"Sikeresen újratöltötted a számlálókat!\");\r\n\t\t\tthis.resetSystemCountersLoading = false;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.maintenanceService.systemInit().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ socketUpdates }) => {\r\n\t\t\tthis.socketUpdates = socketUpdates;\r\n\t\t\tthis.socket = socketUpdates[0];\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tthis.getServices();\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n        this.electronService.setTitle('Rendszer');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-vgrid\">\r\n\r\n    <div class=\"cf-card cf-vgrid\" *hasPermission=\"'maintenance.systemcounters'\">\r\n\t\t<h3>Számlálók újratöltése</h3>\r\n\t\t<div class=\"cf-flex cf-flex-spacer-2 cf-ai-center\">\r\n\t\t\t<button cfButton [severity]=\"'success'\" [disabled]=\"resetSystemCountersLoading\" [icon]=\"resetSystemCountersLoading ? 'loader-5-fill' : 'save-3-line'\" [loading]=\"resetSystemCountersLoading\" [label]=\"'Küldés'\" (click)=\"resetSystemCounters()\"></button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"cf-card cf-vgrid\" *hasPermission=\"'maintenance.systemforcesocketupdate'\">\r\n\t\t<h3>Kényszerített táblázat frissítés</h3>\r\n\t\t<div class=\"cf-flex cf-flex-spacer-2 cf-ai-center\">\r\n\t\t\t<cf-dropdown [width]=\"'300px'\" [label]=\"'Tábla'\" [(ngModel)]=\"socket\" [values]=\"socketUpdates\"></cf-dropdown>\r\n\t\t\t<button cfButton [severity]=\"'success'\" [label]=\"'Küldés'\" (click)=\"sendSocketUpdate()\"></button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"cf-card cf-vgrid\" *hasPermission=\"'maintenance.systemrestart'\">\r\n\t\t<h3>Teljes rendszer újraindítás</h3>\r\n\t\t<div class=\"cf-flex cf-flex-spacer-2 cf-ai-center\">\r\n\t\t\t<cf-inputtext class=\"cf-flex-grow\" [(ngModel)]=\"shutdownMessage\" [label]=\"'Üzenet'\"></cf-inputtext>\r\n\t\t\t<cf-inputnumber [(ngModel)]=\"shutdownMinutes\" [label]=\"'Perc'\"></cf-inputnumber>\r\n\t\t\t<button cfButton [severity]=\"'success'\" [icon]=\"'shut-down-line'\" [label]=\"'Küldés'\" (click)=\"sendShutdownMessage()\"></button>\r\n\t\t\t<button cfButton [severity]=\"'danger'\" [icon]=\"'close-fill'\" [label]=\"'Leállítás megszakítása'\" (click)=\"sendShutdownCancel()\"></button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ng-container *hasPermission=\"'maintenance.systemservices'\">\r\n\t\t<div class=\"cf-card cf-vgrid\">\r\n\t\t\t<div class=\"cf-flex cf-ai-center cf-mb-4\">\r\n\t\t\t\t<h3>Szolgáltatások</h3>\r\n\t\t\t\t<span class=\"cf-ml-auto\"></span>\r\n\t\t\t\t<button cfButton [label]=\"'Frissítés'\" [severity]=\"'success'\" [icon]=\"'restart-line'\" (click)=\"getServices()\"></button>\r\n\t\t\t</div>\r\n\t\t\t<div *ngFor=\"let service of services\" class=\"cf-flex cf-flex-spacer-2 cf-ai-center\">\r\n\t\t\t\t<div class=\"cf-flex-grow\">{{service.name}} - {{service.status}} <span class=\"cf-text-color-danger cf-text-bold\" *ngIf=\"service.error !== ''\">{{service.error}}</span></div>\r\n\t\t\t\t<button cfButton [label]=\"service.isRunning ? 'Leállítás' : 'Indítás'\" [severity]=\"service.isRunning ? 'danger' : 'success'\" [icon]=\"service.isRunning ? 'stop-fill' : 'play-fill'\" (click)=\"toggleService(service)\"></button>\r\n\t\t\t\t<button cfButton [label]=\"'Log'\" [severity]=\"'info'\" [icon]=\"'list-check'\" (click)=\"getServiceLog(service)\"></button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"cf-card\" *ngIf=\"serviceLog !== null\">\r\n\t\t\t<div class=\"cf-flex cf-ai-center cf-mb-4\">\r\n\t\t\t\t<h3>Szolgáltatás log: {{serviceLog.serverServiceItem.name}}</h3>\r\n\t\t\t\t<span class=\"cf-ml-auto\"></span>\r\n\t\t\t\t<button cfButton [label]=\"'Bezárás'\" [severity]=\"'danger'\" [icon]=\"'close-line'\" (click)=\"closeServiceLog()\"></button>\r\n\t\t\t</div>\r\n\t\t\t<div *ngFor=\"let serviceLogItem of serviceLog.items\" class=\"cf-flex cf-flex-spacer-2 cf-ai-center\">\r\n\t\t\t\t<div>{{serviceLogItem.date|date:'yyyy.MM.dd HH:mm:ss'}}</div>\r\n\t\t\t\t<div class=\"cf-flex-grow\">{{serviceLogItem.message}}</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonDirective, CfDialog, CfMessageService } from 'codefoxui';\r\nimport { Subscription, interval } from 'rxjs';\r\nimport { PrinterHelperService } from '../../services/printerhelper.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ElectronService } from '../../services';\r\nimport { PrintRequest } from '../../interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-printingtimermodal',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './printingtimermodal.component.html',\r\n\tstyleUrls: ['./printingtimermodal.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PrintingtimermodalComponent extends CfDialog implements OnInit {\r\n\r\n\tprinterHelperService: PrinterHelperService = inject(PrinterHelperService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tmessageService: CfMessageService = inject(CfMessageService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tprintRequest: PrintRequest | null = this.config.getData('printRequest', null);\r\n\tprintingLabelCount: number = this.config.getData('printingLabelCount', 50);\r\n\tprintingTimeout: number = this.config.getData('printingTimeOut', 90);\r\n\r\n\trepeatCount: number = 0;\r\n\tcountDown: Subscription | null = null;\r\n\tcounter = this.printingTimeout;\r\n\r\n\tget elapsedTime(): string {\r\n\t\tlet seconds = this.counter;\r\n\t\tlet minutes = Math.floor(seconds / 60);\r\n\t\tseconds = seconds % 60;\r\n\t\tminutes = seconds >= 60 ? minutes + 1 : minutes;\r\n\t\tminutes = minutes % 60;\r\n\r\n\t\treturn `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n\t}\r\n\r\n\tstartCounter(): void {\r\n\t\tthis.stopCounter();\r\n\r\n\t\tthis.countDown = interval(1000).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tif (this.counter !== 0) {\r\n\t\t\t\t--this.counter;\r\n\t\t\t} else {\r\n\t\t\t\tthis.doPrint();\r\n\t\t\t}\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tstopCounter(): void {\r\n\t\tif (this.countDown !== null) {\r\n\t\t\tthis.countDown.unsubscribe();\r\n\t\t\tthis.countDown = null;\r\n\t\t}\r\n\t}\r\n\r\n\tdoPrint(): void {\r\n\t\tthis.stopCounter();\r\n\t\tif (this.repeatCount === 0 || this.printRequest === null || this.printRequest.data === null || this.printRequest.data.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.counter = this.printingTimeout;\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.printerHelperService.print({\r\n\t\t\t...this.printRequest,\r\n\t\t\tdata: this.printRequest.data.slice(0, this.printingLabelCount)\r\n\t\t}).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.printRequest!.data.splice(0, this.printingLabelCount);\r\n\t\t\tthis.printRequest!.labelPositions = this.printRequest!.labelPositions!.map((a) => ({...a, printable: true}));\r\n\t\t\r\n\t\t\tif (this.printRequest!.data.length === 0 || this.repeatCount === 1) {\r\n\t\t\t\tthis.stopCounter();\r\n\t\t\t\tthis.close();\r\n\t\t\t\tthis.electronService.send('SET_CLOSEABLE', true);\r\n\t\t\t\tthis.messageService.showSuccessMessage(\"Sikeres nyomtatás!\", \"Sikeresen kinyomtattad az összes címkét!\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t--this.repeatCount;\r\n\t\t\t\r\n\t\t\tthis.startCounter();\r\n\t\t});\r\n\t}\r\n\r\n\tforceStop(): void {\r\n\t\tthis.stopCounter();\r\n        this.electronService.send('SET_CLOSEABLE', true);\r\n\t\tthis.close();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tif (this.printRequest === null || this.printRequest.data === null) {\r\n\t\t\tthis.close();\r\n\t\t}\r\n\r\n        this.electronService.send('SET_CLOSEABLE', false);\r\n\t\tthis.repeatCount = Math.ceil(this.printRequest!.data.length / this.printingLabelCount);\r\n\t\tthis.doPrint();\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.config.showCloseIcon = false;\r\n\t\tthis.config.ignoreKeyUp = true;\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-spacer-4 cf-flex-column\">\r\n\t<div class=\"cf-dialog-title cf-text-center cf-text-color-danger\">Várakozás a nyomtatóra</div>\r\n\r\n\t<h2 class=\"cf-text-center\">{{elapsedTime}}</h2>\r\n\r\n\t<h3 class=\"cf-text-center\">Hátravan: {{this.printRequest!.data.length}} címke</h3>\r\n\t<button cfButton [severity]=\"'success'\" [label]=\"'Számlálás leállítása, nyomtatás most'\" (click)=\"doPrint()\"></button>\r\n\t<button cfButton [severity]=\"'danger'\" [label]=\"'Az egész nyomtatás leállítása'\" (click)=\"forceStop()\"></button>\r\n</div>\r\n","import { Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, inject, OnInit } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CfDialog, CheckboxComponent, DropdownComponent, LabelValue } from 'codefoxui';\r\nimport { LabelsviewerComponent } from '../labelsviewer/labelsviewer.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ElectronService, ErpService, SettingsService } from '../../services';\r\nimport { LabelConfiguration, PrintHelperPrintLabelPosition } from '../../interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-printlabelmodal',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tDropdownComponent,\r\n\t\tLabelsviewerComponent,\r\n\t\tCheckboxComponent\r\n\t],\r\n\ttemplateUrl: './printlabelmodal.component.html',\r\n\tstyleUrls: ['./printlabelmodal.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PrintlabelmodalComponent extends CfDialog implements OnInit{\r\n\r\n\terpService: ErpService = inject(ErpService);\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tlabelIdStateName: string | null = this.config.getData('labelIdStateName', null);\r\n\tshowPrintingDelay: boolean = this.config.getData('showPrintingDelay', false);\r\n\titemsCount: number = this.config.getData('itemsCount', 0);\r\n\tstatedLabelId: string | null = this.labelIdStateName !== null ? this.electronService.getState(this.labelIdStateName as string, null) : null;\r\n\tdropDownValue: number | null = null;\r\n\treverseOrder: boolean = false;\r\n\tlabelId: number | null = this.statedLabelId !== null ? parseInt(this.statedLabelId) : null;\r\n\tlabelConf: LabelConfiguration | null = null;\r\n\tlabelGroup: LabelValue<number | null>[] = [];\r\n\r\n\t@ViewChild('labelviewer') labelViewer: LabelsviewerComponent | undefined = undefined;\r\n\r\n\tget canDelayPrint(): boolean {\r\n\t\tif (this.labelConf === null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn ((this.labelConf.rowsCount * this.labelConf.colsCount) * 5) < this.itemsCount && this.showPrintingDelay;\r\n\t}\r\n\r\n\tprint(printingDelay: boolean = false) {\r\n\t\tif (this.labelViewer === undefined || this.labelConf === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet printingLabelPositions: PrintHelperPrintLabelPosition[] = [];\r\n\t\tconst height: number = this.labelConf.useLabelSize ? this.labelConf.labelHeight : ((this.labelConf.paperHeight - this.labelConf.marginTop - this.labelConf.marginBottom - ((this.labelConf.rowsCount - 1) * this.labelConf.horizontalGap)) / this.labelConf.rowsCount);\r\n\t\tconst width: number = this.labelConf.useLabelSize ? this.labelConf.labelWidth : ((this.labelConf.paperWidth - this.labelConf.marginLeft - this.labelConf.marginRight - ((this.labelConf.colsCount - 1) * this.labelConf.verticalGap)) / this.labelConf.colsCount);\r\n\t\tlet top: number = this.labelConf.marginTop;\r\n\t\tlet left: number = this.labelConf.marginLeft;\r\n\t\tfor (let i = 1; i <= this.labelConf.rowsCount; i++) {\r\n\t\t\tfor (let j = 1; j <= this.labelConf.colsCount; j++) {\r\n\t\t\t\tprintingLabelPositions.push({\r\n\t\t\t\t\ttop,\r\n\t\t\t\t\tleft,\r\n\t\t\t\t\twidth,\r\n\t\t\t\t\theight,\r\n\t\t\t\t\tprintable: false\r\n\t\t\t\t});\r\n\t\t\t\tleft += width + this.labelConf.verticalGap;\r\n\t\t\t}\r\n\t\t\tleft = this.labelConf.marginLeft;\r\n\t\t\ttop += height + this.labelConf.horizontalGap;\r\n\t\t}\r\n\r\n\t\tif (this.reverseOrder) {\r\n\t\t\tthis.labelViewer.values.reverse();\r\n\t\t}\r\n\r\n\t\tprintingLabelPositions = printingLabelPositions.map((a, index) => ({...a, printable: !this.labelViewer!.values[index]}));\r\n\r\n\t\tif (printingDelay) {\r\n\t\t\tthis.ref.close({printingLabelPositions, reverseOrder: this.reverseOrder, printingDelay});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.ref.close({printingLabelPositions, reverseOrder: this.reverseOrder});\r\n\t}\r\n\r\n\tdetectChanges(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tlabelChanges() {\r\n\t\tif (this.labelIdStateName !== null) {\r\n\t\t\tthis.electronService.setState(this.labelIdStateName, this.labelId)\r\n\t\t}\r\n\r\n\t\tif (this.labelId === null) {\r\n\t\t\tthis.labelConf = null;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.settingsService.getLabel(this.labelId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ labelConfiguration }) => {\r\n\t\t\tthis.labelConf = labelConfiguration;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.erpService.getLabels().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ labels }) => {\r\n\t\t\tthis.labelGroup = [{label: \"Nincs kiválasztva\", value: null}, ...labels];\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t\tthis.labelChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-spacer cf-flex-column\" id=\"container\">\r\n    <div class=\"cf-dialog-title\">Etikett nyomtatása</div>\r\n    <cf-dropdown [label]=\"'Etikett'\" [values]=\"labelGroup\" [(ngModel)]=\"labelId\" (ngModelChange)=\"labelChanges()\"></cf-dropdown>\r\n    <div class=\"cf-flex cf-flex-grow cf-flex-spacer-2\">\r\n        <app-labelsviewer #labelviewer [labelConfiguration]=\"labelConf\" [reverseOrder]=\"reverseOrder\" [printMode]=\"true\" class=\"cf-flex-grow\"></app-labelsviewer>\r\n    </div>\r\n    <div class=\"cf-grid cf-cols-2 cf-ai-center\">\r\n        <div class=\"cf-flex cf-flex-left\">\r\n            <cf-checkbox [label]=\"'Fordított sorrend'\" [(ngModel)]=\"reverseOrder\" (ngModelChange)=\"detectChanges()\"></cf-checkbox>\r\n        </div>\r\n        <div class=\"cf-flex cf-flex-right cf-flex-spacer-2\">\r\n            <button type=\"submit\" [disabled]=\"labelId === null\" class=\"cf-button cf-button-success\" (click)=\"print()\">Nyomtatás</button>\r\n\t\t\t<button type=\"submit\" *ngIf=\"canDelayPrint\" [disabled]=\"labelId === null\" class=\"cf-button cf-button-success\" (click)=\"print(true)\">Nyomtatás időzítve</button>\r\n            <button type=\"button\" class=\"cf-button cf-button-danger\" (click)=\"close()\">Bezárás</button>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ButtonDirective, CfDialog, CheckboxComponent, InputNumberComponent, InputTextComponent } from 'codefoxui';\r\nimport { SettingsService } from '../../../../services/settings.service';\r\nimport { LabelConfiguration } from '../../../../interfaces/general.interfaces';\r\nimport { LabelsviewerComponent } from '../../../labelsviewer/labelsviewer.component';\r\n\r\n@Component({\r\n\tselector: 'app-labelseditor',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tInputNumberComponent,\r\n\t\tInputTextComponent,\r\n\t\tCheckboxComponent,\r\n\t\tLabelsviewerComponent,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './labelseditor.component.html',\r\n\tstyleUrls: ['./labelseditor.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LabeleditorComponent extends CfDialog implements OnInit {\r\n\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\tlabelId: number | null = null;\r\n\tvalues: boolean[] = [];\r\n\r\n\tformGroup: FormGroup = new FormGroup({\r\n\t\tname: new FormControl('', [Validators.required]),\r\n\t\tpaperWidth: new FormControl(210, [Validators.required]),\r\n\t\tpaperHeight: new FormControl(297, [Validators.required]),\r\n\t\trowsCount: new FormControl(1, [Validators.required]),\r\n\t\tcolsCount: new FormControl(1, [Validators.required]),\r\n\t\tmarginTop: new FormControl(0, [Validators.required]),\r\n\t\tmarginBottom: new FormControl(0, [Validators.required]),\r\n\t\tmarginLeft: new FormControl(0, [Validators.required]),\r\n\t\tmarginRight: new FormControl(0, [Validators.required]),\r\n\t\tuseLabelSize: new FormControl(false),\r\n\t\thorizontalGap: new FormControl(0, [Validators.required]),\r\n\t\tverticalGap: new FormControl(0, [Validators.required]),\r\n\t\tlabelWidth: new FormControl(0, [Validators.required]),\r\n\t\tlabelHeight: new FormControl(0, [Validators.required])\r\n\t})\r\n\r\n\tsave(): void {\r\n\t\tconst labelConfiguration: LabelConfiguration = this.formGroup.value;\r\n\t\tif (this.labelId === null) {\r\n\t\t\tthis.settingsService.createLabel(labelConfiguration).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.close(true);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.settingsService.updateLabel(this.labelId, labelConfiguration).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.close(true);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.formGroup.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tif (this.labelId !== null) {\r\n\t\t\tthis.settingsService.getLabel(this.labelId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ labelConfiguration }) => {\r\n\t\t\t\tthis.formGroup.patchValue(labelConfiguration);\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.labelId = this.config.getData('labelId');\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-spacer cf-flex-column\" id=\"container\">\r\n    <div class=\"cf-dialog-title\" *ngIf=\"!labelId\">Új etikett hozzáadása</div>\r\n    <div class=\"cf-dialog-title\" *ngIf=\"labelId\">Etikett szerkesztése</div>\r\n    <div class=\"cf-flex cf-flex-grow cf-flex-spacer-2\">\r\n        <app-labelsviewer [labelConfiguration]=\"formGroup.value\" class=\"cf-flex-grow\"></app-labelsviewer>\r\n        <div id=\"options\">\r\n            <form [formGroup]=\"formGroup\" class=\"cf-grid cf-cols-2\">\r\n                <cf-inputtext class=\"cf-col-2\" [label]=\"'Név'\" formControlName=\"name\"></cf-inputtext>\r\n                <cf-checkbox class=\"cf-col-2\" [label]=\"'Cimke méret szerint'\" formControlName=\"useLabelSize\">\r\n                </cf-checkbox>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Szélesség\" [displayButtons]=\"true\" [min]=\"0\" [max]=\"420\" *ngIf=\"formGroup.controls['useLabelSize'].value\" formControlName=\"labelWidth\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Magasság\" [displayButtons]=\"true\" [min]=\"0\" [max]=\"420\" *ngIf=\"formGroup.controls['useLabelSize'].value\" formControlName=\"labelHeight\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Papír szélesség\" [displayButtons]=\"true\" [min]=\"10\" [max]=\"420\" *ngIf=\"!formGroup.controls['useLabelSize'].value\" formControlName=\"paperWidth\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Papír magasság\" [displayButtons]=\"true\" [min]=\"10\" [max]=\"420\" *ngIf=\"!formGroup.controls['useLabelSize'].value\" formControlName=\"paperHeight\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'db'\" label=\"Sorok száma\" [displayButtons]=\"true\" [min]=\"1\" [max]=\"30\" formControlName=\"rowsCount\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'db'\" label=\"Oszlopok száma\" [displayButtons]=\"true\" [min]=\"1\" [max]=\"30\" formControlName=\"colsCount\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Felső margó\" [displayButtons]=\"true\" [min]=\"0\" [max]=\"100\" formControlName=\"marginTop\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Alsó margó\" [displayButtons]=\"true\" [min]=\"0\" [max]=\"100\" formControlName=\"marginBottom\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Bal margó\" [displayButtons]=\"true\" [min]=\"0\" [max]=\"100\" formControlName=\"marginLeft\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Jobb margó\" [displayButtons]=\"true\" [min]=\"0\" [max]=\"100\" formControlName=\"marginRight\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Vízszintes köz\" [displayButtons]=\"true\" [min]=\"0\" [max]=\"100\" formControlName=\"horizontalGap\"></cf-inputnumber>\r\n                <cf-inputnumber [suffix]=\"'mm'\" label=\"Függőleges köz\" [displayButtons]=\"true\" [min]=\"0\" [max]=\"100\" formControlName=\"verticalGap\"></cf-inputnumber>\r\n            </form>\r\n        </div>\r\n    </div>\r\n    <div class=\"cf-col-2 cf-flex cf-flex-spacer-2 cf-flex-right\">\r\n        <button cfButton [severity]=\"'success'\" type=\"submit\" [disabled]=\"formGroup.invalid\" (click)=\"save()\">Mentés</button>\r\n        <button cfButton [severity]=\"'danger'\" type=\"button\" (click)=\"close()\">Bezárás</button>\r\n    </div>\r\n</div>\r\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CfDialogService, CfDestroyRef, CardHeaderComponent, ButtonDirective, CfPermissionDirective } from 'codefoxui';\r\nimport { LiveGridColumnAlignment, LiveGridColumnType, LiveGridComponent, LiveGridOptions } from 'codefoxlivegrid';\r\nimport { ElectronService } from '../../../../services/electron.service';\r\nimport { SettingsService } from '../../../../services/settings.service';\r\nimport { LabelRow } from '../../../../interfaces/settings.interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-labels',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCardHeaderComponent,\r\n\t\tButtonDirective,\r\n\t\tLiveGridComponent,\r\n\t\tCfPermissionDirective\r\n\t],\r\n\ttemplateUrl: './labels.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LabelsComponent extends CfDestroyRef {\r\n\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tlabelsLiveGridOptions: LiveGridOptions<LabelRow> = {\r\n\t\tidField: 'labelId',\r\n\t\tname: 'labels',\r\n\t\tendPoint: ['labels'],\r\n\t\tupdateOn: this.electronService.onLivedatasetUpdate('LABELS', this.destroyRef),\r\n\t\tcolumns: [{\r\n\t\t\ttitle: 'Azonosító',\r\n\t\t\tfield: 'labelId',\r\n\t\t\ttype: LiveGridColumnType.NUMBER\r\n\t\t}, {\r\n\t\t\ttitle: 'Megnevezés',\r\n\t\t\tfield: 'name',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Műveletek',\r\n\t\t\tfield: 'actions',\r\n\t\t\ttype: LiveGridColumnType.ACTIONS,\r\n\t\t\talign: LiveGridColumnAlignment.CENTER,\r\n\t\t\tactions: [{\r\n\t\t\t\ttitle: 'Szerkesztés',\r\n\t\t\t\tpermission: 'labels.modify',\r\n\t\t\t\ticon: '\\u{ec80}',\r\n\t\t\t\tcallback: ({row}) => {\r\n\t\t\t\t\tthis.openLabelEditor(row.id);\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\ttitle: 'Törlés',\r\n\t\t\t\tpermission: 'labels.delete',\r\n\t\t\t\ticon: '\\u{ec26}',\r\n\t\t\t\tcallback: ({row}) => {\r\n\t\t\t\t\tthis.delete(row.id);\r\n\t\t\t\t}\r\n\t\t\t}]\r\n\t\t}]\r\n\t}\r\n\r\n\topenLabelEditor(labelId: number | null = null): void {\r\n\t\tthis.dialogService.openImport(() => import('../labeleditor/labelseditor.component').then(c => c.LabeleditorComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\tlabelId\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(labelId: number): void {\r\n\t\tthis.dialogService.confirmAccept('delete').then(() => {\r\n\t\t\tthis.settingsService.deleteLabel(labelId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {});\r\n\t\t});\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Etikettek');\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-column cf-flex-spacer-2 cf-fill-height\">\r\n\t<cf-card-header [title]=\"'Etikettek'\">\r\n\t\t<button cfButton class=\"cf-ml-auto\" [severity]=\"'success'\" type=\"button\" [label]=\"'Új etikett hozzáadása'\" (click)=\"openLabelEditor()\" *hasPermission=\"'labels.modify'\"></button>\r\n\t</cf-card-header>\r\n\t\r\n\t<cf-livegrid [createOptions]=\"labelsLiveGridOptions\" class=\"cf-flex-grow\"></cf-livegrid>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ActivatedRoute, RouterOutlet } from '@angular/router';\r\nimport { MenuItem, FullPageComponent } from 'codefoxui';\r\nimport { ElectronService } from '../../../../services/electron.service';\r\n\r\n@Component({\r\n\tselector: 'app-settings',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tRouterOutlet,\r\n\t\tFullPageComponent\r\n\t],\r\n\ttemplateUrl: './settings.component.html',\r\n\tstyleUrls: ['./settings.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SettingsComponent {\r\n\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tactivatedRoute: ActivatedRoute = inject(ActivatedRoute);\r\n\r\n\tmenuItems: MenuItem[] = [\r\n        { routerLink: ['labels'], title: 'Etikettek', permissions: ['labels.read'] },\r\n\t\t{ routerLink: ['users'], title: 'Felhasználók', permissions: ['users.read'] },\r\n\t\t{ routerLink: ['usergroups'], title: 'Felhasználói csoportok', permissions: ['usergroups.read'] },\r\n\t\t{ routerLink: ['workstations'], title: 'Munkaállomások', permissions: ['workstations.read'] },\r\n\t\t{ routerLink: ['countries'], title: 'Országok szerkesztése', permissions: ['countries.read'] },\r\n\t\t{ routerLink: ['currencies'], title: 'Devizanemek', permissions: ['currencies.read'] },\r\n\t];\r\n\r\n\tconstructor() {\r\n\t\tthis.electronService.setTitle('Beállítások');\r\n\t\tconst menuItems: MenuItem[] | undefined = this.activatedRoute.snapshot.data['menuItems'];\r\n\t\tif (menuItems !== undefined) {\r\n\t\t\tthis.menuItems.push(...menuItems);\r\n\t\t}\r\n\t}\r\n}\r\n","<cf-fullpage [menuItems]=\"menuItems\" [menuClasses]=\"'cf-pt-4 menu-sidebar'\" [contentClasses]=\"'cf-p-4'\" [menuWidth]=\"'260px'\">\r\n    <router-outlet></router-outlet>\r\n</cf-fullpage>","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ButtonDirective, CfDialog, CheckboxComponent, InputNumberComponent, InputTextComponent, LabelValue, ListboxComponent } from 'codefoxui';\r\nimport { UserEditor } from '../../../../interfaces/settings.interfaces';\r\nimport { SettingsService } from '../../../../services/settings.service';\r\n\r\n@Component({\r\n\tselector: 'app-usereditor',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tInputTextComponent,\r\n\t\tInputNumberComponent,\r\n\t\tCheckboxComponent,\r\n\t\tListboxComponent,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './usereditor.component.html',\r\n\tstyleUrls: ['./usereditor.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UsereditorComponent extends CfDialog implements OnInit {\r\n\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\tuserId: number | null = null;\r\n\tuserGroups: LabelValue<number>[] = [];\r\n\r\n\tformGroup: FormGroup = new FormGroup({\r\n\t\tusername: new FormControl('', [Validators.required]),\r\n\t\tfullname: new FormControl('', [Validators.required]),\r\n\t\tphone: new FormControl(''),\r\n\t\tpassword: new FormControl(''),\r\n\t\tactive: new FormControl(false),\r\n\t\tuserGroups: new FormControl([]),\r\n\t});\r\n\r\n\tsave(): void {\r\n\t\tconst userEditor: UserEditor = this.formGroup.value;\r\n\t\tif (this.userId === null) {\r\n\t\t\tthis.settingsService.createUser(userEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.close(true);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.settingsService.updateUser(this.userId, userEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.close(true);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.settingsService.getUserGroups().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ items }) => {\r\n\t\t\tthis.userGroups = items;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tif (this.userId !== null) {\r\n\t\t\tthis.settingsService.getUser(this.userId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ userEditor }) => {\r\n\t\t\t\tthis.formGroup.patchValue(userEditor);\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.userId = this.config.getData('userId');\r\n\t}\r\n}\r\n","<div class=\"cf-dialog-title\" *ngIf=\"userId === null\">Felhasználó hozzáadása</div>\r\n<div class=\"cf-dialog-title\" *ngIf=\"userId !== null\">Felhasználó szerkesztése</div>\r\n\r\n<form [formGroup]=\"formGroup\" class=\"cf-mt-4\">\r\n\t<div class=\"cf-grid cf-cols-2\">\r\n\t\t<div class=\"cf-col-1\">\r\n\t\t\t<div class=\"cf-vgrid\">\r\n\t\t\t\t<cf-inputtext [label]=\"'Felhasználónév'\" formControlName=\"username\"></cf-inputtext>\r\n\t\t\t\t<cf-inputtext [label]=\"'Teljes név'\" formControlName=\"fullname\"></cf-inputtext>\r\n\t\t\t\t<cf-inputtext [label]=\"'Telefonszám'\" formControlName=\"phone\"></cf-inputtext>\r\n\t\t\t\t<cf-inputtext [label]=\"'Jelszó'\" formControlName=\"password\" [type]=\"'password'\"></cf-inputtext>\r\n\t\t\t\t<cf-checkbox [label]=\"'Aktív'\" formControlName=\"active\"></cf-checkbox>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"cf-col-1\" id=\"wrapper\">\r\n\t\t\t<cf-listbox id=\"listbox\" [label]=\"'Felhasználói csoportok'\" [checkbox]=\"true\" [values]=\"userGroups\" formControlName=\"userGroups\"></cf-listbox>\r\n\t\t</div>\r\n\t\t<div class=\"cf-col-2 cf-flex-spacer-2 cf-flex cf-flex-right\">\r\n\t\t\t<button cfButton [severity]=\"'success'\" type=\"button\" [disabled]=\"formGroup.invalid\" (click)=\"save()\">Mentés</button>\r\n\t\t\t<button cfButton [severity]=\"'danger'\" type=\"button\" (click)=\"close()\">Bezárás</button>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ButtonDirective, CfDialog, CheckboxComponent, InputTextComponent, TreeComponent } from 'codefoxui';\r\nimport { Permission, UserGroupEditor } from '../../../../interfaces/settings.interfaces';\r\nimport { SettingsService } from '../../../../services/settings.service';\r\n\r\n@Component({\r\n\tselector: 'app-usergroupeditor',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tButtonDirective,\r\n\t\tInputTextComponent,\r\n\t\tTreeComponent,\r\n\t\tCheckboxComponent\r\n\t],\r\n\ttemplateUrl: './usergroupeditor.component.html',\r\n\tstyleUrls: ['./usergroupeditor.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UsergroupeditorComponent extends CfDialog implements OnInit {\r\n\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tfb: FormBuilder = inject(FormBuilder);\r\n\r\n\tuserGroupId: number | null = null;\r\n\tpermissions: Permission[] = [];\r\n\t\r\n\tformGroup = this.fb.group({\r\n\t\tname: this.fb.nonNullable.control('', [Validators.required]),\r\n\t\tgodmode: this.fb.nonNullable.control(false),\r\n\t\tpermissions: this.fb.nonNullable.control<string[]>([])\r\n\t});\r\n\t\r\n\t@ViewChild('tree') exampleTree1: TreeComponent | undefined = undefined;\r\n\r\n\tsave(): void {\r\n\t\tconst userGroupEditor: UserGroupEditor = this.formGroup.getRawValue();\r\n\t\tif (this.userGroupId === null) {\r\n\t\t\tthis.settingsService.createUserGroup(userGroupEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.ref.close(true);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.settingsService.updateUserGroup(this.userGroupId, userGroupEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.ref.close(true);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.settingsService.getPermissions().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ permissions }) => {\r\n\t\t\tthis.permissions = permissions;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tif (this.userGroupId !== null) {\r\n\t\t\tthis.settingsService.getUserGroup(this.userGroupId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ userGroupEditor }) => {\r\n\t\t\t\tthis.formGroup.patchValue(userGroupEditor);\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.formGroup.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tthis.userGroupId = this.config.getData('userGroupId');\r\n\t}\r\n}\r\n\r\n","<div class=\"cf-dialog-title\" *ngIf=\"userGroupId === null\">Felhasználói csoport hozzáadása</div>\r\n<div class=\"cf-dialog-title\" *ngIf=\"userGroupId !== null\">Felhasználói csoport szerkesztése</div>\r\n\r\n<form [formGroup]=\"formGroup\" class=\"cf-mt-4\">\r\n\t<div class=\"cf-grid cf-cols-4\">\r\n\t\t<cf-inputtext [label]=\"'Név'\" formControlName=\"name\" class=\"cf-col-4\"></cf-inputtext>\r\n\t\t<div class=\"cf-col-4\">\r\n\t\t\t<cf-checkbox [label]=\"'Mindig, mindenhez joga van'\" formControlName=\"godmode\"></cf-checkbox>\r\n\t\t</div>\r\n\t\t<div class=\"cf-col-4 cf-flex cf-flex-spacer-2 cf-flex-left\">\r\n\t\t\t<button type=\"button\" [disabled]=\"formGroup.controls.godmode.value\" class=\"cf-button cf-button-success\" (click)=\"tree.selectAllNodes()\">Összes kijelölése</button>\r\n\t\t\t<button type=\"button\" [disabled]=\"formGroup.controls.godmode.value\" class=\"cf-button cf-button-success\" (click)=\"tree.deselectAllNodes()\">Összes kijelölés törlése</button>\r\n\t\t</div>\r\n\t\t<div class=\"cf-col-4\">\r\n\t\t\t<div class=\"max-height\">\r\n\t\t\t\t<cf-tree #tree [disabled]=\"formGroup.controls.godmode.value\" [values]=\"permissions\" [valueId]=\"'permissionId'\" [labelId]=\"'name'\" [deletable]=\"false\" formControlName=\"permissions\" [leafValuesOnly]=\"true\"></cf-tree>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"cf-col-2 cf-flex cf-flex-left\">\r\n\t\t\t<button type=\"button\" class=\"cf-button cf-button-success cf-mr-2\" (click)=\"tree.openAllNodes()\">Kibontás</button>\r\n\t\t\t<button type=\"button\" class=\"cf-button cf-button-success\" (click)=\"tree.closeAllNodes()\">Összecsukás</button>\r\n\t\t</div>\r\n\t\t<div class=\"cf-col-2 cf-flex-spacer-2 cf-flex cf-flex-right\">\r\n\t\t\t<button cfButton [severity]=\"'success'\" type=\"button\" [disabled]=\"formGroup.invalid\" (click)=\"save()\">Mentés</button>\r\n\t\t\t<button cfButton [severity]=\"'danger'\" type=\"button\" (click)=\"close()\">Bezárás</button>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n","import { Component, ChangeDetectionStrategy, inject, ChangeDetectorRef, OnInit } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { LiveGridColumnAlignment, LiveGridColumnType, LiveGridComponent, LiveGridOptions } from 'codefoxlivegrid';\r\nimport { CfDialogService, CfDestroyRef, CardHeaderComponent, ButtonDirective, CfPermissionDirective } from 'codefoxui';\r\nimport { ElectronService, SettingsService } from '../../../../services';\r\nimport { UserGroupRow } from '../../../../interfaces/settings.interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-usergroups',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCardHeaderComponent,\r\n\t\tButtonDirective,\r\n\t\tLiveGridComponent,\r\n\t\tCfPermissionDirective\r\n\t],\r\n\ttemplateUrl: './usergroups.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UsergroupsComponent extends CfDestroyRef implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tuserGroupsLiveGridCreateOptions: LiveGridOptions<UserGroupRow> = {\r\n\t\tidField: 'userGroupId',\r\n\t\tname: 'usergroups',\r\n\t\tendPoint: ['admin', 'usergroups'],\r\n\t\tupdateOn: this.electronService.onLivedatasetUpdate(\"USER_GROUPS\", this.destroyRef),\r\n\t\tcolumns: [{\r\n\t\t\ttitle: 'Csoport megnevezés',\r\n\t\t\tfield: 'name',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Műveletek',\r\n\t\t\tfield: 'actions',\r\n\t\t\ttype: LiveGridColumnType.ACTIONS,\r\n\t\t\talign: LiveGridColumnAlignment.CENTER,\r\n\t\t\tactions: [{\r\n\t\t\t\ttitle: 'Szerkesztés',\r\n\t\t\t\tpermission: 'usergroups.modify',\r\n\t\t\t\ticon: '\\u{ec80}',\r\n\t\t\t\tcallback: ({row}) => {\r\n\t\t\t\t\tthis.openUserGroupEditor(row.id);\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\ttitle: 'Törlés',\r\n\t\t\t\tpermission: 'usergroups.delete',\r\n\t\t\t\ticon: '\\u{ec26}',\r\n\t\t\t\tcallback: ({row}) => {\r\n\t\t\t\t\tthis.delete(row.id);\r\n\t\t\t\t}\r\n\t\t\t}]\r\n\t\t}]\r\n\t};\r\n\r\n\tdetectChanges(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tshowUserGroupPermissionTableDialog(): void {\r\n\t\tthis.dialogService.openImport(() => import('../usergroupspermissiontable/usergroupspermissiontable.component').then(c => c.UsergroupsPermissionTableComponent));\r\n\t}\r\n\r\n\topenUserGroupEditor(userGroupId: number | null = null): void {\r\n\t\tthis.dialogService.openImport(() => import('../usergroupeditor/usergroupeditor.component').then(c => c.UsergroupeditorComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\tuserGroupId\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(userGroupId: number): void {\r\n\t\tthis.dialogService.confirmAccept('delete').then(() => {\r\n\t\t\tthis.settingsService.deleteUserGroup(userGroupId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {});\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Felhasználói csoportok');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-column cf-flex-spacer-2 cf-fill-height\">\r\n\t<cf-card-header [title]=\"'Felhasználói csoportok'\">\r\n\t\t<div class=\"cf-flex cf-flex-end cf-flex-spacer-4\">\r\n\t\t\t<button cfButton [severity]=\"'success'\" type=\"button\" [label]=\"'Jogosultság táblázat'\" *hasPermission=\"'usergroups.modify'\" (click)=\"showUserGroupPermissionTableDialog()\" class=\"cf-ml-auto cf-mr-1\"></button>\r\n\t\t\t<button cfButton [severity]=\"'success'\" type=\"button\" [label]=\"'Új felhasználói csoport'\" (click)=\"openUserGroupEditor()\" *hasPermission=\"'usergroups.modify'\" class=\"cf-mr-1\"></button>\r\n\t\t</div>\r\n\t</cf-card-header>\r\n\r\n\t<cf-livegrid [createOptions]=\"userGroupsLiveGridCreateOptions\" (activeRowChanged)=\"detectChanges()\" class=\"cf-flex-grow\"></cf-livegrid>\r\n</div>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectorRef, Component, inject, OnInit } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { CfDestroyRef, InputTextComponent } from \"codefoxui\";\r\nimport { Permission, UserGroupRow } from \"../../../../interfaces/settings.interfaces\";\r\nimport { SettingsService } from \"../../../../services/settings.service\";\r\nimport { combineLatest } from \"rxjs\";\r\n\r\n@Component({\r\n\tselector: 'app-usergroupspermissiontable',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tInputTextComponent,\r\n\t],\r\n\ttemplateUrl: './usergroupspermissiontable.component.html',\r\n\tstyleUrls: ['./usergroupspermissiontable.component.scss']\r\n})\r\nexport class UsergroupsPermissionTableComponent extends CfDestroyRef implements OnInit {\r\n\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\tuserGroups: UserGroupRow[] = [];\r\n\tpermissions: Permission[] = [];\r\n\tusergroupPermissions: {[key: number]: {[key: string]: boolean}} = {};\r\n\tconnectedPermissions: {[key: number]: string[]} = {};\r\n\tpermissionQuery: string = '';\r\n\r\n\tsetHoverIds(userGroupId: number | null, permissionId: string | null): void {\r\n\t\tdocument.getElementsByClassName('permission-table-header-item-id-' + userGroupId).item(0)?.classList.add('hover');\r\n\t\tdocument.getElementsByClassName('permission-table-row-permission-id-' + permissionId).item(0)?.classList.add('hover');\r\n\t}\r\n\r\n\tremoveHoverIds(userGroupId: number | null, permissionId: string | null): void {\r\n\t\tdocument.getElementsByClassName('permission-table-header-item-id-' + userGroupId).item(0)?.classList.remove('hover');\r\n\t\tdocument.getElementsByClassName('permission-table-row-permission-id-' + permissionId).item(0)?.classList.remove('hover');\r\n\t}\r\n\r\n\tload(): void {\r\n\t\tcombineLatest([\r\n\t\t\tthis.settingsService.getPermissions(),\r\n\t\t\tthis.settingsService.getUsergroupPermissionTable()\r\n\t\t]).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(([{ permissions }, permissionTableResponse]) => {\r\n\t\t\tthis.permissions = permissions;\r\n\t\t\tthis.userGroups = permissionTableResponse.userGroups;\r\n\t\t\tthis.connectedPermissions = permissionTableResponse.permissions;\r\n\t\t\tthis.processPermissions();\r\n\r\n\t\t\t// Set godmode\r\n\t\t\tthis.userGroups.forEach((userGroup: UserGroupRow) => {\r\n\t\t\t\tthis.checkStates(userGroup);\r\n\t\t\t\tthis.usergroupPermissions[userGroup.userGroupId]['godmode'] = this.connectedPermissions[userGroup.userGroupId] !== undefined && this.connectedPermissions[userGroup.userGroupId].includes('godmode');\r\n\t\t\t});\r\n\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tget permissionsFiltered(): Permission[] {\r\n\t\tif (this.permissionQuery.length > 0) {\r\n\t\t\treturn this.filterPermissionsByQuery(JSON.parse(JSON.stringify(this.permissions)));\r\n\t\t}\r\n\t\treturn this.permissions;\r\n\t}\r\n\r\n\tqueryTree(permissions: Permission[], query: string): boolean {\r\n\t\treturn permissions.some((permission: Permission) => {\r\n\t\t\tif (permission.children.length > 0) {\r\n\t\t\t\tif (permission.name.toLocaleLowerCase().includes(query.toLocaleLowerCase())) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn this.queryTree(permission.children, query);\r\n\t\t\t}\r\n\t\t\treturn permission.name.toLocaleLowerCase().includes(query.toLocaleLowerCase());\r\n\t\t});\r\n\t}\r\n\r\n\tfilterPermissionsByQuery(permissions: Permission[]): Permission[] {\r\n\t\tlet query: string = this.permissionQuery;\r\n\t\treturn permissions.filter((permission: Permission) => {\r\n\t\t\tif (permission.children.length > 0) {\r\n\t\t\t\tif (permission.name.toLocaleLowerCase().includes(query.toLocaleLowerCase())) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tpermission.children = this.filterPermissionsByQuery(permission.children);\r\n\t\t\t\treturn this.queryTree(permission.children, query);\r\n\t\t\t}\r\n\t\t\treturn permission.name.toLocaleLowerCase().includes(query.toLocaleLowerCase());\r\n\t\t});\r\n\t}\r\n\r\n\tpermissionQueryChanged(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tprocessPermissions(permissions: Permission[] = this.permissions): void {\r\n\t\tpermissions.forEach((permission: Permission) => {\r\n\t\t\tif (permission.children.length > 0) {\r\n\t\t\t\tthis.processPermissions(permission.children);\r\n\t\t\t} else {\r\n\t\t\t\tthis.userGroups.forEach((userGroup: UserGroupRow) => {\r\n\t\t\t\t\tconst hasPermission: boolean = this.connectedPermissions[userGroup.userGroupId] !== undefined && this.connectedPermissions[userGroup.userGroupId].includes(permission.permissionId);\r\n\t\t\t\t\tif (this.usergroupPermissions[userGroup.userGroupId] === undefined) {\r\n\t\t\t\t\t\tthis.usergroupPermissions[userGroup.userGroupId] = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.usergroupPermissions[userGroup.userGroupId][permission.permissionId] = hasPermission;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcheckGodmode(userGroup: UserGroupRow): void {\r\n\t\tconst newGodmodeStatus: boolean = !this.usergroupPermissions[userGroup.userGroupId]['godmode'];\r\n\t\tif (newGodmodeStatus) {\r\n\t\t\tfor (let key of Object.keys(this.usergroupPermissions[userGroup.userGroupId])) {\r\n\t\t\t\tthis.usergroupPermissions[userGroup.userGroupId][key] = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.usergroupPermissions[userGroup.userGroupId]['godmode'] = newGodmodeStatus;\r\n\t\tthis.updatePermissions(userGroup.userGroupId);\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tcheckPermission(userGroup: UserGroupRow, permission: Permission): void {\r\n\t\tif (permission.children.length > 0) {\r\n\t\t\tthis.usergroupPermissions[userGroup.userGroupId][permission.permissionId] = !this.usergroupPermissions[userGroup.userGroupId][permission.permissionId];\r\n\t\t\tthis.setAllChildren(userGroup, permission, this.usergroupPermissions[userGroup.userGroupId][permission.permissionId]);\r\n\t\t} else {\r\n\t\t\tthis.usergroupPermissions[userGroup.userGroupId][permission.permissionId] = !this.usergroupPermissions[userGroup.userGroupId][permission.permissionId];\r\n\t\t}\r\n\t\tthis.usergroupPermissions[userGroup.userGroupId]['godmode'] = false;\r\n\t\tthis.checkStates(userGroup);\r\n\t\tthis.updatePermissions(userGroup.userGroupId);\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tsetAllChildren(userGroup: UserGroupRow, permission: Permission, state: boolean): void {\r\n\t\tfor (let i = 0; i < permission.children.length; i++) {\r\n\t\t\tif (permission.children[i].children.length > 0) {\r\n\t\t\t\tthis.setAllChildren(userGroup, permission.children[i], state);\r\n\t\t\t} else {\r\n\t\t\t\tthis.usergroupPermissions[userGroup.userGroupId][permission.children[i].permissionId] = state;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Check states\r\n\tcheckStates(userGroup: UserGroupRow, permissions: Permission[] = this.permissions): void {\r\n\t\tfor (let i = 0; i < permissions.length; i++) {\r\n\t\t\tthis.checkStates(userGroup, permissions[i].children);\r\n\t\t\tif (permissions[i].children.length > 0) {\r\n\t\t\t\tthis.usergroupPermissions[userGroup.userGroupId][permissions[i].permissionId] = this.isAllChildSelected(userGroup, permissions[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisAllChildSelected(userGroup: UserGroupRow, permission: Permission): boolean {\r\n\t\tif (permission.children.length === 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn permission.children.every((childPermission: Permission) => {\r\n\t\t\tif (childPermission.children.length > 0) {\r\n\t\t\t\treturn this.isAllChildSelected(userGroup, childPermission);\r\n\t\t\t}\r\n\t\t\treturn this.usergroupPermissions[userGroup.userGroupId][childPermission.permissionId];\r\n\t\t});\r\n\t}\r\n\r\n\tupdatePermissions(userGroupId: number): void {\r\n\r\n\t\tconst permissionIds: string[] = [];\r\n\t\tObject.keys(this.usergroupPermissions[userGroupId]).forEach((key: string) => {\r\n\t\t\tif (this.usergroupPermissions[userGroupId][key]) {\r\n\t\t\t\tpermissionIds.push(key);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.settingsService.updateUsergroupPermissionTable({\r\n\t\t\tuserGroupId,\r\n\t\t\tpermissions: permissionIds\r\n\t\t}).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tpermissionIds.forEach((permissionId: string) => {\r\n\t\t\t\tthis.usergroupPermissions[userGroupId][permissionId]\r\n\t\t\t});\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.load();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}\r\n","<div class=\"permission-table-outer cf-fill-height\">\r\n\t<div class=\"permission-table\">\r\n\t\t<div class=\"permission-table-header\">\r\n\t\t\t<div class=\"permission-table-row-permission\">\r\n\t\t\t\t<cf-inputtext [label]=\"'Jogosultság keresése'\" [(ngModel)]=\"permissionQuery\" (ngModelChange)=\"permissionQueryChanged()\"></cf-inputtext>\r\n\t\t\t</div>\r\n\t\t\t<div *ngFor=\"let userGroup of userGroups\" [class]=\"'permission-table-header-item permission-table-header-item-id-' + userGroup.userGroupId\"><div class=\"permission-table-header-usergroup-name\">{{userGroup.name}}</div></div>\r\n\t\t</div>\r\n\t\t<div class=\"permission-table-row\">\r\n\t\t\t<div class=\"permission-table-row-permission depth-0 permission-table-row-permission-id-godmode\">Mindig, mindenhez joga van</div>\r\n\t\t\t<div *ngFor=\"let userGroup of userGroups\" class=\"permission-table-row-item\" (mouseenter)=\"setHoverIds(userGroup.userGroupId, 'godmode')\" (mouseleave)=\"removeHoverIds(userGroup.userGroupId, 'godmode')\" (click)=\"checkGodmode(userGroup)\">\r\n\t\t\t\t<ng-container *ngIf=\"usergroupPermissions[userGroup.userGroupId]['godmode']\">X</ng-container>\r\n\t\t\t\t<ng-container *ngIf=\"!usergroupPermissions[userGroup.userGroupId]['godmode']\"></ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<ng-container [ngTemplateOutlet]=\"permissionsTemplate\" [ngTemplateOutletContext]=\"{permissionsList: permissionsFiltered, depth: 0}\"></ng-container>\r\n\t</div>\r\n</div>\r\n\r\n<ng-template #permissionsTemplate let-permissionsList=\"permissionsList\" let-depth=\"depth\">\r\n\t<ng-container *ngFor=\"let permission of permissionsList\">\r\n\t\t<div class=\"permission-table-row\">\r\n\t\t\t<div [class]=\"'permission-table-row-permission depth-' + depth + ' permission-table-row-permission-id-' + permission.permissionId\">{{permission.name}}</div>\r\n\t\t\t<div *ngFor=\"let userGroup of userGroups\" class=\"permission-table-row-item\" (mouseenter)=\"setHoverIds(userGroup.userGroupId, permission.permissionId)\" (mouseleave)=\"removeHoverIds(userGroup.userGroupId, permission.permissionId)\" (click)=\"checkPermission(userGroup, permission)\">\r\n\t\t\t\t<ng-container *ngIf=\"usergroupPermissions[userGroup.userGroupId][permission.permissionId]\">X</ng-container>\r\n\t\t\t\t<ng-container *ngIf=\"!usergroupPermissions[userGroup.userGroupId][permission.permissionId]\"></ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<ng-container *ngIf=\"permission.children.length > 0\">\r\n\t\t\t<ng-container [ngTemplateOutlet]=\"permissionsTemplate\" [ngTemplateOutletContext]=\"{permissionsList: permission.children, depth: depth + 1}\"></ng-container>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</ng-template>\r\n","import { Component, ChangeDetectionStrategy, inject, ChangeDetectorRef, OnInit } from '@angular/core';\r\nimport { LiveGridColumnAlignment, LiveGridColumnType, LiveGridComponent, LiveGridOptions } from 'codefoxlivegrid';\r\nimport { CfDialogService, CfDestroyRef, CardHeaderComponent, ButtonDirective, CfPermissionDirective } from 'codefoxui';\r\nimport { ElectronService } from '../../../../services/electron.service';\r\nimport { UserRow } from '../../../../interfaces/settings.interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-users',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCardHeaderComponent,\r\n\t\tButtonDirective,\r\n\t\tLiveGridComponent,\r\n\t\tCfPermissionDirective\r\n\t],\r\n\ttemplateUrl: './users.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UsersComponent extends CfDestroyRef implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tusersLiveGridCreateOptions: LiveGridOptions<UserRow> = {\r\n\t\tidField: 'userId',\r\n\t\tname: 'users',\r\n\t\tupdateOn: this.electronService.onLivedatasetUpdate(\"USERS\", this.destroyRef),\r\n\t\tendPoint: ['admin', 'users'],\r\n\t\tcolumns: [{\r\n\t\t\ttitle: 'Felhasználónév',\r\n\t\t\tfield: 'username',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Teljes név',\r\n\t\t\tfield: 'fullname',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Aktív',\r\n\t\t\tfield: 'active',\r\n\t\t\ttype: LiveGridColumnType.BOOLEAN\r\n\t\t}, {\r\n\t\t\ttitle: 'Csoportok',\r\n\t\t\tfield: 'groups',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Műveletek',\r\n\t\t\tfield: 'actions',\r\n\t\t\ttype: LiveGridColumnType.ACTIONS,\r\n\t\t\talign: LiveGridColumnAlignment.CENTER,\r\n\t\t\tactions: [{\r\n\t\t\t\ttitle: 'Szerkesztés',\r\n\t\t\t\tpermission: 'users.modify',\r\n\t\t\t\ticon: '\\u{ec80}',\r\n\t\t\t\tcallback: ({row}) => {\r\n\t\t\t\t\tthis.openUserEditor(row.id);\r\n\t\t\t\t}\r\n\t\t\t}]\r\n\t\t}]\r\n\t};\r\n\t\r\n\topenUserEditor(userId: number | null = null): void {\r\n\t\tthis.dialogService.openImport(() => import('../usereditor/usereditor.component').then(c => c.UsereditorComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\tuserId\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\topenUserSettingsCopyModal(): void {\r\n\t\tthis.dialogService.openImport(() => import('../usersettingscopy/usersettingscopy.component').then( c => c.UserSettingsCopyModalComponent));\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Felhasználók');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-column cf-flex-spacer-2 cf-fill-height\">\r\n\t<cf-card-header [title]=\"'Felhasználók'\">\r\n\t\t<div class=\"cf-flex cf-flex-end cf-flex-spacer-4\">\r\n\t\t\t<button cfButton [severity]=\"'warning'\" type=\"button\" [label]=\"'Felhasználói beállítások másolása'\" (click)=\"openUserSettingsCopyModal()\" *hasPermission=\"'users.copysettings'\"></button>\r\n\t\t\t<button cfButton [severity]=\"'success'\" type=\"button\" [label]=\"'Új felhasználó'\" (click)=\"openUserEditor()\" *hasPermission=\"'users.modify'\"></button>\r\n\t\t</div>\r\n\t</cf-card-header>\r\n\t\r\n\t<cf-livegrid [createOptions]=\"usersLiveGridCreateOptions\" class=\"cf-flex-grow\"></cf-livegrid>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ButtonDirective, CfDialog, InputTextComponent } from 'codefoxui';\r\nimport { WorkstationEditor } from '../../../../interfaces/settings.interfaces';\r\nimport { SettingsService } from '../../../../services/settings.service';\r\n\r\n@Component({\r\n\tselector: 'app-workstationeditor',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tInputTextComponent,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './workstationeditor.component.html',\r\n\tstyleUrls: ['./workstationeditor.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WorkstationeditorComponent extends CfDialog implements OnInit {\r\n\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n    cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\tworkstationId: number | null = null;\r\n\r\n\tformGroup: FormGroup = new FormGroup({\r\n\t\tname: new FormControl('', [Validators.required])\r\n\t});\r\n\r\n\tsave(): void {\r\n\t\tconst workstationEditor: WorkstationEditor = this.formGroup.value;\r\n\t\tif (this.workstationId === null) {\r\n\t\t\tthis.settingsService.createWorkStation(workstationEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.close(true);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.settingsService.updateWorkStation(this.workstationId, workstationEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\t\tthis.close(true);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tif (this.workstationId !== null) {\r\n\t\t\tthis.settingsService.getWorkStation(this.workstationId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ workstationEditor }) => {\r\n\t\t\t\tthis.formGroup.patchValue(workstationEditor);\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.workstationId = this.config.getData('workstationId');\r\n\t}\r\n}\r\n","<div class=\"cf-dialog-title\" *ngIf=\"workstationId === null\">Munkaállomás hozzáadása</div>\r\n<div class=\"cf-dialog-title\" *ngIf=\"workstationId !== null\">Munkaállomás szerkesztése</div>\r\n\r\n<form [formGroup]=\"formGroup\" class=\"cf-mt-4\">\r\n    <div class=\" cf-vgrid\">\r\n        <cf-inputtext [label]=\"'Megnevezés'\" formControlName=\"name\"></cf-inputtext>\r\n        <div class=\"cf-flex cf-flex-spacer-2 cf-flex-right\">\r\n            <button cfButton [severity]=\"'success'\" type=\"button\" [disabled]=\"formGroup.invalid\" (click)=\"save()\">Mentés</button>\r\n            <button cfButton [severity]=\"'danger'\" type=\"button\" (click)=\"close()\">Bezárás</button>\r\n        </div>\r\n    </div>\r\n</form>\r\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CfDialogService, CfDestroyRef, CardHeaderComponent, fileSize } from 'codefoxui';\r\nimport { LIVEGRID_DATE_FORMAT_SHORT_DATETIME, LiveGridColumnAlignment, LiveGridColumnType, LiveGridComponent, LiveGridOptions } from 'codefoxlivegrid';\r\nimport { ElectronService, SettingsService } from '../../../../services';\r\nimport { WorkstationsRow } from '../../../../interfaces/settings.interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-workstations',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCardHeaderComponent,\r\n\t\tLiveGridComponent\r\n\t],\r\n\ttemplateUrl: './workstations.component.html',\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WorkstationsComponent extends CfDestroyRef {\r\n\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\r\n\tworkstationsLiveGridOptions: LiveGridOptions<WorkstationsRow> = {\r\n\t\tidField: 'workstationId',\r\n\t\tname: 'workstations',\r\n\t\tendPoint: ['workstations'],\r\n\t\tupdateOn: this.electronService.onLivedatasetUpdate('WORKSTATIONS', this.destroyRef),\r\n\t\tcolumns: [{\r\n\t\t\ttitle: 'Megnevezés',\r\n\t\t\tfield: 'name',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Processzor',\r\n\t\t\tfield: 'cpu',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Memória',\r\n\t\t\tfield: 'memory',\r\n\t\t\ttype: LiveGridColumnType.STRING,\r\n            pipeFunction: ({row}) => {\r\n                return fileSize(row.data.memory * 1024 * 1024, {\r\n                    maxBase: 'mb',\r\n                    digitsInfo: '0.0-0'\r\n                });\r\n            }\r\n\t\t}, {\r\n\t\t\ttitle: 'Képernyők',\r\n\t\t\tfield: 'screens',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Utolsó belépés',\r\n\t\t\tfield: 'lastLoginDate',\r\n\t\t\ttype: LiveGridColumnType.DATE,\r\n            dateFormat: LIVEGRID_DATE_FORMAT_SHORT_DATETIME\r\n\t\t}, {\r\n\t\t\ttitle: 'Utolsó felhasználó',\r\n\t\t\tfield: 'lastLoginUserName',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Utolsó IP cím',\r\n\t\t\tfield: 'lastLoginIp',\r\n\t\t\ttype: LiveGridColumnType.STRING\r\n\t\t}, {\r\n\t\t\ttitle: 'Műveletek',\r\n\t\t\tfield: 'actions',\r\n\t\t\ttype: LiveGridColumnType.ACTIONS,\r\n\t\t\talign: LiveGridColumnAlignment.CENTER,\r\n\t\t\tactions: [{\r\n\t\t\t\ttitle: 'Szerkesztés',\r\n\t\t\t\tpermission: 'workstations.update',\r\n\t\t\t\ticon: '\\u{ec80}',\r\n\t\t\t\tcallback: ({row}) => {\r\n\t\t\t\t\tthis.openWorkstationEditor(row.id);\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\ttitle: 'Törlés',\r\n\t\t\t\tpermission: 'workstations.delete',\r\n\t\t\t\ticon: '\\u{ec26}',\r\n\t\t\t\tcallback: ({row}) => {\r\n\t\t\t\t\tthis.delete(row.id);\r\n\t\t\t\t}\r\n\t\t\t}]\r\n\t\t}]\r\n\t}\r\n\r\n\topenWorkstationEditor(workstationId: number | null = null): void {\r\n\t\tthis.dialogService.openImport(() => import('../workstationeditor/workstationeditor.component').then(c => c.WorkstationeditorComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\tworkstationId\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdelete(workstationId: number): void {\r\n\t\tthis.dialogService.confirmAccept('delete').then(() => {\r\n\t\t\tthis.settingsService.deleteWorkStation(workstationId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {});\r\n\t\t});\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Munkaállomások');\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-column cf-flex-spacer-2 cf-fill-height\">\r\n\t<cf-card-header [title]=\"'Munkaállomások'\"></cf-card-header>\r\n\t<cf-livegrid [createOptions]=\"workstationsLiveGridOptions\" class=\"cf-flex-grow\"></cf-livegrid>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { CfMessageService, CfDestroyRef, CardHeaderComponent, ButtonDirective, RadioComponent, CfPermissionDirective } from 'codefoxui';\r\nimport { Country, CountryFormGroup } from '../../../../interfaces/general.interfaces';\r\nimport { ElectronService, ErpService } from '../../../../services';\r\nimport { HelpComponent } from '../../../help/help.component';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tCardHeaderComponent,\r\n\t\tButtonDirective,\r\n\t\tRadioComponent,\r\n\t\tCfPermissionDirective,\r\n\t\tHelpComponent\r\n\t],\r\n\ttemplateUrl: './countries.component.html',\r\n\tstyleUrls: ['./countries.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CountriesComponent extends CfDestroyRef implements OnInit {\r\n\r\n\terpService: ErpService = inject(ErpService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tmessageService: CfMessageService = inject(CfMessageService);\r\n    fb: FormBuilder = inject(FormBuilder);\r\n    electronService: ElectronService = inject(ElectronService);\r\n\r\n    formGroup = this.fb.group({\r\n        countries: this.fb.array<FormGroup<CountryFormGroup>>([])\r\n    });\r\n\r\n    loading: boolean = false;\r\n\r\n\tcreateFormControl(country: Country): FormGroup<CountryFormGroup> {\r\n\t\treturn this.fb.group({\r\n\t\t\tname: this.fb.nonNullable.control(country.name),\r\n\t\t\tcountryCode: this.fb.nonNullable.control(country.countryCode),\r\n\t\t\ttype: this.fb.nonNullable.control(country.type)\r\n\t\t});\r\n\t}\r\n\r\n\tsaveCountries(): void {\r\n        this.loading = true;\r\n        this.cdr.detectChanges();\r\n\t\tthis.erpService.setCountries(this.formGroup.controls.countries.getRawValue()).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.messageService.showSuccessMessage(\"Sikeres mentés!\", \"\");\r\n\t\t}).add(() => {\r\n            this.loading = true;\r\n            this.cdr.detectChanges();\r\n        });\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.erpService.getCountries().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ countries }) => {\r\n\t\t\tcountries.forEach((country: Country) => {\r\n\t\t\t\tthis.formGroup.controls.countries.push(this.createFormControl(country), {emitEvent: false});\r\n\t\t\t});\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Országok');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<cf-card-header [title]=\"'Országok szerkesztése'\">\r\n\t<div class=\"cf-flex cf-flex-end cf-flex-spacer-4\">\r\n\t\t<app-help [url]=\"'settings.countries'\"></app-help>\r\n\t\t<button cfButton class=\"cf-ml-auto\" [severity]=\"'success'\" type=\"button\" [label]=\"'Országok mentése'\" *hasPermission=\"'countries.update'\" (click)=\"saveCountries()\"></button>\r\n\t</div>\r\n</cf-card-header>\r\n\r\n<div class=\"cf-card\" [formGroup]=\"formGroup\">\r\n\t<div [formArrayName]=\"'countries'\">\r\n\t\t<div class=\"cf-grid cf-cols-2 grid\">\r\n\t\t\t<h3>Ország</h3>\r\n\t\t\t<h3 class=\"cf-flex cf-flex-center\">Típus</h3>\r\n\t\t</div>\r\n\t\t<div class=\"cf-grid cf-cols-2 grid\" *ngFor=\"let country of formGroup.controls.countries.controls; let i = index\" [formGroupName]=\"i\">\r\n\t\t\t<span>{{country.value.name}}</span>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t<div class=\"cf-flex cf-flex-center cf-flex-spacer-4\">\r\n\t\t\t\t\t\t<cf-radio [label]=\"'EU-s tag'\" [value]=\"'EU'\" [group]=\"'countrytype-'+i\" formControlName=\"type\"></cf-radio>\r\n\t\t\t\t\t\t<cf-radio [label]=\"'Harmadik országbeli'\" [value]=\"'THIRD'\" [group]=\"'countrytype-'+i\" formControlName=\"type\"></cf-radio>\r\n\t\t\t\t\t\t<cf-radio [label]=\"'GSP'\" [value]=\"'GSP'\" [group]=\"'countrytype-'+i\" formControlName=\"type\"></cf-radio>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { AfterViewInit, Directive, ElementRef, HostListener, inject, Input } from \"@angular/core\";\r\nimport { HotkeyService } from \"../services/hotkeys.service\";\r\n\r\n@Directive({\r\n\tselector: '[hotkey]',\r\n\tstandalone: true\r\n})\r\nexport class HotkeyDirective implements AfterViewInit {\r\n\r\n\tel: ElementRef = inject(ElementRef);\r\n\thotkeyService: HotkeyService = inject(HotkeyService);\r\n\r\n\t@Input('hotkey') hotkey: string | null = null;\r\n\r\n\t@HostListener('contextmenu', ['$event'])\r\n\tcontextmenu(pointerEvent: PointerEvent): void {\r\n\t\tpointerEvent.preventDefault();\r\n\t\tpointerEvent.stopPropagation();\r\n\t\tif (this.hotkey === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.hotkeyService.setHotkey(this.hotkey);\r\n\t}\r\n\r\n\t@HostListener('mouseenter')\r\n\tmouseenter(): void {\r\n\t\tif (this.hotkey === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst attachedKey: string | null = this.hotkeyService.attachedEvents[this.hotkey] || null;\r\n\t\tif (attachedKey === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t(this.el.nativeElement as HTMLElement).title = attachedKey;\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tif (this.hotkey === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t(this.el.nativeElement as HTMLElement).setAttribute(\"data-hotkey-name\", this.hotkey);\r\n\t}\r\n}\r\n","import { Component, ChangeDetectionStrategy, ViewChild, ChangeDetectorRef, AfterViewInit, inject } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { LiveGridComponent, LiveGridOptions, LiveGridColumnType } from 'codefoxlivegrid';\r\nimport { ButtonDirective, CfDestroyRef, CfDialogService, CfMessageService, CfPermissionDirective } from 'codefoxui';\r\nimport { SettingsService } from '../../../../services/settings.service';\r\nimport { CurrenciesRow } from '../../../../interfaces/settings.interfaces';\r\nimport { HotkeyDirective } from '../../../../directives/hotkey.directive';\r\nimport { HelpComponent } from '../../../../components/help/help.component';\r\nimport { ElectronService } from '../../../../services/electron.service';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tButtonDirective,\r\n\t\tLiveGridComponent,\r\n\t\tCfPermissionDirective,\r\n\t\tHotkeyDirective,\r\n\t\tHelpComponent\r\n\t],\r\n\ttemplateUrl: './currencies.component.html',\r\n\tstyleUrls: ['./currencies.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class CurrenciesComponent extends CfDestroyRef implements AfterViewInit {\r\n\r\n\tsettingsService: SettingsService = inject(SettingsService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tmessageService: CfMessageService = inject(CfMessageService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\trouter: Router = inject(Router);\r\n\tactivatedRoute: ActivatedRoute = inject(ActivatedRoute);\r\n    \r\n\t@ViewChild('liveGrid') liveGrid: LiveGridComponent<CurrenciesRow> | undefined = undefined;\r\n    \r\n    liveGridOptions: LiveGridOptions<CurrenciesRow> = {\r\n        endPoint: [\"currencies\"],\r\n        idField: \"currencyId\",\r\n        name: \"currencies\",\r\n        updateOn: this.electronService.onLivedatasetUpdate('CURRENCIES', this.destroyRef),\r\n        columns: [{\r\n            field: 'code',\r\n            title: 'Deviza kód',\r\n            type: LiveGridColumnType.STRING\r\n        }, {\r\n            field: 'name',\r\n            title: 'Megnevezés',\r\n            type: LiveGridColumnType.STRING\r\n        }, {\r\n            field: 'exchangeRate',\r\n            title: 'Árfolyam felülbírálás',\r\n            type: LiveGridColumnType.NUMBER\r\n        }]\r\n    };\r\n\r\n\tget activeRowId(): number | null {\r\n\t\treturn this.liveGrid !== undefined && this.liveGrid.activeRow !== null ? this.liveGrid.activeRow.id : null;\r\n\t}\r\n\r\n\topenEditor(currencyId: number | null = null): void {\r\n        this.dialogService.openImport(() => import('../currencyeditor/currencyeditor.component').then(c => c.CurrencyeditorComponent), {\r\n            data: {\r\n                currencyId\r\n            }\r\n        });\r\n\t}\r\n\r\n\tdelete(): void {\r\n\t\tif (this.activeRowId === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n        this.settingsService.deleteCurrency(this.activeRowId).with({\r\n            confirmAccept: 'delete',\r\n            destroyRef: this.destroyRef,\r\n            messageAfterSuccess: {\r\n                title: 'Törlés',\r\n                message: 'Sikeres törlés'\r\n            }\r\n        }).subscribe(() => {});\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.electronService.setTitle('Devizanemek');\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-column cf-flex-spacer-2 cf-fill-height\">\r\n    <div class=\"cf-flex cf-flex-wrap cf-flex-spacer-2 cf-mb-2\">\r\n        <button cfButton type=\"button\" [severity]=\"'success'\" [label]=\"'Új devizanem'\" *hasPermission=\"'currencies.modify'\" [hotkey]=\"'currencies.create'\" (click)=\"openEditor()\"></button>\r\n        <button cfButton type=\"button\" [disabled]=\"activeRowId === null\" [severity]=\"'info'\" [label]=\"'Módosítás'\" *hasPermission=\"'currencies.modify'\" (click)=\"openEditor(activeRowId)\" [hotkey]=\"'currencies.update'\"></button>\r\n        <button cfButton type=\"button\" [disabled]=\"activeRowId === null\" [severity]=\"'danger'\" [label]=\"'Törlés'\" *hasPermission=\"'currencies.delete'\" (click)=\"delete()\" [hotkey]=\"'currencies.delete'\"></button>\r\n        <app-help [url]=\"'currencies.list'\"></app-help>\r\n    </div>\r\n    <cf-livegrid #liveGrid [createOptions]=\"liveGridOptions\" class=\"cf-flex-grow\" (activeRowChanged)=\"cdr.detectChanges()\"></cf-livegrid>\r\n</div>\r\n","import { NgIf } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormBuilder, ReactiveFormsModule, Validators } from \"@angular/forms\";\r\nimport { ButtonDirective, CfDialog, InputNumberComponent, InputTextComponent } from \"codefoxui\";\r\nimport { CurrencyEditor } from \"../../../../interfaces/settings.interfaces\";\r\nimport { SettingsService } from \"../../../../services/settings.service\";\r\n\r\n@Component({\r\n    standalone: true,\r\n    templateUrl: 'currencyeditor.component.html',\r\n    styleUrls: ['currencyeditor.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    imports: [\r\n        NgIf,\r\n        ButtonDirective,\r\n        InputTextComponent,\r\n        InputNumberComponent,\r\n        ReactiveFormsModule\r\n    ]\r\n})\r\nexport class CurrencyeditorComponent extends CfDialog implements OnInit {\r\n\r\n    cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n    settingsService: SettingsService = inject(SettingsService);\r\n    fb: FormBuilder = inject(FormBuilder);\r\n\r\n    currencyId: number | null = this.config.getData('currencyId', null);\r\n\r\n    formGroup = this.fb.group({\r\n        code: this.fb.nonNullable.control('', [Validators.required, Validators.minLength(3), Validators.maxLength(3)]),\r\n        name: this.fb.nonNullable.control('', [Validators.required]),\r\n        exchangeRate: this.fb.nonNullable.control<number | null>(null),\r\n    });\r\n\r\n    loadData(): void {\r\n        if (this.currencyId === null) {\r\n            return;\r\n        }\r\n        this.settingsService.getCurrency(this.currencyId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ currencyEditor }) => {\r\n            this.formGroup.patchValue(currencyEditor, {emitEvent: false});\r\n            this.cdr.detectChanges();\r\n        });\r\n    }\r\n\r\n    save(): void {\r\n\r\n        const currencyEditor: CurrencyEditor = this.formGroup.getRawValue();\r\n\r\n        if (this.currencyId === null) {\r\n            this.settingsService.createCurrency(currencyEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n                this.ref.close();\r\n            });\r\n        } else {\r\n            this.settingsService.updateCurrency(this.currencyId, currencyEditor).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n                this.ref.close();\r\n            });\r\n        }\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.loadData();\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    constructor() {\r\n        super();\r\n        this.formGroup.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\r\n            this.cdr.detectChanges();\r\n        });\r\n        this.cdr.detach();\r\n    }\r\n\r\n}\r\n","<div class=\"cf-vgrid\">\r\n    <div class=\"cf-dialog-title\" *ngIf=\"currencyId === null\">Devizanem hozzáadása</div>\r\n    <div class=\"cf-dialog-title\" *ngIf=\"currencyId !== null\">Devizanem szerkesztése</div>\r\n    \r\n    <div class=\"cf-grid cf-cols-12\" [formGroup]=\"formGroup\">\r\n        <cf-inputtext [label]=\"'Megnevezés'\" [formControlName]=\"'name'\" class=\"cf-col-12\"></cf-inputtext>\r\n        <cf-inputtext [label]=\"'Deviza kód'\" [formControlName]=\"'code'\" class=\"cf-col-12\"></cf-inputtext>\r\n        <cf-inputnumber [label]=\"'Árfolyam felülbírálás'\" [formControlName]=\"'exchangeRate'\" class=\"cf-col-12\"></cf-inputnumber>\r\n    </div>\r\n\r\n    <div class=\"cf-flex cf-flex-spacer-2 cf-flex-right\">\r\n        <button cfButton [severity]=\"'success'\" [label]=\"'Mentés'\" (click)=\"save()\"></button>\r\n        <button cfButton [severity]=\"'danger'\" [label]=\"'Bezárás'\" (click)=\"close()\"></button>\r\n    </div>\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectorRef, Component, inject, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { ButtonDirective, CfDialog } from \"codefoxui\";\r\nimport { ElectronService } from \"../../services/electron.service\";\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\ttemplateUrl: 'tabselector.component.html',\r\n\tstyleUrls: ['tabselector.component.scss'],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tButtonDirective\r\n\t]\r\n})\r\nexport class TabSelectorComponent extends CfDialog implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\trouter: Router = inject(Router);\r\n\r\n\ttabConfigurations: any[] = this.config.getData('tabConfigurations', []);\r\n\r\n\tactivateTab(guid: string): void {\r\n\t\tthis.electronService.send('ACTIVATE', guid);\r\n\t\tthis.close();\r\n\t}\r\n\r\n\topenNew(): void {\r\n\t\tif (this.tabConfigurations.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.electronService.openUrl(this.tabConfigurations[0].url);\r\n\t\tthis.close();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}","<div class=\"cf-dialog-title cf-mb-4\">Új fül nyitása</div>\r\n<p>A modul már nyitva van, átváltás erre:</p>\r\n<div class=\"cf-grid cf-cols-12\">\r\n\t<div *ngFor=\"let tabConfiguration of tabConfigurations\" class=\"cf-col-12\">\r\n\t\t<button cfButton [label]=\"tabConfiguration.title\" [fitWidth]=\"true\" (click)=\"activateTab(tabConfiguration.guid)\"></button>\r\n\t</div>\r\n\t<div class=\"cf-col-12\">\r\n\t\t<button cfButton [label]=\"'Új fül nyitása'\" [severity]=\"'success'\" [fitWidth]=\"true\" (click)=\"openNew()\"></button>\r\n\t</div>\r\n</div>","import { CommonModule } from \"@angular/common\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from \"@angular/forms\";\r\nimport { ButtonDirective, InterceptorsService, CfDialog, DropdownComponent, InputTextComponent, InterceptorType } from \"codefoxui\";\r\nimport { ServerErrorResponse } from \"../../interfaces/general.interfaces\";\r\nimport { UserService } from \"../../services\";\r\n\r\n@Component({\r\n\tselector: 'app-userconfirm',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tDropdownComponent,\r\n\t\tInputTextComponent,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './userconfirm.component.html',\r\n\tstyleUrls: ['./userconfirm.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UserconfirmComponent extends CfDialog implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tuserService: UserService = inject(UserService);\r\n\tinterceptorsService: InterceptorsService = inject(InterceptorsService);\r\n\r\n\tpermission: string | null = null;\r\n\r\n\tusers: string[] = [];\r\n\r\n\tformGroup: FormGroup = new FormGroup({\r\n\t\tusername: new FormControl('', [Validators.required]),\r\n\t\tpassword: new FormControl('', [Validators.required])\r\n\t});\r\n\r\n\terror: string | null = null;\r\n\r\n\tloading: boolean = false;\r\n\r\n\tgetConfirmUsers(): void {\r\n\t\tif (this.permission === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.userService.getConfirmationUsers(this.permission).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ users }) => {\r\n\t\t\tthis.users = users;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tconfirm(): void {\r\n\r\n\t\tthis.error = null;\r\n\t\tthis.cdr.detectChanges();\r\n\r\n\t\tif (this.formGroup.invalid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.loading = true;\r\n\t\tthis.cdr.detectChanges();\r\n\r\n\t\tthis.interceptorsService.skip = [InterceptorType.ERROR];\r\n\t\tthis.userService.confirmUser(\r\n\t\t\tthis.formGroup.get('username')!.value,\r\n\t\t\tthis.formGroup.get('password')!.value\r\n\t\t).subscribe({\r\n\t\t\tnext: ({ error, userId }) => {\r\n\t\t\t\tthis.interceptorsService.skip = [];\r\n\t\t\t\tif (error !== null) {\r\n\t\t\t\t\tthis.error = error;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (userId !== null) {\r\n\t\t\t\t\t\tthis.close(userId);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: (httpErrorResponse: HttpErrorResponse) => {\r\n\t\t\t\tconst serverErrorResponse: ServerErrorResponse = httpErrorResponse.error;\r\n\t\t\t\tthis.error = serverErrorResponse.message;\r\n\t\t\t}\r\n\t\t}).add(() => {\r\n\t\t\tthis.interceptorsService.skip = [];\r\n\t\t\tthis.loading = false;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t\tthis.getConfirmUsers();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\t\r\n\t\tthis.permission = this.config.getData('permission', null);\r\n\r\n\t\tthis.formGroup.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}\r\n","<div class=\"cf-dialog-title\">Megerősítés</div>\r\n<form [formGroup]=\"formGroup\" (ngSubmit)=\"confirm()\">\r\n\t<div class=\"cf-grid cf-cols-12\">\r\n\t\t<div class=\"cf-col-12\">Egy másik felhasználó megerősítése szükséges a művelet befejezéséhez!</div>\r\n\t\t<cf-dropdown [values]=\"users\" [label]=\"'Felhasználónév'\" formControlName=\"username\" class=\"cf-col-12\"></cf-dropdown>\r\n\t\t<cf-inputtext #passwordInput [type]=\"'password'\" [label]=\"'Jelszó'\" formControlName=\"password\" class=\"cf-col-12\"></cf-inputtext>\r\n\t\t<div class=\"cf-col-12 cf-flex cf-flex-right\">\r\n\t\t\t<button [type]=\"'button'\" cfButton [label]=\"'Mégsem'\" [severity]=\"'danger'\" (click)=\"close()\"></button>\r\n\t\t\t<button cfButton [disabled]=\"formGroup.invalid\" [label]=\"'Megerősítés'\" [severity]=\"'success'\" class=\"cf-ml-auto\"></button>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"error !== null\" class=\"cf-col-12 cf-text-bold cf-text-color-danger cf-mt-2\">{{error}}</div>\r\n\t</div>\r\n</form>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject } from \"@angular/core\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from \"@angular/forms\";\r\nimport { LiveGridColumnAlignment, LiveGridColumnType, LiveGridComponent, LiveGridOptions } from \"codefoxlivegrid\";\r\nimport { ButtonDirective, CfDialogService, InputTextComponent } from \"codefoxui\";\r\nimport { DELETE_DIALOG_OPTIONS } from \"../../const/general.const\";\r\nimport { ElectronService } from \"../../services/electron.service\";\r\nimport { ElectronHardwareInfo } from \"../../interfaces/electron.interfaces\";\r\nimport { ErpService } from \"../../services/erp.service\";\r\n\r\n@Component({\r\n\tselector: 'app-login',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tLiveGridComponent,\r\n\t\tInputTextComponent,\r\n\t\tButtonDirective,\r\n\t\tReactiveFormsModule\r\n\t],\r\n\ttemplateUrl: './workstationset.component.html',\r\n\tstyleUrls: ['./workstationset.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class WorkstationSetComponent implements AfterViewInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\terpService: ErpService = inject(ErpService);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tdestroyRef: DestroyRef = inject(DestroyRef);\r\n\r\n\tformGroup: FormGroup = new FormGroup({\r\n\t\tname: new FormControl('', [Validators.required])\r\n\t});\r\n\r\n\telectronIpcMessageHardwareInfo: ElectronHardwareInfo | null = null;\r\n\r\n\tworkstationLiveGridOptions: LiveGridOptions<any> = {\r\n\t\tidField: 'workstationId',\r\n\t\tendPoint: ['workstations', 'setup'],\r\n\t\tfilterBarVisible: false,\r\n\t\tsearchBarVisible: false,\r\n\t\tupdateOn: this.electronService.onLivedatasetUpdate('WORKSTATIONS', this.destroyRef),\r\n\t\tcolumns: [{\r\n\t\t\ttitle: 'Munkaállomás neve',\r\n\t\t\tfield: 'name',\r\n\t\t\ttype: LiveGridColumnType.STRING,\r\n\t\t\twidth: 200\r\n\t\t}, {\r\n\t\t\ttitle: 'Utolsó bejelentkezés',\r\n\t\t\tfield: 'lastLoginDate',\r\n\t\t\ttype: LiveGridColumnType.DATE,\r\n\t\t\twidth: 200\r\n\t\t}, {\r\n\t\t\ttitle: 'Utoljára belépve',\r\n\t\t\tfield: 'lastLoginUserName',\r\n\t\t\ttype: LiveGridColumnType.STRING,\r\n\t\t\twidth: 200\r\n\t\t}, {\r\n\t\t\ttitle: 'Műveletek',\r\n\t\t\ttype: LiveGridColumnType.ACTIONS,\r\n\t\t\talign: LiveGridColumnAlignment.CENTER,\r\n\t\t\tactions: [{\r\n\t\t\t\ttitle: 'Törlés',\r\n\t\t\t\ticon: '\\u{ec26}',\r\n\t\t\t\tcallback: ({row}) => {\r\n\t\t\t\t\tthis.delete(row.id);\r\n\t\t\t\t}\r\n\t\t\t}]\r\n\t\t}]\r\n\t}\r\n\r\n\tdelete(workstationId: number): void {\r\n\t\tthis.dialogService.confirmAccept(DELETE_DIALOG_OPTIONS).then(() => {\r\n\t\t\tthis.erpService.deleteWorkstation(workstationId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {});\r\n\t\t});\r\n\t}\r\n\r\n\tsetWorkstation(): void {\r\n\t\tif (this.electronIpcMessageHardwareInfo === null || this.formGroup.invalid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst workstationsName: string = this.formGroup.get('name')!.value;\r\n\t\tthis.erpService.createWorkstation({\r\n\t\t\t...this.electronIpcMessageHardwareInfo,\r\n\t\t\tname: workstationsName\r\n\t\t}).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.electronService.send('SET_WORKSTATION', workstationsName);\r\n\t\t});\r\n\t}\r\n\r\n\tclose(): void {\r\n\t\tthis.electronService.send('CLOSE_APP', null);\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tthis.formGroup.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t\tthis.electronService.on('SET_HARDWARE_INFO').pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {\r\n\t\t\tthis.electronIpcMessageHardwareInfo = value;\r\n\t\t});\r\n\t\tthis.electronService.send('GET_HARDWARE_INFO', null);\r\n\t\tthis.cdr.detach();\r\n\t}\r\n\r\n}","<div class=\"cf-vgrid cf-p-4\">\r\n\t<div class=\"cf-text-center cf-text-bold\">Hardverváltozást érzékeltünk, ezért új nevet kell adnod ennek a munkaállomásnak!</div>\r\n\t<div class=\"cf-text-justify\">Az ügyviteli rendszerhez kapcsolódó minden eszközt egyedileg azonosítanunk kell tudni, így minden számítógépnek egyedi nevet kell adni. Érdemes olyan nevet választani, ami alapján a számítógépő könnyen azonosítható, pl.: \"Bemutatóterem\" vagy \"Raktár-1\". Erre azért is szükség van, mert ha valamilyen adatot egy felhasználó éppen módosít, akkor így látható, hogy ő melyik gépnél dolgozik, ha esetleg szükség lenne egyeztetni vele.</div>\r\n\t<form id=\"form\" [formGroup]=\"formGroup\" (ngSubmit)=\"setWorkstation()\">\r\n\t\t<div class=\"cf-grid cf-cols-12\">\r\n\t\t\t<cf-inputtext [label]=\"'Munkaállomás neve'\" formControlName=\"name\" class=\"cf-col-12\"></cf-inputtext>\r\n\t\t\t<div class=\"cf-col-12 cf-flex cf-flex-right\">\r\n\t\t\t\t<button [type]=\"'button'\" cfButton [label]=\"'Bezárás'\" [severity]=\"'danger'\" (click)=\"close()\"></button>\r\n\t\t\t\t<button cfButton [disabled]=\"formGroup.invalid\" [label]=\"'Beállítás'\" [severity]=\"'success'\" class=\"cf-ml-auto\"></button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</form>\r\n\t<div class=\"cf-text-bold\">Jelenleg regisztrált munkaállomások:</div>\r\n\t<cf-livegrid id=\"livegrid\" [createOptions]=\"workstationLiveGridOptions\"></cf-livegrid>\r\n</div>","import { FormControl, Validators } from \"@angular/forms\";\r\nimport { combineLatest, startWith } from \"rxjs\";\r\n\r\nexport function addressValidator(controls: {\r\n    countryCode: FormControl<string>,\r\n    postcode: FormControl<string>,\r\n    parcelNumber: FormControl<string>,\r\n    publicPlaceName: FormControl<string>,\r\n    publicPlaceType: FormControl<string>,\r\n    address: FormControl<string>,\r\n    city: FormControl<string>\r\n}, onlyCountryRequired: boolean): void {\r\n\r\n    const countryCodeControl = controls.countryCode;\r\n    const postcode: FormControl = controls.postcode;\r\n    const parcelNumber: FormControl = controls.parcelNumber;\r\n    const publicPlaceName: FormControl = controls.publicPlaceName;\r\n    const publicPlaceType: FormControl = controls.publicPlaceType;\r\n    const address: FormControl = controls.address;\r\n\r\n    if (onlyCountryRequired) {\r\n        return;\r\n    }\r\n\r\n    controls.city.addValidators([Validators.required]);\r\n\r\n    countryCodeControl.valueChanges.pipe(startWith(countryCodeControl.value)).subscribe((countryCode: string) => {\r\n        [postcode, parcelNumber, publicPlaceName, publicPlaceType, address].map(fc => fc.clearValidators());\r\n        if (countryCode === 'HU') {\r\n            postcode.setValidators([Validators.required, Validators.maxLength(20)]);\r\n            parcelNumber.setValidators([Validators.required, Validators.maxLength(10)]);\r\n            publicPlaceName.setValidators([Validators.required, Validators.maxLength(255)]);\r\n            publicPlaceType.setValidators([Validators.required, Validators.maxLength(64)]);\r\n        } else {\r\n            address.setValidators([Validators.required, Validators.maxLength(255)]);\r\n        }\r\n        [postcode, parcelNumber, publicPlaceName, publicPlaceType, address].map(fc => fc.updateValueAndValidity({emitEvent: false}));\r\n    });\r\n    \r\n    combineLatest([\r\n        parcelNumber.valueChanges.pipe(startWith(parcelNumber.value)),\r\n        publicPlaceName.valueChanges.pipe(startWith(publicPlaceName.value)),\r\n        publicPlaceType.valueChanges.pipe(startWith(publicPlaceType.value))\r\n    ]).subscribe(([parcelNumberValue, publicPlaceNameValue, publicPlaceTypeValue]) => {\r\n        if (countryCodeControl.value === 'HU') {\r\n            parcelNumber.setValidators([Validators.required, Validators.maxLength(10)]);\r\n            publicPlaceName.setValidators([Validators.required, Validators.maxLength(255)]);\r\n            publicPlaceType.setValidators([Validators.required, Validators.maxLength(64)]);\r\n            if (parcelNumberValue !== '') {\r\n                publicPlaceName.clearValidators();\r\n\t\t\t\tif (publicPlaceNameValue === '') {\r\n\t\t\t\t\tpublicPlaceType.clearValidators();\r\n\t\t\t\t}\r\n            }\r\n            if (publicPlaceNameValue !== '' && publicPlaceTypeValue !== '') {\r\n                parcelNumber.clearValidators();\r\n            }\r\n            [parcelNumber, publicPlaceName, publicPlaceType].map(fc => fc.updateValueAndValidity({emitEvent: false}));\r\n        }\r\n    });\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { AutocompleteComponent, ButtonDirective, CfDialog, CfDialogService, CfEnterAsTabDirective, CheckboxComponent, DropdownComponent, InputTextComponent, LabelValue } from 'codefoxui';\r\nimport { debounceTime, first, of, switchMap } from 'rxjs';\r\nimport { ErpService } from '../../services';\r\nimport { addressValidator } from '../../validators';\r\n\r\n@Component({\r\n\tselector: 'app-addresseditor',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tDropdownComponent,\r\n\t\tInputTextComponent,\r\n\t\tAutocompleteComponent,\r\n\t\tCheckboxComponent,\r\n\t\tButtonDirective,\r\n\t\tCfEnterAsTabDirective\r\n\t],\r\n\ttemplateUrl: './addresseditor.component.html',\r\n\tstyleUrls: ['./addresseditor.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AddresseditorComponent extends CfDialog implements OnInit {\r\n\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\terpService: ErpService = inject(ErpService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n    fb: FormBuilder = inject(FormBuilder);\r\n\r\n    onlyCountryRequired: boolean = this.config.getData('onlyCountryRequired', false);\r\n\r\n\tcountries: { label: string, value: string }[] = [];\r\n\tfilteredCities: string[] = [];\r\n\tpublicPlaces: string[] = [];\r\n\r\n\tformGroup = this.fb.group({\r\n\t\taddressId: this.fb.control<number | null>(null),\r\n\t\tcountryCode: this.fb.nonNullable.control('HU'),\r\n\t\tpostcode: this.fb.nonNullable.control('', [Validators.maxLength(20)]),\r\n\t\tcity: this.fb.nonNullable.control('', [Validators.maxLength(255)]),\r\n\t\tparcelNumber: this.fb.nonNullable.control('', [Validators.maxLength(10)]),\r\n\t\tpublicPlaceName: this.fb.nonNullable.control('', [Validators.maxLength(255)]),\r\n\t\tpublicPlaceType: this.fb.nonNullable.control('', [Validators.maxLength(64)]),\r\n\t\thouseNumber: this.fb.nonNullable.control('', [Validators.maxLength(20)]),\r\n\t\tbuilding: this.fb.nonNullable.control('', [Validators.maxLength(20)]),\r\n\t\tstairway: this.fb.nonNullable.control('', [Validators.maxLength(20)]),\r\n\t\tlevel: this.fb.nonNullable.control('', [Validators.maxLength(20)]),\r\n\t\tdoor: this.fb.nonNullable.control('', [Validators.maxLength(20)]),\r\n\t\taddress: this.fb.nonNullable.control('', [Validators.maxLength(255)]),\r\n\t\tnote: this.fb.nonNullable.control('', [Validators.maxLength(255)]),\r\n\t\tdefaultBillingAddress: this.fb.nonNullable.control(false),\r\n\t\tdefaultShippingAddress: this.fb.nonNullable.control(false),\r\n\t\ttouched: this.fb.nonNullable.control(false)\r\n\t});\r\n\r\n\tsave(): void {\r\n\t\tif (this.formGroup.valid) {\r\n\t\t\tthis.formGroup.markAsUntouched();\r\n\t\t\tthis.ref.close(this.formGroup.value);\r\n\t\t}\r\n\t}\r\n\r\n    loadCountries(): void {\r\n        this.erpService.getCountryList().pipe(takeUntilDestroyed(this.destroyRef)).subscribe((countries: LabelValue<string>[]) => {\r\n            this.countries = countries;\r\n            this.cdr.detectChanges();\r\n        });\r\n    }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.erpService.getAddressPublicPlacesTypes().pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ publicPlaces }) => {\r\n\t\t\tthis.publicPlaces = publicPlaces;\r\n\t\t});\r\n        this.loadCountries();\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tif (this.config.getData('addressItem') !== null) {\r\n\t\t\tthis.formGroup.patchValue(this.config.getData('addressItem'), { emitEvent: false });\r\n\t\t}\r\n\r\n        addressValidator({\r\n            address: this.formGroup.controls.address,\r\n            city: this.formGroup.controls.city,\r\n            countryCode: this.formGroup.controls.countryCode,\r\n            parcelNumber: this.formGroup.controls.parcelNumber,\r\n            postcode: this.formGroup.controls.postcode,\r\n            publicPlaceName: this.formGroup.controls.publicPlaceName,\r\n            publicPlaceType: this.formGroup.controls.publicPlaceType\r\n        }, this.onlyCountryRequired);\r\n\r\n\t\tthis.formGroup.valueChanges.pipe(first(), takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.formGroup.controls.touched.setValue(true, {emitEvent: false});\r\n\t\t});\r\n\r\n\t\tthis.formGroup.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tthis.formGroup.controls.postcode.valueChanges.pipe(\r\n\t\t\ttakeUntilDestroyed(),\r\n\t\t\tdebounceTime(300),\r\n\t\t\tswitchMap((postcode: string | null) => {\r\n\t\t\t\tthis.filteredCities = [];\r\n\t\t\t\tthis.formGroup.controls.city.setValue('', { emitEvent: false });\r\n\t\t\t\tif (postcode === null) {\r\n\t\t\t\t\treturn of(null);\r\n\t\t\t\t}\r\n\t\t\t\treturn this.erpService.getCityByPostcode(postcode, this.formGroup.controls.countryCode.value);\r\n\t\t\t})).subscribe((response: { cities: string[] } | null) => {\r\n\t\t\t\tif (response !== null) {\r\n\t\t\t\t\tif (response.cities.length > 0) {\r\n                        this.formGroup.controls.city.setValue(response.cities[0], { emitEvent: false });\r\n                        this.filteredCities = response.cities;\r\n                        this.cdr.detectChanges();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis.config.beforeClose = () => {\r\n\t\t\treturn this.formGroup.touched ? this.dialogService.confirmAccept('unsavedchanges') : true;\r\n\t\t}\r\n        \r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n\r\n","<div class=\"cf-dialog-title\" *ngIf=\"formGroup.controls.addressId === null\">Cím hozzáadása</div>\r\n<div class=\"cf-dialog-title\" *ngIf=\"formGroup.controls.addressId !== null\">Cím szerkesztése</div>\r\n\r\n<form [formGroup]=\"formGroup\" class=\"cf-mt-4\">\r\n\t<div class=\"cf-vgrid\">\r\n\t\t<div class=\"cf-grid cf-cols-4\" cfEnterAsTab>\r\n\t\t\t<cf-dropdown [label]=\"'Ország'\" class=\"cf-col-4\" [searchable]=\"true\" [value]=\"'HU'\" [values]=\"countries\" formControlName=\"countryCode\"></cf-dropdown>\r\n\t\t\t<cf-inputtext [label]=\"'Irányítószám'\" formControlName=\"postcode\" class=\"cf-col-1\"></cf-inputtext>\r\n\t\t\t<cf-autocomplete [label]=\"'Város'\" formControlName=\"city\" [values]=\"filteredCities\" [ngClass]=\"formGroup.controls.countryCode.value !== 'HU' ? 'cf-col-3' : 'cf-col-2'\" [filterFunction]=\"null\"></cf-autocomplete>\r\n\r\n\t\t\t<ng-container *ngIf=\"formGroup.controls.countryCode.value !== 'HU'\">\r\n\t\t\t\t<cf-inputtext class=\"cf-col-4\" [label]=\"'Cím'\" formControlName=\"address\"></cf-inputtext>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<ng-container *ngIf=\"formGroup.controls.countryCode.value === 'HU'\">\r\n\t\t\t\t<cf-inputtext [label]=\"'Helyrajzi szám'\" class=\"cf-col-1\" formControlName=\"parcelNumber\"></cf-inputtext>\r\n\t\t\t\t<cf-inputtext [label]=\"'Közterület neve'\" class=\"cf-col-2\" formControlName=\"publicPlaceName\"></cf-inputtext>\r\n\t\t\t\t<cf-autocomplete [label]=\"'Közterület jellege'\" [values]=\"publicPlaces\" [filterFunction]=\"null\" class=\"cf-col-1\" formControlName=\"publicPlaceType\"></cf-autocomplete>\r\n\t\t\t\t<cf-inputtext [label]=\"'Házszám'\" class=\"cf-col-1\" formControlName=\"houseNumber\"></cf-inputtext>\r\n\t\t\t\t<cf-inputtext [label]=\"'Épület'\" class=\"cf-col-1\" formControlName=\"building\"></cf-inputtext>\r\n\t\t\t\t<cf-inputtext [label]=\"'Lépcsőház'\" class=\"cf-col-1\" formControlName=\"stairway\"></cf-inputtext>\r\n\t\t\t\t<cf-inputtext [label]=\"'Szint'\" class=\"cf-col-1\" formControlName=\"level\"></cf-inputtext>\r\n\t\t\t\t<cf-inputtext [label]=\"'Ajtó'\" class=\"cf-col-1\" formControlName=\"door\"></cf-inputtext>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<cf-inputtext [label]=\"'Megjegyzés'\" class=\"cf-col-4\" formControlName=\"note\"></cf-inputtext>\r\n\t\t\t<div class=\"cf-vgrid cf-col-4\">\r\n\t\t\t\t<cf-checkbox [label]=\"'Alapértelmezett számlázási cím'\" formControlName=\"defaultBillingAddress\"></cf-checkbox>\r\n\t\t\t\t<cf-checkbox [label]=\"'Alapértelmezett szállítási cím'\" formControlName=\"defaultShippingAddress\"></cf-checkbox>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"cf-flex cf-flex-spacer-2 cf-flex-right\">\r\n\t\t\t<button cfButton [severity]=\"'success'\" type=\"button\" [disabled]=\"this.formGroup.invalid\" (click)=\"save()\">Mentés</button>\r\n\t\t\t<button cfButton [severity]=\"'danger'\" type=\"button\" (click)=\"close()\">Bezárás</button>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { AddressItem } from '../interfaces/general.interfaces';\r\nimport { ErpService } from '../services';\r\n\r\n@Pipe({\r\n    name: 'address',\r\n\tstandalone: true\r\n})\r\nexport class AddressPipe implements PipeTransform {\r\n\r\n    erpService: ErpService = inject(ErpService);\r\n\r\n    transform(addressItem: AddressItem, mode: 'countryCity' | 'address' | 'full' | 'note' | null = null): string {\r\n        const address: string[] = [];\r\n        if ((typeof addressItem.extra === 'string') && addressItem.extra !== '') {\r\n            address.push(addressItem.extra);\r\n        }\r\n        switch (mode) {\r\n            case 'countryCity':\r\n                address.push(...[this.erpService.countriesMap.get(addressItem.countryCode)!, addressItem.postcode, addressItem.city]);\r\n                break;\r\n            case 'address':\r\n                if (addressItem.countryCode === 'HU') {\r\n                    address.push(...[\r\n                        addressItem.parcelNumber === '' ? '' : addressItem.parcelNumber + ' hrsz.',\r\n                        addressItem.publicPlaceName,\r\n                        addressItem.publicPlaceType,\r\n                        addressItem.houseNumber,\r\n                        addressItem.building === '' ? '' : addressItem.building + ' ép.',\r\n                        addressItem.stairway === '' ? '' : addressItem.stairway + ' lh.',\r\n                        isNaN(parseInt(addressItem.level, 10)) ? addressItem.level : addressItem.level + '. emelet',\r\n                        addressItem.door === '' ? '' : addressItem.door + ' ajtó',\r\n                    ]);\r\n                } else {\r\n                    address.push(addressItem.address);\r\n                }\r\n                break;\r\n            case 'full':\r\n                if (addressItem.countryCode === 'HU') {\r\n                    address.push(...[\r\n                        this.erpService.countriesMap.get(addressItem.countryCode)!,\r\n                        addressItem.postcode,\r\n                        addressItem.city,\r\n                        addressItem.parcelNumber === '' ? '' : addressItem.parcelNumber + ' hrsz.',\r\n                        addressItem.publicPlaceName,\r\n                        addressItem.publicPlaceType,\r\n                        addressItem.houseNumber,\r\n                        addressItem.building === '' ? '' : addressItem.building + ' ép.',\r\n                        addressItem.stairway === '' ? '' : addressItem.stairway + ' lh.',\r\n                        isNaN(parseInt(addressItem.level, 10)) ? addressItem.level : addressItem.level + '. emelet',\r\n                        addressItem.door === '' ? '' : addressItem.door + ' ajtó',\r\n                    ]);\r\n                } else {\r\n                    address.push(...[\r\n                        this.erpService.countriesMap.get(addressItem.countryCode)!,\r\n                        addressItem.postcode,\r\n                        addressItem.city,\r\n                        addressItem.address\r\n                    ]);\r\n                }\r\n                break;\r\n            case 'note':\r\n                address.push(...['Megjegyzés:', addressItem.note]);\r\n                break;\r\n        }\r\n        return address.filter(a => a !== '').join(' ');\r\n    }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, Input, ChangeDetectorRef, OnInit, inject, forwardRef, HostBinding, OnChanges } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CfDialogService, CfDestroyRef, ButtonDirective } from 'codefoxui';\r\nimport { filter } from 'rxjs';\r\nimport { AddressItem } from '../../interfaces/general.interfaces';\r\nimport { AddressPipe } from '../../pipes/address.pipe';\r\n\r\n@Component({\r\n\tselector: 'app-addresslist',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tAddressPipe,\r\n\t\tButtonDirective\r\n\t],\r\n    providers: [{\r\n        provide: NG_VALUE_ACCESSOR,\r\n        useExisting: forwardRef(() => AddresslistComponent),\r\n        multi: true\r\n\t}],\r\n\ttemplateUrl: './addresslist.component.html',\r\n\tstyleUrls: ['./addresslist.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AddresslistComponent extends CfDestroyRef implements OnInit, OnChanges, ControlValueAccessor {\r\n\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\t@Input() columns: number = 1;\r\n\t@Input() deletedIdsFormControl: AbstractControl | null = null;\r\n\t@Input() readonly: boolean = false;\r\n    @Input() disabled: boolean = false;\r\n    @Input() onlyCountryRequired: boolean = false;\r\n    @HostBinding('style.height') @Input() height: string = 'auto';\r\n\r\n\taddressItems: AddressItem[] = [];\r\n\r\n    onChangeFn: any = null;\r\n    onTouchedFn: any = null;\r\n\r\n\tshowEditorDialog(index: number | null = null): void {\r\n\t\tlet addressItem: AddressItem | null = null;\r\n\t\tif (index !== null) {\r\n\t\t\taddressItem = this.addressItems[index] !== undefined ? this.addressItems[index] : null;\r\n\t\t}\r\n\t\tthis.dialogService.openImport(() => import('../addresseditor/addresseditor.component').then(c => c.AddresseditorComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\taddressItem,\r\n                onlyCountryRequired: this.onlyCountryRequired\r\n\t\t\t}\r\n\t\t}).then(({ onClose }) => {\r\n            onClose.pipe(filter(response => response !== undefined)).subscribe((response: AddressItem) => {\r\n                if (response.defaultBillingAddress) {\r\n                    this.addressItems.forEach((address: AddressItem) => {\r\n                        address.defaultBillingAddress = false;\r\n                        address.touched = true;\r\n                    });\r\n                }\r\n                if (response.defaultShippingAddress) {\r\n                    this.addressItems.forEach((address: AddressItem) => {\r\n                        address.defaultShippingAddress = false;\r\n                        address.touched = true;\r\n                    });\r\n                }\r\n                if (index === null) {\r\n                    if (this.addressItems.length === 0) {\r\n                        response.defaultBillingAddress = true;\r\n                        response.defaultShippingAddress = true;\r\n                    }\r\n                    this.addressItems.push(response);\r\n                } else {\r\n                    this.addressItems[index] = { ...response };\r\n                }\r\n                this.changed();\r\n                this.cdr.detectChanges();\r\n            });\r\n        });\r\n\t}\r\n\r\n\tdeleteContact(index: number): void {\r\n\t\tthis.dialogService.confirmAccept('delete').then(() => {\r\n\t\t\tconst addressId: number | null = this.addressItems[index].addressId;\r\n\t\t\tif (addressId !== null) {\r\n\t\t\t\tthis.deletedIdsFormControl!.setValue([...this.deletedIdsFormControl!.value, addressId], { emitEvent: false });\r\n\t\t\t}\r\n\t\t\tthis.addressItems.splice(index, 1);\r\n            this.changed();\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\taddressInfo(addressItem: AddressItem | null = null): string {\r\n\t\tif (addressItem === null) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn [\r\n\t\t\taddressItem.defaultBillingAddress ? 'Ez a számlázási cím.' : '',\r\n\t\t\taddressItem.defaultShippingAddress ? 'Ez a szállítási cím.' : ''\r\n\t\t].filter(v => v !== '').join(' ');\r\n\t}\r\n\r\n\tregisterOnChange(onChangeFn: any): void {\r\n\t\tthis.onChangeFn = onChangeFn;\r\n\t};\r\n\r\n\tregisterOnTouched(onTouchedFn: any): void {\r\n\t\tthis.onTouchedFn = onTouchedFn;\r\n\t};\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.disabled = isDisabled;\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    writeValue(addressItems: AddressItem[]): void {\r\n        this.addressItems = addressItems;\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    changed(): void {\r\n        if (this.onChangeFn !== null) {\r\n            this.onChangeFn(this.addressItems);\r\n        }\r\n        if (this.onTouchedFn !== null) {\r\n            this.onTouchedFn();\r\n        }\r\n    }\r\n\r\n\tngOnChanges(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n        this.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n        this.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-column\" id=\"addresses\">\r\n    <div id=\"address-list\" class=\"cf-flex-grow\">\r\n        <div [ngClass]=\"columns > 1 ? 'cf-grid cf-cols-'+columns : 'cf-vgrid'\">\r\n            <div id=\"item-card\" class=\"cf-flex cf-flex-column\" *ngFor=\"let item of addressItems; let i = index\">\r\n                <div id=\"card-body\" [ngClass]=\"{'hide-border': readonly && addressInfo(item).length === 0}\" class=\"cf-flex-grow cf-flex cf-flex-column\">\r\n                    <div class=\"cf-vgrid cf-p-2\">\r\n                        <div class=\"cf-flex cf-flex-spacer-2\">\r\n                            <span class=\"remixicon map-pin-2-line\"></span>\r\n                            <div class=\"cf-flex cf-flex-column\">\r\n                                <h3>{{item|address:'countryCity'}}</h3>\r\n                                {{item|address:'address'}}\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"cf-flex cf-flex-spacer-2\">\r\n                            <span class=\"remixicon information-line\"></span>\r\n                            {{item.note}}\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div id=\"card-footer\" class=\"cf-flex cf-p-2 cf-ai-center\" *ngIf=\"!readonly || readonly && addressInfo(item).length > 0\">\r\n                    <div class=\"cf-flex-grow cf-pl-2\">{{addressInfo(item)}}</div>\r\n                    <div class=\"cf-flex-align-self-flex-end\" *ngIf=\"!readonly\">\r\n                        <span class=\"remixicon pencil-line cf-cursor-pointer\" (click)=\"showEditorDialog(i)\"></span>\r\n                        <span class=\"remixicon delete-bin-line cf-cursor-pointer\" (click)=\"deleteContact(i)\"></span>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"cf-flex cf-flex-right\">\r\n        <button cfButton [severity]=\"'success'\" [icon]=\"'file-3-line'\" *ngIf=\"!readonly\" [label]=\"'Új cím hozzáadása'\" (click)=\"showEditorDialog()\"></button>\r\n    </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { ButtonDirective, CfDialog, CfDialogService, CfMessageService, CheckboxComponent, InputTextComponent } from 'codefoxui';\r\nimport { first } from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'app-contacteditor',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tReactiveFormsModule,\r\n\t\tInputTextComponent,\r\n\t\tCheckboxComponent,\r\n\t\tButtonDirective\r\n\t],\r\n\ttemplateUrl: './contacteditor.component.html',\r\n\tstyleUrls: ['./contacteditor.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContacteditorComponent extends CfDialog implements OnInit {\r\n\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tmessageService: CfMessageService = inject(CfMessageService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\tcontactId: number | null = null;\r\n\ttype: 'supplier' | 'customer' = 'customer';\r\n\r\n\tformGroup: FormGroup = new FormGroup({\r\n\t\tcontactId: new FormControl(null),\r\n\t\tname: new FormControl('', [Validators.maxLength(255)]),\r\n\t\tphone: new FormControl('', [Validators.maxLength(255)]),\r\n\t\temail: new FormControl('', [Validators.email, Validators.maxLength(255)]),\r\n\t\tnote: new FormControl('', [Validators.maxLength(255)]),\r\n\t\ttouched: new FormControl(false),\r\n\t\tuseInformal: new FormControl(false),\r\n\t\tbillingEmail: new FormControl(false),\r\n        orderContact: new FormControl(false),\r\n        shippingContact: new FormControl(false)\r\n\t});\r\n\r\n\tget isValid(): boolean {\r\n\t\treturn this.formGroup.get('name')?.value !== '' || this.formGroup.get('phone')?.value !== '' || this.formGroup.get('email')?.value !== '' || this.formGroup.get('note')?.value !== '';\r\n\t}\r\n\r\n\tsave(): void {\r\n\t\tif (!this.isValid) {\r\n\t\t\treturn this.messageService.showDangerMessage(\"Mr. Registair\", \"Legalább egy mező kitöltése kötelező!\");\r\n\t\t}\r\n\t\tthis.formGroup.markAsUntouched();\r\n\t\tthis.ref.close(this.formGroup.value);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.type = this.config.getData('type');\r\n\r\n\t\tif (this.config.getData('contactItem') !== null) {\r\n\t\t\tthis.contactId = this.config.getData('contactItem').id;\r\n\t\t\tthis.formGroup.patchValue(this.config.getData('contactItem'), { emitEvent: false });\r\n\t\t}\r\n\r\n\t\tthis.formGroup.valueChanges.pipe(first()).subscribe(() => {\r\n\t\t\tthis.formGroup.get('touched')!.setValue(true, { emitEvent: false });\r\n\t\t});\r\n\r\n\t\tthis.formGroup.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\r\n\t\tthis.config.beforeClose = () => {\r\n\t\t\treturn this.formGroup.touched ? this.dialogService.confirmAccept('unsavedchanges') : true;\r\n\t\t}\r\n\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-dialog-title\" *ngIf=\"contactId === null\">Kapcsolattartó hozzáadása</div>\r\n<div class=\"cf-dialog-title\" *ngIf=\"contactId !== null\">Kapcsolattartó szerkesztése</div>\r\n\r\n<form [formGroup]=\"formGroup\" class=\"cf-mt-4\">\r\n    <div class=\" cf-vgrid\">\r\n        <div class=\"cf-grid cf-cols-4\">\r\n            <div class=\"cf-col-2\">\r\n                <cf-inputtext [label]=\"'A kapcsolattartó neve'\" formControlName=\"name\"></cf-inputtext>\r\n            </div>\r\n            <div class=\"cf-col-2\">\r\n                <cf-inputtext [label]=\"'Telefonszáma'\" formControlName=\"phone\"></cf-inputtext>\r\n            </div>\r\n            <div class=\"cf-col-2\">\r\n                <cf-inputtext [label]=\"'E-mail címe'\" formControlName=\"email\"></cf-inputtext>\r\n            </div>\r\n\t\t\t<div class=\"cf-col-2 cf-flex cf-ai-center\">\r\n\t\t\t\t<cf-checkbox [label]=\"'Számlát ide küldjük'\" formControlName=\"billingEmail\"></cf-checkbox>\r\n\t\t\t</div>\r\n            <div class=\"cf-col-4\">\r\n                <cf-inputtext [label]=\"'Megjegyzés'\" formControlName=\"note\"></cf-inputtext>\r\n            </div>\r\n        </div>\r\n        <div class=\"cf-flex cf-flex-spacer-3\">\r\n            <cf-checkbox class=\"cf-col-2\" [label]=\"type === 'customer' ? 'Ő rendel' : 'Ő tőle rendelünk'\" formControlName=\"orderContact\"></cf-checkbox>\r\n            <cf-checkbox class=\"cf-col-3\" [label]=\"'Ő a szállítási kontakt'\" formControlName=\"shippingContact\"></cf-checkbox>\r\n            <cf-checkbox class=\"cf-col-2\" [label]=\"'Tegeződünk'\" formControlName=\"useInformal\"></cf-checkbox>\r\n        </div>\r\n        <div class=\"cf-flex cf-flex-spacer-2 cf-flex-right\">\r\n            <button cfButton [severity]=\"'success'\" type=\"button\" [disabled]=\"!isValid\" (click)=\"save()\">Mentés</button>\r\n            <button cfButton [severity]=\"'danger'\" type=\"button\" (click)=\"close()\">Bezárás</button>\r\n        </div>\r\n    </div>\r\n</form>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, Input, ChangeDetectorRef, OnInit, inject, forwardRef, HostBinding, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CfDialogService, CfDestroyRef, ButtonDirective } from 'codefoxui';\r\nimport { filter } from 'rxjs';\r\nimport { ContactItem } from '../../interfaces/general.interfaces';\r\n\r\n@Component({\r\n\tselector: 'app-contactlist',\r\n\tstandalone: true,\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tButtonDirective\r\n\t],\r\n    providers: [{\r\n        provide: NG_VALUE_ACCESSOR,\r\n        useExisting: forwardRef(() => ContactlistComponent),\r\n        multi: true\r\n\t}],\r\n\ttemplateUrl: './contactlist.component.html',\r\n\tstyleUrls: ['./contactlist.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContactlistComponent extends CfDestroyRef implements OnInit, OnChanges, ControlValueAccessor {\r\n\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n\t@Input() columns: number = 1;\r\n\t@Input() deletedIdsFormControl: AbstractControl | null = null;\r\n\t@Input() readonly: boolean = false;\r\n    @Input() disabled: boolean = false;\r\n    @Input() orderContactText: string = '';\r\n    @Input() shippingContactText: string = '';\r\n    @HostBinding('style.height') @Input() height: string = 'auto';\r\n\r\n\tcontactItems: ContactItem[] = [];\r\n\r\n    onChangeFn: any = null;\r\n    onTouchedFn: any = null;\r\n\r\n\tshowEditorDialog(index: number | null = null): void {\r\n\t\tlet contactItem: ContactItem | null = null;\r\n\t\tif (index !== null) {\r\n\t\t\tcontactItem = this.contactItems[index] || null;\r\n\t\t}\r\n\t\tthis.dialogService.openImport(() => import('../contacteditor/contacteditor.component').then(c => c.ContacteditorComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\tcontactItem\r\n\t\t\t}\r\n\t\t}).then(({ onClose }) => {\r\n            onClose.pipe(filter(response => response !== undefined)).subscribe((response: ContactItem) => {\r\n                if (index === null) {\r\n                    this.contactItems.push(response);\r\n                } else {\r\n                    this.contactItems[index] = { ...response };\r\n                }\r\n                this.changed();\r\n                this.cdr.detectChanges();\r\n            });\r\n        });\r\n\t}\r\n\r\n\tdeleteContact(index: number): void {\r\n\t\tthis.dialogService.confirmAccept('delete').then(() => {\r\n\t\t\tconst contactId: number | null = this.contactItems[index].contactId;\r\n\t\t\tif (contactId !== null) {\r\n\t\t\t\tthis.deletedIdsFormControl!.setValue([...this.deletedIdsFormControl!.value, contactId], { emitEvent: false });\r\n\t\t\t}\r\n\t\t\tthis.contactItems.splice(index, 1);\r\n            this.changed();\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tcontactInfo(customerContact: ContactItem | null = null): string {\r\n\t\tif (customerContact === null) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\tlet items: string[] = [\r\n\t\t\tcustomerContact.useInformal ? 'tegeződünk' : ''\r\n\t\t];\r\n\t\tif (customerContact.orderContact) {\r\n\t\t\titems.unshift(...[\r\n\t\t\t\tcustomerContact.orderContact ? this.orderContactText : '',\r\n\t\t\t\tcustomerContact.shippingContact ? this.shippingContactText : ''\r\n\t\t\t]);\r\n\t\t}\r\n\t\tlet details: string = items.filter(v => v !== '').join(', ');\r\n\t\treturn details + (details.length !== 0 ? '.' : '');\r\n\t}\r\n\r\n\tregisterOnChange(onChangeFn: any): void {\r\n\t\tthis.onChangeFn = onChangeFn;\r\n\t};\r\n\r\n\tregisterOnTouched(onTouchedFn: any): void {\r\n\t\tthis.onTouchedFn = onTouchedFn;\r\n\t};\r\n\r\n    setDisabledState(isDisabled: boolean): void {\r\n        this.disabled = isDisabled;\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    writeValue(contactItems: ContactItem[]): void {\r\n        this.contactItems = contactItems;\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    changed(): void {\r\n        if (this.onChangeFn !== null) {\r\n            this.onChangeFn(this.contactItems);\r\n        }\r\n        if (this.onTouchedFn !== null) {\r\n            this.onTouchedFn();\r\n        }\r\n    }\r\n\r\n\tngOnChanges(): void {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n        this.cdr.detectChanges();\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n        this.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-flex cf-flex-column\" id=\"contacts\">\r\n    <div id=\"contact-list\" class=\"cf-flex-grow\">\r\n        <div [ngClass]=\"columns > 1 ? 'cf-grid cf-cols-'+columns : 'cf-vgrid'\">\r\n            <div id=\"item-card\" class=\"cf-flex cf-flex-column\" *ngFor=\"let item of contactItems; let i = index\">\r\n                <div id=\"card-body\" [ngClass]=\"{'hide-border': readonly && contactInfo(item).length === 0}\" class=\"cf-flex-grow cf-flex cf-flex-column\">\r\n                    <div class=\"cf-flex cf-flex-column cf-flex-spacer-4 cf-p-2\">\r\n                        <h3>{{item.name}}</h3>\r\n                        <div class=\"cf-flex cf-ai-center cf-flex-spacer-2\">\r\n                            <span class=\"remixicon phone-line\"></span>\r\n\t\t\t\t\t\t\t<div class=\"cf-flex-grow cf-overflow-hidden cf-white-space-nowrap cf-text-overflow-ellipsis\">{{item.phone}}</div>\r\n                        </div>\r\n                        <div class=\"cf-flex cf-ai-center cf-flex-spacer-2\">\r\n                            <span class=\"remixicon mail-line\"></span>\r\n\t\t\t\t\t\t\t<div class=\"cf-flex-grow cf-overflow-hidden cf-white-space-nowrap cf-text-overflow-ellipsis\"><span *ngIf=\"item.billingEmail\">(Számlázás)</span> {{item.email}} </div>\r\n                        </div>\r\n                        <div class=\"cf-flex cf-ai-center cf-flex-spacer-2\">\r\n                            <span class=\"remixicon information-line\"></span>\r\n\t\t\t\t\t\t\t<div class=\"cf-flex-grow\">{{item.note}}</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div id=\"card-footer\" class=\"cf-flex cf-p-2 cf-ai-center\" *ngIf=\"!readonly || readonly && contactInfo(item).length > 0\">\r\n                    <div id=\"info\" class=\"cf-flex-grow cf-pl-2\">{{contactInfo(item)}}</div>\r\n                    <div class=\"cf-flex-align-self-flex-end\" *ngIf=\"!readonly\">\r\n                        <span class=\"remixicon pencil-line cf-cursor-pointer\" (click)=\"showEditorDialog(i)\"></span>\r\n                        <span class=\"remixicon delete-bin-line cf-cursor-pointer\" (click)=\"deleteContact(i)\"></span>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"cf-flex cf-flex-right\">\r\n        <button cfButton [severity]=\"'success'\" [icon]=\"'file-3-line'\" [label]=\"'Új kapcsolattartó hozzáadása'\" *ngIf=\"!readonly\" (click)=\"showEditorDialog()\"></button>\r\n    </div>\r\n</div>\r\n","import { Directive, HostListener, inject, Input } from \"@angular/core\";\r\nimport { CfDestroyRef, CfDialogService, CfPermissionsService } from \"codefoxui\";\r\n\r\n@Directive({\r\n\tselector: '[history]',\r\n\tstandalone: true\r\n})\r\nexport class HistoryDirective extends CfDestroyRef {\r\n\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\tpermissionsService: CfPermissionsService = inject(CfPermissionsService);\r\n\r\n\t@Input('historyModel') historyModel: string | null = null;\r\n\t@Input('historyId') historyId: number | null = null;\r\n\r\n\t@HostListener('click')\r\n\tclick() {\r\n\t\tif (this.historyModel === null || this.historyId === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this.permissionsService.hasPermission('godmode')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.dialogService.openImport(() => import('../components/history/history.component').then(c => c.HistoryComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\thistoryModel: this.historyModel,\r\n\t\t\t\thistoryId: this.historyId\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","import { ChangeDetectorRef, Component, ElementRef, HostListener, inject, Input, NgZone, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { ButtonBarItem } from '../../interfaces/general.interfaces';\r\nimport { ButtonDirective, CfDestroyRef, CfDialogConfiguration, CfDialogRef, CfDialogService, CfPermissionsService } from 'codefoxui';\r\nimport { NgFor, NgIf } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { buttonBarLabelHandler, buttonBarSeverityHandler, filterByPermissions } from '../../helpers';\r\nimport { HotkeyDirective, UrlOpenerDirective } from '../../directives';\r\nimport { ElectronService, ErpService } from '../../services';\r\n\r\n@Component({\r\n\tselector: 'app-buttonbar',\r\n\ttemplateUrl: 'buttonbar.component.html',\r\n\tstandalone: true, \r\n\timports: [\r\n\t\tButtonDirective,\r\n\t\tUrlOpenerDirective,\r\n\t\tHotkeyDirective,\r\n\t\tNgFor,\r\n\t\tNgIf\r\n\t],\r\n\tstyleUrls: ['./buttonbar.component.scss'],\r\n})\r\n\r\nexport class ButtonBarComponent extends CfDestroyRef implements OnInit, OnChanges {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tdialogService: CfDialogService = inject(CfDialogService);\r\n\terpService: ErpService = inject(ErpService);\r\n\telectronService: ElectronService = inject(ElectronService);\r\n\tpermissionService: CfPermissionsService = inject(CfPermissionsService);\r\n\tngZone: NgZone = inject(NgZone);\r\n\r\n\tbuttonsListVisible: boolean = false;\r\n\tbuttonsOrder: number[] = [];\r\n\tbuttonsSettingsDialogRef: CfDialogRef | null = null;\r\n\r\n\t@Input('buttons') buttons: ButtonBarItem[] = [];\r\n\t@Input({alias: 'buttonBarId', required: true}) buttonBarId: string | null = null;\r\n\t@ViewChild('buttonBarRow') buttonBarRow: ElementRef<HTMLDivElement> | undefined = undefined;\r\n\t@ViewChild('buttonBarToggleListButton') buttonBarToggleListButton: ElementRef<HTMLButtonElement> | undefined = undefined;\r\n\t@ViewChild('buttonBarList') buttonBarList: ElementRef<HTMLDivElement> | undefined = undefined;\r\n\r\n\t@HostListener('window:resize', ['$event'])\r\n\tonResize() {\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\t@HostListener('document:click', ['$event'])\r\n\tdocumentClick(event: PointerEvent) {\r\n\t\tif (this.buttonBarList !== undefined && this.buttonsListVisible) {\r\n\t\t\tif (this.buttonBarToggleListButton !== undefined && event.composedPath().includes(this.buttonBarToggleListButton.nativeElement)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (event.composedPath().includes(this.buttonBarList.nativeElement)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.toggleButtonsList();\r\n\t\t}\r\n\t}\r\n\r\n\tget visibleButtons(): ButtonBarItem[] {\r\n\t\tlet buttons: ButtonBarItem[] = [];\r\n\r\n\t\tthis.buttonsOrder.forEach(buttonId => {\r\n\t\t\tconst button: ButtonBarItem | undefined = this.buttons.find(({id}) => id === buttonId);\r\n\t\t\tif (button !== undefined) {\r\n\t\t\t\tbuttons.push(button);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t//CHECK\r\n\t\tthis.buttons.forEach(button => {\r\n\t\t\tif (!this.buttonsOrder.includes(button.id)) {\r\n\t\t\t\tthis.buttonsOrder.push(button.id);\r\n\t\t\t\tbuttons.push(button);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tbuttons = buttons.filter(filterByPermissions(this.permissionService));\r\n\r\n\t\treturn buttons;\r\n\t}\r\n\r\n\tget invisibleButtons(): ButtonBarItem[] {\r\n\t\tif (this.buttonBarRow === undefined) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst elements: HTMLCollectionOf<Element> = this.buttonBarRow.nativeElement.getElementsByClassName('button-bar-button');\r\n\t\tif (elements.length === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst firstElementTop: number = elements[0].getBoundingClientRect().top;\r\n\r\n\t\tlet buttons: ButtonBarItem[] = [];\r\n\t\tfor (let i = 0; i < elements.length; i++) {\r\n\t\t\tif (elements[i].getBoundingClientRect().top !== firstElementTop) {\r\n\t\t\t\tconst buttonId: number = parseInt(elements[i].id.replace('bbb-', ''));\r\n\t\t\t\tconst button: ButtonBarItem | undefined = this.visibleButtons.find(({id}) => id === buttonId);\r\n\t\t\t\tif (button !== undefined) {\r\n\t\t\t\t\tbuttons.push(button);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbuttons = buttons.filter(filterByPermissions(this.permissionService));\r\n\r\n\t\treturn buttons;\r\n\t}\r\n\r\n\tisDisabled(button: ButtonBarItem): boolean | null {\r\n\t\tif (button.isDisabled === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (typeof button.isDisabled === 'boolean') {\r\n\t\t\treturn button.isDisabled;\r\n\t\t}\r\n\r\n\t\treturn button.isDisabled();\r\n\t}\r\n\r\n\tlabelHandler(button: ButtonBarItem): string | null {\r\n\t\treturn buttonBarLabelHandler(button);\r\n\t}\r\n\r\n\tseverityHandler(button: ButtonBarItem): string {\r\n\t\treturn buttonBarSeverityHandler(button);\r\n\t}\r\n\r\n\tappUrlOpenerUrlHandler(button: ButtonBarItem): string | null {\r\n\t\tif (button.appUrlOpenerUrl === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (typeof button.appUrlOpenerUrl === 'function') {\r\n\t\t\treturn button.appUrlOpenerUrl();\r\n\t\t}\r\n\r\n\t\treturn button.appUrlOpenerUrl;\r\n\t}\r\n\r\n\tasync clickHandler(button: ButtonBarItem, invisible: boolean = false): Promise<void> {\r\n\t\tif (invisible) {\r\n\t\t\tthis.toggleButtonsList();\r\n\t\t}\r\n\t\t\r\n\t\tif (button.clickCallback !== undefined) {\r\n\t\t\tbutton.clickCallback();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (button.dialog !== undefined) {\r\n\t\t\tif (typeof button.dialog === 'string') {\r\n\t\t\t\tthis.dialogService.openPredefined(button.dialog);\r\n\t\t\t} else if (typeof button.dialog === 'function') {\r\n\t\t\t\tthis.dialogService.openImport(button.dialog);\r\n\t\t\t} else {\r\n\t\t\t\tlet dialogRef: CfDialogRef<any> | null = null;\r\n\t\t\t\tlet configuration: CfDialogConfiguration | undefined = undefined;\r\n\t\t\t\tif (button.dialog.configuration !== undefined) {\r\n\t\t\t\t\tif (typeof button.dialog.configuration === 'function') {\r\n\t\t\t\t\t\tconfiguration = button.dialog.configuration();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconfiguration = {...button.dialog.configuration};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (button.dialog.name !== undefined) {\r\n\t\t\t\t\tdialogRef = await this.dialogService.openPredefined(button.dialog.name, configuration);\r\n\t\t\t\t} else if (button.dialog.component !== undefined) {\r\n\t\t\t\t\tdialogRef = await this.dialogService.openImport(button.dialog.component, configuration);\r\n\t\t\t\t}\r\n\t\t\t\tif (dialogRef !== null) {\r\n\t\t\t\t\tif (button.dialog.title !== undefined) {\r\n\t\t\t\t\t\tthis.electronService.setTitle(button.dialog.title, dialogRef);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleButtonsList(): void {\r\n\t\tthis.buttonsListVisible = !this.buttonsListVisible;\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tasync openButtonsSettings(): Promise<void> {\r\n\t\tthis.toggleButtonsList();\r\n\t\tthis.buttonsSettingsDialogRef = await this.dialogService.openImport(() => import('../buttonbarordermodal/buttonbarordermodal.component').then(c => c.ButtonBarOrderModalComponent), {\r\n\t\t\tdata: {\r\n\t\t\t\tbuttons: this.visibleButtons\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.buttonsSettingsDialogRef.onCloseValue.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((buttonsOrder: number[]) => {\r\n\t\t\tthis.buttonsOrder = buttonsOrder;\r\n\t\t\tthis.saveConfiguration();\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t});\r\n\t}\r\n\r\n\tloadConfiguration(): void {\r\n\t\tif (this.buttonBarId === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.erpService.getUserSettings('buttonbar', this.buttonBarId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((buttonsOrder: number[]) => {\r\n\t\t\tthis.buttonsOrder = buttonsOrder ?? [];\r\n\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\tthis.cdr.detectChanges();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tsaveConfiguration(): void {\r\n\t\tif (this.buttonBarId === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.erpService.setUserSettings('buttonbar', this.buttonBarId, this.buttonsOrder).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n\t\t\tthis.electronService.broadcast('button_bar_updated_' + this.buttonBarId, null);\r\n\t\t});\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (changes['buttons'] !== undefined) {\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.loadConfiguration();\r\n\t\tthis.electronService.onBroadcastMessage('button_bar_updated_' + this.buttonBarId, this.destroyRef).subscribe(() => {\r\n\t\t\tif (this.buttonsSettingsDialogRef !== null) {\r\n\t\t\t\tthis.buttonsSettingsDialogRef.forceClose();\r\n\t\t\t\tthis.buttonsSettingsDialogRef = null;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.buttonsListVisible) {\r\n\t\t\t\tthis.toggleButtonsList();\r\n\t\t\t}\r\n\r\n\t\t\tthis.loadConfiguration();\r\n\t\t});\r\n\t}\r\n\t\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n}\r\n","<div id=\"button-bar-container\">\r\n\t<div class=\"cf-flex cf-flex-spacer-2 cf-overflow-hidden cf-ai-center\">\r\n\t\t<div #buttonBarRow id=\"button-bar-row\" class=\"cf-flex cf-flex-spacer-2 cf-flex-wrap\">\r\n\t\t\t<button *ngFor=\"let button of visibleButtons\"\r\n\t\t\t\tcfButton\r\n\t\t\t\t[label]=\"labelHandler(button)\"\r\n\t\t\t\t[severity]=\"severityHandler(button)\"\r\n\t\t\t\t(click)=\"clickHandler(button)\"\r\n\t\t\t\t[hotkey]=\"button.hotkey ?? null\"\r\n\t\t\t\tappUrlOpener\r\n\t\t\t\t[urlState]=\"button.appUrlOpenerUrlState ?? {}\"\r\n\t\t\t\t[disabled]=\"isDisabled(button)\"\r\n\t\t\t\t[url]=\"appUrlOpenerUrlHandler(button)\"\r\n\t\t\t\t[icon]=\"button.icon ? button.icon() : null\"\r\n\t\t\t\tclass=\"button-bar-button\"\r\n\t\t\t\t[id]=\"'bbb-'+ button.id\"\r\n\t\t\t></button>\r\n\t\t</div>\r\n\t\t<button cfButton #buttonBarToggleListButton [severity]=\"'primary'\" [icon]=\"buttonsListVisible ? 'arrow-up-s-line' : 'arrow-down-s-line'\" (click)=\"toggleButtonsList()\" *ngIf=\"invisibleButtons.length > 0\"></button>\r\n\t\t<button cfButton [severity]=\"'secondary'\" [icon]=\"'settings-2-line'\" (click)=\"openButtonsSettings()\"></button>\r\n\t</div>\r\n\t<div id=\"button-bar-list\" #buttonBarList *ngIf=\"buttonsListVisible\">\r\n\t\t<button *ngFor=\"let button of invisibleButtons\"\r\n\t\t\tcfButton\r\n\t\t\t[label]=\"labelHandler(button)\"\r\n\t\t\t[severity]=\"severityHandler(button)\"\r\n\t\t\t(click)=\"clickHandler(button, true)\"\r\n\t\t\t[hotkey]=\"button.hotkey ?? null\"\r\n\t\t\tappUrlOpener\r\n\t\t\t[urlState]=\"button.appUrlOpenerUrlState ?? {}\"\r\n\t\t\t[disabled]=\"isDisabled(button)\"\r\n\t\t\t[url]=\"appUrlOpenerUrlHandler(button)\"\r\n\t\t\t[icon]=\"button.icon ? button.icon() : null\"\r\n\t\t\tclass=\"button-bar-button\"\r\n\t\t></button>\r\n\t</div>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from '@angular/core';\r\nimport { ButtonBarItem } from '../../interfaces/general.interfaces';\r\nimport { ButtonDirective, CfDialog, CfDragDirective, CfDragDropListDirective, CfPermissionsService, DragDropListSortEvent } from 'codefoxui';\r\nimport { NgFor } from '@angular/common';\r\nimport { buttonBarLabelHandler, buttonBarSeverityHandler, filterByPermissions } from '../../helpers';\r\n\r\n@Component({\r\n\ttemplateUrl: 'buttonbarordermodal.component.html',\r\n\tstandalone: true, \r\n\timports: [\r\n\t\tButtonDirective,\r\n\t\tNgFor,\r\n\t\tCfDragDropListDirective,\r\n\t\tCfDragDirective,\r\n\t],\r\n\tstyleUrls: ['./buttonbarordermodal.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class ButtonBarOrderModalComponent extends CfDialog implements OnInit {\r\n\r\n\tcdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\tpermissionService: CfPermissionsService = inject(CfPermissionsService);\r\n\r\n\tbuttons: ButtonBarItem[] = this.config.getData('buttons', []);\r\n\tfilteredButtons: ButtonBarItem[] = [];\r\n\r\n\tsorted(event: DragDropListSortEvent): void {\r\n\t\tif (event.oldPosition === null || event.newPosition === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t[this.filteredButtons[event.oldPosition], this.filteredButtons[event.newPosition]] = [this.filteredButtons[event.newPosition], this.filteredButtons[event.oldPosition]];\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\r\n\tsave(): void {\r\n\t\tconst result: number[] = this.filteredButtons.map(({id}) => id);\r\n\r\n\t\tthis.buttons.forEach(button => {\r\n\t\t\tif (!result.includes(button.id)) {\r\n\t\t\t\tresult.push(button.id);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.close(result);\r\n\t}\r\n\r\n\tlabelHandler(button: ButtonBarItem): string | null {\r\n\t\treturn buttonBarLabelHandler(button);\r\n\t}\r\n\r\n\tseverityHandler(button: ButtonBarItem): string {\r\n\t\treturn buttonBarSeverityHandler(button);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.filteredButtons = this.buttons.filter(filterByPermissions(this.permissionService))\r\n\t\tthis.cdr.detectChanges();\r\n\t}\r\n\t\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.cdr.detach();\r\n\t}\r\n}\r\n","<div class=\"cf-dialog-title\">Gombok sorrendjének beállítása</div>\r\n<div class=\"cf-mb-3 cf-dialog-content cf-overflow-y-hidden\">\r\n\t<div class=\"cf-flex cf-flex-spacer-2 cf-flex-column\" cfDragDropList (sorted)=\"sorted($event)\">\r\n\t\t<ng-container *ngFor=\"let button of filteredButtons;\">\r\n\t\t\t<button cfButton [severity]=\"'danger'\" [label]=\"labelHandler(button)\" [severity]=\"severityHandler(button)\" class=\"button-item\" cfDrag></button>\r\n\t\t</ng-container>\r\n\t</div>\r\n</div>\r\n<div class=\"cf-col-2 cf-flex cf-flex-right cf-flex-spacer cf-dialog-buttons\">\r\n\t<button cfButton [severity]=\"'success'\" [label]=\"'Mentés'\" (click)=\"save()\" class=\"cf-ml-2\"></button>\r\n\t<button cfButton [severity]=\"'danger'\" [label]=\"'Mégsem'\" (click)=\"close()\"></button>\r\n</div>\r\n","import { formatDate } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { HistoryLike } from '../interfaces/general.interfaces';\r\n\r\n@Pipe({\r\n\tname: 'historylabel',\r\n\tstandalone: true\r\n})\r\nexport class HistoryLabelPipe implements PipeTransform {\r\n\ttransform(historyLike: HistoryLike) {\r\n\t\tif (historyLike.updatedAt === null || historyLike.updatedAt === '') {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t\treturn [\r\n\t\t\t'Utoljára módosította: ',\r\n\t\t\thistoryLike.updatedByFullname + ',',\r\n\t\t\tformatDate(historyLike.updatedAt, 'yyyy. MM. dd HH:mm:ss', 'hu')\r\n\t\t].join(' ');\r\n\t}\r\n}\r\n","import { EnvironmentProviders, ErrorHandler, makeEnvironmentProviders, Type } from \"@angular/core\";\r\nimport { GlobalErrorHandler } from \"../classes\";\r\nimport { STATUS_BLOCK_COMPONENT } from \"../tokens/statusblock.token\";\r\nimport { HOME_ALLOWED_MODULE_TAGS } from \"../tokens\";\r\nimport { CF_PREDEFINED_DIALOGS, PredefinedDialogs } from \"codefoxui\";\r\n\r\nexport function provideGlobalErrorHandler(): EnvironmentProviders {\r\n    return makeEnvironmentProviders([{\r\n        provide: ErrorHandler,\r\n        useClass: GlobalErrorHandler\r\n    }]);\r\n}\r\n\r\nexport function provideStatusBlockComponent(statusBlockComponent: (() => Promise<Type<any>>) | null): EnvironmentProviders {\r\n    return makeEnvironmentProviders([{\r\n        provide: STATUS_BLOCK_COMPONENT,\r\n        useValue: statusBlockComponent\r\n    }])\r\n}\r\n\r\nexport function provideHomeAllowedModuleTags(tags: string[]): EnvironmentProviders {\r\n    return makeEnvironmentProviders([{\r\n        provide: HOME_ALLOWED_MODULE_TAGS,\r\n        useValue: tags\r\n    }]);\r\n}\r\n\r\n/**\r\n * Avaliable dialogs:\r\n * - fileuploadmodal\r\n * - filedownloadmodal\r\n * - printlabelmodal\r\n * - printingtimermodal\r\n*/\r\nexport function provideErpPredefinedDialogs(predefinedDialogs: PredefinedDialogs): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([{\r\n\t\tprovide: CF_PREDEFINED_DIALOGS,\r\n\t\tuseValue: {\r\n\t\t\t'fileuploadmodal': () => import('../components/fileuploadmodal/fileuploadmodal.component').then(c => c.FileuploadmodalComponent),\r\n\t\t\t'filedownloadmodal': () => import('../components/filedownloadmodal/filedownloadmodal.component').then(c => c.FiledownloadmodalComponent),\r\n\t\t\t'printlabelmodal': () => import('../components/printlabelmodal/printlabelmodal.component').then(c => c.PrintlabelmodalComponent),\r\n\t\t\t'printingtimermodal': () => import('../components/printingtimermodal/printingtimermodal.component').then(c => c.PrintingtimermodalComponent),\r\n\t\t\t'addresseditor': () => import('../components/addresseditor/addresseditor.component').then(c => c.AddresseditorComponent),\r\n\t\t\t...predefinedDialogs\r\n\t\t}\r\n\t}]);\r\n}\r\n","import { ActivatedRouteSnapshot, ResolveFn } from \"@angular/router\";\r\nimport { getIdFromParamMap } from \"../helpers\";\r\nimport { LabelValue } from \"codefoxui\";\r\nimport { inject } from \"@angular/core\";\r\nimport { ErpService } from \"../services\";\r\n\r\nexport const resolveId: ResolveFn<number | null> = (route: ActivatedRouteSnapshot) => getIdFromParamMap(route);\r\nexport const resolveList: <T>(endpoint: string[]) => ResolveFn<LabelValue<T>[]> = (endpoint: string[]) => () => inject(ErpService).getList(endpoint);\r\nexport const resolveLanguages = resolveList<string>(['languages']);\r\nexport const resolveCurrencies = resolveList<number>(['currencies', 'list']);\r\nexport const resolveCountries = () => inject(ErpService).getCountryList();\r\n","/*\n * Public API Surface of codefoxerpframe\n */\n\nexport * from './lib/classes';\nexport * from './lib/components';\nexport * from './lib/const';\nexport * from './lib/directives';\nexport * from './lib/helpers';\nexport * from './lib/interfaces';\nexport * from './lib/pipes';\nexport * from './lib/providers';\nexport * from './lib/services';\nexport * from './lib/tokens';\nexport * from './lib/validators';\nexport * from './lib/resolvers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","filter","i1"],"mappings":"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"}