oip-common 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/package.json +8 -1
- package/fesm2022/oip-common.mjs +0 -4267
- package/fesm2022/oip-common.mjs.map +0 -1
- package/index.d.ts +0 -1028
- package/templates/api.ejs +0 -30
- package/templates/data-contract-jsdoc.ejs +0 -37
- package/templates/data-contracts.ejs +0 -52
- package/templates/enum-data-contract.ejs +0 -12
- package/templates/http-client.ejs +0 -245
- package/templates/interface-data-contract.ejs +0 -10
- package/templates/object-field-jsdoc.ejs +0 -28
- package/templates/procedure-call.ejs +0 -100
- package/templates/route-docs.ejs +0 -29
- package/templates/route-name.ejs +0 -42
- package/templates/route-type.ejs +0 -23
- package/templates/route-types.ejs +0 -18
- package/templates/type-data-contract.ejs +0 -15
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oip-common.mjs","sources":["../../../projects/oip-common/src/services/top-bar.service.ts","../../../projects/oip-common/src/services/msg.service.ts","../../../projects/oip-common/src/services/base-data.service.ts","../../../projects/oip-common/src/services/app-title.service.ts","../../../projects/oip-common/src/components/base-module.component.ts","../../../projects/oip-common/src/services/security-data.service.ts","../../../projects/oip-common/src/components/security.component.ts","../../../projects/oip-common/src/helpers/date.helper.ts","../../../projects/oip-common/src/services/app.layout.service.ts","../../../projects/oip-common/src/components/app-configurator.component.ts","../../../projects/oip-common/src/components/logo.component.ts","../../../projects/oip-common/src/services/security.service.ts","../../../projects/oip-common/src/services/user.service.ts","../../../projects/oip-common/src/components/top-bar.component.ts","../../../projects/oip-common/src/components/footer.component.ts","../../../projects/oip-common/src/api/http-client.ts","../../../projects/oip-common/src/api/Menu.ts","../../../projects/oip-common/src/services/app.menu.service.ts","../../../projects/oip-common/src/components/menu/menu-item.component.ts","../../../projects/oip-common/src/components/menu/menu-item-create-dialog.component.ts","../../../projects/oip-common/src/components/menu/menu-item-edit-dialog.component.ts","../../../projects/oip-common/src/components/menu/menu.component.ts","../../../projects/oip-common/src/components/sidebar.component.ts","../../../projects/oip-common/src/components/app.layout.component.ts","../../../projects/oip-common/src/components/app-floating-configurator.component.ts","../../../projects/oip-common/src/components/notfound.component.ts","../../../projects/oip-common/src/components/auth/unauthorized/unauthorized.component.ts","../../../projects/oip-common/src/components/auth/error/error.component.ts","../../../projects/oip-common/src/components/profile.component.ts","../../../projects/oip-common/src/services/l10n.service.ts","../../../projects/oip-common/src/components/config.component.ts","../../../projects/oip-common/src/components/db-migration.component.ts","../../../projects/oip-common/src/api/Module.ts","../../../projects/oip-common/src/components/app-modules.component.ts","../../../projects/oip-common/src/services/auth.service.ts","../../../projects/oip-common/src/services/security-storage.service.ts","../../../projects/oip-common/src/intercepts/i18n-intercept.service.ts","../../../projects/oip-common/src/modules/secure.pipe.ts","../../../projects/oip-common/src/modules/http-loader.factory.ts","../../../projects/oip-common/src/public-api.ts","../../../projects/oip-common/src/oip-common.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { TopBarDto } from '../dtos/top-bar.dto';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TopBarService {\r\n topBarItems: TopBarDto[] = [];\r\n\r\n private _activeId: string | undefined;\r\n\r\n get availableTopBarItems(): TopBarDto[] {\r\n return this.topBarItems;\r\n }\r\n\r\n get activeTopBarItem(): TopBarDto | undefined {\r\n if (this._activeId === undefined) {\r\n return undefined;\r\n }\r\n return this.topBarItems.find((topBarItem: TopBarDto) => topBarItem.id === this._activeId);\r\n }\r\n\r\n get activeId(): string | undefined {\r\n return this._activeId;\r\n }\r\n\r\n set activeId(value: string | undefined) {\r\n this._activeId = value;\r\n if (this.activeTopBarItem?.click) this.activeTopBarItem.click();\r\n }\r\n\r\n constructor() {}\r\n\r\n // Set tob bar items\r\n setTopBarItems(items: TopBarDto[]) {\r\n this.topBarItems = items;\r\n }\r\n\r\n checkId(id: string): boolean {\r\n if (this.activeTopBarItem === undefined && id === 'content') return true;\r\n if (this.activeTopBarItem === undefined) return false;\r\n return this.activeTopBarItem.id == id;\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ToastMessageOptions } from 'primeng/api';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MsgService {\n protected readonly messageService: MessageService = inject(MessageService);\n private readonly translate = inject(TranslateService);\n private readonly lifetime: number = 2000;\n\n add(msg: ToastMessageOptions) {\n this.messageService.add(msg);\n }\n\n success(detail: any, summary: any = this.translate.instant('msgService.success'), life: number = this.lifetime) {\n this.messageService.add({\n severity: 'success',\n summary: summary,\n detail: detail,\n life: life\n });\n }\n\n info(detail: any, summary: any = this.translate.instant('msgService.info'), life: number = this.lifetime) {\n this.messageService.add({\n severity: 'info',\n summary: summary,\n detail: detail,\n life: life\n });\n }\n\n warn(detail: any, summary: any = this.translate.instant('msgService.warn'), life: number = this.lifetime) {\n this.messageService.add({\n severity: 'warn',\n summary: summary,\n detail: detail,\n life: life\n });\n }\n\n error(detail: any, summary: any = this.translate.instant('msgService.error'), life: number = this.lifetime) {\n if (detail instanceof HttpErrorResponse) {\n summary = `Error: ${detail.status} ${detail.statusText}`;\n detail = `${detail.name} \\r\\n ${detail.message}`;\n }\n this.messageService.add({\n severity: 'error',\n summary: summary,\n detail: detail.toString(),\n life: life\n });\n }\n\n contrast(detail: any, summary: any = this.translate.instant('msgService.error'), life: number = this.lifetime) {\n this.messageService.add({\n severity: 'contrast',\n summary: summary,\n detail: detail,\n life: life\n });\n }\n\n secondary(detail: any, summary: any = this.translate.instant('msgService.secondary'), life: number = this.lifetime) {\n this.messageService.add({\n severity: 'secondary',\n summary: summary,\n detail: detail,\n life: life\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { lastValueFrom, Observable } from 'rxjs';\n\n/**\n * BaseDataService provides a unified interface for sending HTTP requests\n * using Angular's HttpClient. It supports standard HTTP methods and automatic\n * credential handling.\n */\n@Injectable()\nexport class BaseDataService {\n private readonly http = inject(HttpClient);\n\n /**\n * Gets the base URL of the application from the HTML <base> tag.\n */\n get baseUrl(): string {\n return document.getElementsByTagName('base')[0].href;\n }\n\n /**\n * Sends an HTTP request with the specified method and data.\n *\n * @template TResponse - Expected response type.\n * @param url - The target URL for the HTTP request.\n * @param method - The HTTP method to use (GET, PUT, POST, DELETE). Default is 'GET'.\n * @param data - An object containing request parameters or payload.\n * @returns A promise that resolves to the response of type TResponse.\n */\n sendRequest<TResponse>(\n url: string,\n method: 'GET' | 'PUT' | 'POST' | 'DELETE' = 'GET',\n data: any = {}\n ): Promise<TResponse> {\n const httpOptions = { withCredentials: true };\n let result: Observable<TResponse>;\n\n switch (method) {\n case 'GET':\n result = this.http.get<TResponse>(url, { params: data });\n break;\n case 'PUT':\n result = this.http.put<TResponse>(url, data, httpOptions);\n break;\n case 'POST':\n result = this.http.post<TResponse>(url, data, httpOptions);\n break;\n case 'DELETE':\n result = this.http.request<TResponse>('DELETE', url, {\n body: data,\n headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\n withCredentials: true\n });\n break;\n }\n\n return lastValueFrom(result);\n }\n\n /**\n * Sends a GET request and retrieves a response as a Blob.\n *\n * @param url - The target URL for the GET request.\n * @returns A promise that resolves to a Object response.\n */\n getBlob(url: string): Promise<object> {\n const httpOptions = {\n responseType: 'blob' as 'json',\n withCredentials: true\n };\n const result = this.http.get(url, httpOptions);\n return lastValueFrom(result);\n }\n}\n","import { inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n/**\r\n * Service to manage the application title.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppTitleService {\r\n private readonly title = inject(Title);\r\n private titleSubject = new BehaviorSubject<string>('');\r\n public title$ = this.titleSubject.asObservable();\r\n\r\n /**\r\n * Set the title of the current HTML document.\r\n * @param newTitle\r\n */\r\n setTitle(newTitle: string): void {\r\n this.title.setTitle(newTitle);\r\n this.titleSubject.next(newTitle);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, effect, inject, OnDestroy, OnInit, signal, WritableSignal } from '@angular/core';\r\nimport { TopBarDto } from '../dtos/top-bar.dto';\r\nimport { TopBarService } from '../services/top-bar.service';\r\nimport { MsgService } from '../services/msg.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { BaseDataService } from '../services/base-data.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { AppTitleService } from '../services/app-title.service';\r\n\r\ninterface BaseComponentLocalization {\r\n security: string;\r\n settings: string;\r\n content: string;\r\n}\r\n\r\n@Component({ standalone: true, template: '' })\r\nexport abstract class BaseModuleComponent<TBackendStoreSettings, TLocalStoreSettings> implements OnInit, OnDestroy {\r\n /**\r\n * Provides access to topbar related functionality, such as managing visibility and content.\r\n * @type {TopBarService}\r\n */\r\n public readonly topBarService: TopBarService = inject(TopBarService);\r\n\r\n /**\r\n * Provides access to information about the current route.\r\n * This includes route parameters, data, and the route's path.\r\n */\r\n public readonly route: ActivatedRoute = inject(ActivatedRoute);\r\n\r\n /**\r\n * Provides access to messaging services.\r\n */\r\n public readonly msgService = inject(MsgService);\r\n\r\n /**\r\n * Provides access to base data service functionality.\r\n * @deprecated The method should not be used\r\n */\r\n public readonly baseDataService: BaseDataService = inject(BaseDataService);\r\n\r\n /**\r\n * Provides access to translation functionality.\r\n */\r\n public readonly translateService = inject(TranslateService);\r\n\r\n /**\r\n * Provides access to the application's title service.\r\n */\r\n public readonly appTitleService = inject(AppTitleService);\r\n\r\n /**\r\n * Reference to the ChangeDetector. Used to trigger change detection manually.\r\n */\r\n private changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * Represents a subscription to an observable.\r\n * Manages the lifecycle of receiving data from the observable and allows unsubscribing to stop receiving data.\r\n * @type {Subscription}\r\n */\r\n private subscriptions: Subscription[] = [];\r\n /**\r\n * Configuration object for backend storage\r\n * @type {TBackendStoreSettings}\r\n */\r\n public settings: TBackendStoreSettings = {} as TBackendStoreSettings;\r\n\r\n /**\r\n * Configuration object for local storage.\r\n * @type {TLocalStoreSettings}\r\n */\r\n public _localSettings: TLocalStoreSettings = {} as TLocalStoreSettings;\r\n\r\n /**\r\n * A signal representing the local application settings. Changes to this signal\r\n * propagate updates to the underlying local store settings.\r\n * @type {WritableSignal<TLocalStoreSettings>}\r\n */\r\n public localSettings: WritableSignal<TLocalStoreSettings> = signal<TLocalStoreSettings>(this._localSettings);\r\n\r\n /**\r\n * A Subject emitting updates to local store settings. Observables can subscribe to this Subject to react to changes in local settings.\r\n * @type {Subject<TLocalStoreSettings>}\r\n */\r\n public localSettingsUpdate: Subject<TLocalStoreSettings> = new Subject<TLocalStoreSettings>();\r\n\r\n /**\r\n * The title of the component. Get from Title in ngOnInit\r\n * @type {string}\r\n */\r\n public title: string;\r\n\r\n /**\r\n * Updates local settings and persists them to local storage.\r\n * @return {void}\r\n */\r\n private onConfigUpdate(): void {\r\n if (Object.keys(this.localSettings()).length > 0) {\r\n this._localSettings = { ...this.localSettings() };\r\n this.localSettingsUpdate.next(this._localSettings);\r\n localStorage.setItem(`Instance_${this.id}`, JSON.stringify(this._localSettings));\r\n }\r\n }\r\n\r\n private getLocalStorageSettings() {\r\n try {\r\n const localStorageSettingsString = localStorage.getItem(`Instance_${this.id}`);\r\n if (localStorageSettingsString != null) {\r\n this.localSettings.set(JSON.parse(localStorageSettingsString) as TLocalStoreSettings);\r\n }\r\n } catch (error) {\r\n this.msgService.error(error, 'Error parsing layoutConfig:');\r\n this.localSettings.set({} as TLocalStoreSettings);\r\n }\r\n }\r\n\r\n /**\r\n * A unique numerical identifier for the module.\r\n * @type {number}\r\n */\r\n id: number | undefined = undefined;\r\n\r\n /**\r\n * The name of the controller currently handling the request.\r\n * @type {string}\r\n */\r\n controller: string;\r\n\r\n /**\r\n * Checks if the content ID is present.\r\n * @returns {boolean} True if the content ID is present, false otherwise.\r\n */\r\n get isContent(): boolean {\r\n return this.topBarService.checkId('content');\r\n }\r\n\r\n /**\r\n * Checks if the settings ID is present.\r\n * @returns {boolean} True if the settings ID is present, false otherwise.\r\n */\r\n get isSettings(): boolean {\r\n return this.topBarService.checkId('settings');\r\n }\r\n\r\n /**\r\n * Checks if the security ID is present.\r\n * @returns {boolean} True if the security ID is present, false otherwise.\r\n */\r\n get isSecurity(): boolean {\r\n return this.topBarService.checkId('security');\r\n }\r\n\r\n /**\r\n * Defines the top bar items.\r\n */\r\n public topBarItems: TopBarDto[] = [\r\n { id: 'content', icon: 'pi-box', caption: '' },\r\n { id: 'settings', icon: 'pi-cog', caption: '' },\r\n { id: 'security', icon: 'pi-lock', caption: '' }\r\n ];\r\n\r\n /**\r\n * Initializes the component and subscribes to local settings updates.\r\n */\r\n constructor() {\r\n effect(() => {\r\n const config = this.localSettings();\r\n if (config) {\r\n this.onConfigUpdate();\r\n }\r\n });\r\n this.subscriptions.push(\r\n this.route.url.subscribe((url) => {\r\n this.controller = url[0].path;\r\n })\r\n );\r\n this.subscriptions.push(\r\n this.route.paramMap.subscribe((params) => {\r\n this.id = +params.get('id');\r\n this.getLocalStorageSettings();\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called when a component is destroyed.\r\n * Unsubscribes from all subscriptions to prevent memory leaks,\r\n * resets the top bar items to an empty array, and sets the active ID\r\n * to the ID of the first top bar item (if available).\r\n */\r\n ngOnDestroy() {\r\n this.topBarService.setTopBarItems([]);\r\n this.topBarService.activeId = this.topBarItems[0].id;\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n }\r\n\r\n /**\r\n * Initializes the component. Subscribes to translation service to set captions for top bar items,\r\n * sets the top bar items via the top bar service, sets the active ID,\r\n * subscribes to route parameters to get the ID, and retrieves settings.\r\n * @return {Promise<void>} A promise that resolves when the initialization is complete.\r\n */\r\n async ngOnInit(): Promise<void> {\r\n this.subscriptions.push(\r\n this.translateService.get('baseComponent').subscribe((value: BaseComponentLocalization) => {\r\n this.topBarItems[0].caption = value.content;\r\n this.topBarItems[1].caption = value.settings;\r\n this.topBarItems[2].caption = value.security;\r\n })\r\n );\r\n\r\n this.topBarService.setTopBarItems(this.topBarItems);\r\n this.topBarService.activeId = this.topBarItems[0].id;\r\n\r\n await this.getSettings();\r\n\r\n this.subscriptions.push(\r\n this.appTitleService.title$.subscribe((title) => {\r\n this.title = title;\r\n this.changeDetectorRef.detectChanges();\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves module instance settings.\r\n * @return {Promise<void>} A promise that resolves when settings are retrieved.\r\n */\r\n async getSettings(): Promise<void> {\r\n try {\r\n this.settings = await this.baseDataService.sendRequest<TBackendStoreSettings>(\r\n `${this.baseDataService.baseUrl}api/${this.controller}/get-module-instance-settings?id=${this.id}`\r\n );\r\n } catch (error) {\r\n this.msgService.error(error);\r\n }\r\n }\r\n\r\n /**\r\n * Saves the provided settings to the backend.\r\n * @param {TLocalStoreSettings} settings - The settings object to save.\r\n * @return {Promise<void>} A promise that resolves when the settings are saved. Reject if an error occurs.\r\n */\r\n async saveSettings(settings: TBackendStoreSettings): Promise<void> {\r\n await this.baseDataService\r\n .sendRequest(`api/${this.controller}/put-module-instance-settings`, 'PUT', {\r\n id: this.id,\r\n settings: settings\r\n })\r\n .then(() => {\r\n this.msgService.success(this.translateService.instant('baseComponent.success'));\r\n })\r\n .catch((error) => {\r\n this.msgService.error(error);\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseDataService } from './base-data.service';\r\nimport { SecurityDto } from '../dtos/security.dto';\r\nimport { PutSecurityDto } from '../dtos/put-security.dto';\r\n\r\n@Injectable()\r\nexport class SecurityDataService extends BaseDataService {\r\n getSecurity(controller: string, id: number) {\r\n return this.sendRequest<SecurityDto[]>(this.baseUrl + `api/${controller}/get-security?id=${id}`);\r\n }\r\n\r\n saveSecurity(controller: string, request: PutSecurityDto) {\r\n return this.sendRequest<any>(this.baseUrl + `api/${controller}/put-security`, 'PUT', request);\r\n }\r\n\r\n getRealmRoles() {\r\n return this.sendRequest<string[]>(this.baseUrl + `api/security/get-realm-roles`);\r\n }\r\n}\r\n","import { Component, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ButtonModule } from 'primeng/button';\nimport { FormsModule } from '@angular/forms';\nimport { MsgService } from './../services/msg.service';\nimport { SecurityDataService } from './../services/security-data.service';\nimport { PutSecurityDto } from './../dtos/put-security.dto';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'security',\n template: `\n <div class=\"flex flex-col md:flex-row gap-8\">\n <div class=\"md:w-1/2\">\n <div class=\"card flex flex-col gap-4\">\n <div class=\"font-semibold text-xl\">\n {{ 'securityComponent.security' | translate }}\n </div>\n @for (item of securityData; track item.name) {\n <div class=\"flex flex-col gap-2\">\n <label htmlFor=\"oip-security-multiselect-{{ item.name }}\">\n {{ item.name }}\n <span class=\"pi pi-question-circle\" pTooltip=\"{{ item.description }}\" tooltipPosition=\"right\"></span>\n </label>\n <p-multiSelect\n id=\"oip-security-multiselect-{{ item.name }}\"\n placeholder=\"Select roles\"\n [maxSelectedLabels]=\"10\"\n [options]=\"roles\"\n [(ngModel)]=\"item.roles\" />\n </div>\n }\n <div class=\"flex justify-content-end flex-wrap\">\n <p-button\n icon=\"pi pi-save\"\n id=\"oip-security-save-button\"\n label=\"{{ 'securityComponent.save' | translate }}\"\n (click)=\"saveClick()\"\n (keydown)=\"saveKeyDown($event)\" />\n </div>\n </div>\n </div>\n </div>\n `,\n imports: [MultiSelectModule, TooltipModule, FormsModule, ButtonModule, TranslatePipe],\n standalone: true\n})\nexport class SecurityComponent implements OnInit, OnDestroy {\n private readonly msgService = inject(MsgService);\n private readonly dataService = inject(SecurityDataService);\n private readonly translateService = inject(TranslateService);\n securityData: any[];\n @Input() id: number;\n @Input() controller: string;\n roles: string[] = [];\n\n ngOnDestroy(): void {\n // on destroy\n }\n\n ngOnInit(): void {\n if (!this.id) {\n this.msgService.error('Module id not passed!');\n }\n if (!this.controller) {\n this.msgService.error('Controller not passed!');\n }\n this.dataService.getSecurity(this.controller, this.id).then(\n (result) => {\n this.securityData = result;\n },\n (error) => this.msgService.error(error)\n );\n\n this.dataService.getRealmRoles().then(\n (result) => {\n this.roles = result;\n },\n (error) => this.msgService.error(error)\n );\n }\n\n saveClick() {\n const request: PutSecurityDto = {\n id: this.id,\n securities: this.securityData\n };\n this.dataService.saveSecurity(this.controller, request).then(\n (result) => {\n this.msgService.success(this.translateService.instant('securityComponent.savedSecurity'));\n },\n (error) => this.msgService.error(error)\n );\n }\n\n saveKeyDown($event: KeyboardEvent) {\n if ($event.key === 'Enter' || $event.key === 'Space') {\n this.saveKeyDown(null);\n }\n }\n}\n","/**\n * Convert Date to string in format 2022-02-22\n * @param date\n */\nexport function dateToString(date: Date): string {\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const day = date.getDate().toString().padStart(2, '0');\n\n return `${year}-${month}-${day}`;\n}\n\n/**\n * Convert string in format 2022-02-22 to Date\n * @param date\n */\nexport function stringToDate(date: string): Date {\n const dateParts = date.split('-');\n const day = parseInt(dateParts[2], 10);\n const month = parseInt(dateParts[1], 10) - 1;\n const year = parseInt(dateParts[0], 10);\n\n return new Date(year, month, day);\n}\n\n/**\n * Add days to date\n * @param date\n * @param days\n */\nexport function addDays(date: Date, days: number): Date {\n const clonedDate = structuredClone(date);\n clonedDate.setDate(clonedDate.getDate() + days);\n return clonedDate;\n}\n\n/**\n * Get today's date\n * @param date\n */\nexport function getTodayDate(): Date {\n const date = new Date();\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\n/* Convert dateformat from DatePipe to PrimeNG*/\nexport function convertToPrimeNgDateFormat(dateformat: string): string {\n switch (dateformat) {\n case 'dd.MM.yyyy':\n return 'dd.mm.yy';\n case 'dd.MM.yy':\n return 'dd.mm.y';\n case 'yyyy-MM-dd':\n return 'yy-mm-dd';\n case 'dd.MMM.yyyy':\n return 'dd.M.yy';\n default:\n console.error(`Failed to convert format: ${dateformat}`);\n }\n}\n\n/**\n * Convert all properties of an object with string dates to Date objects\n * @param obj\n */\nexport function restoreDates(obj: any) {\n if (obj === null || typeof obj !== 'object') return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => restoreDates(item));\n }\n\n const result = {};\n for (const key in obj) {\n const value = obj[key];\n\n if (typeof value === 'string' && isIsoDate(value)) {\n result[key] = new Date(value);\n } else if (typeof value === 'object' && value !== null && !(value instanceof Date)) {\n result[key] = restoreDates(value);\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * Check if a string is a date in ISO format\n * @param str\n */\nexport function isIsoDate(str: string) {\n return /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$/.test(str);\n}\n","import { Injectable, effect, signal, computed } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { convertToPrimeNgDateFormat } from '../helpers/date.helper';\n\nexport interface AppConfig {\n preset?: string;\n primary?: string;\n surface?: string | null;\n darkTheme?: boolean;\n menuMode?: string;\n language?: string;\n dateFormat: string;\n timeFormat: string;\n dateTimeFormat: string;\n timeZone: string;\n}\n\ninterface LayoutState {\n staticMenuDesktopInactive?: boolean;\n overlayMenuActive?: boolean;\n configSidebarVisible?: boolean;\n staticMenuMobileActive?: boolean;\n menuHoverActive?: boolean;\n}\n\ninterface MenuChangeEvent {\n key: string;\n routeEvent?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutService {\n _config: AppConfig = this.getAppConfigFromStorage();\n\n _state: LayoutState = {\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n };\n\n layoutConfig = signal<AppConfig>(this._config);\n\n layoutState = signal<LayoutState>(this._state);\n\n private readonly configUpdate = new Subject<AppConfig>();\n\n private readonly overlayOpen = new Subject<any>();\n\n private readonly menuSource = new Subject<MenuChangeEvent>();\n\n private readonly resetSource = new Subject();\n\n menuSource$ = this.menuSource.asObservable();\n\n resetSource$ = this.resetSource.asObservable();\n\n configUpdate$ = this.configUpdate.asObservable();\n\n overlayOpen$ = this.overlayOpen.asObservable();\n\n theme = computed(() => (this.layoutConfig()?.darkTheme ? 'light' : 'dark'));\n\n isSidebarActive = computed(() => this.layoutState().overlayMenuActive || this.layoutState().staticMenuMobileActive);\n\n isDarkTheme = computed(() => this.layoutConfig().darkTheme);\n\n getPrimary = computed(() => this.layoutConfig().primary);\n\n getSurface = computed(() => this.layoutConfig().surface);\n\n isOverlay = computed(() => this.layoutConfig().menuMode === 'overlay');\n\n language = computed(() => this.layoutConfig().language);\n\n dateFormat = computed(() => this.layoutConfig().dateFormat);\n\n primeNgDateFormat = computed(() => convertToPrimeNgDateFormat(this.layoutConfig().dateFormat));\n\n timeFormat = computed(() => this.layoutConfig().timeFormat);\n\n dateTimeFormat = computed(() => `${this.layoutConfig().dateFormat} ${this.layoutConfig().timeFormat}`);\n\n monthFormat = computed(() => {\n const reDay = /d+/i;\n const reDelimeter = /^[^\\w]|[^\\w]$|([^\\w])\\1+/;\n const ngDateFormat = convertToPrimeNgDateFormat(this.layoutConfig().dateFormat);\n const ngDate = ngDateFormat.replace(reDay, '');\n const dateGroups = ngDate.match(reDelimeter);\n if (Array.isArray(dateGroups) && dateGroups.length > 1) {\n return dateGroups[1] !== undefined\n ? ngDate.replace(dateGroups[0], '')\n : ngDate.startsWith(dateGroups[0])\n ? ngDate.substring(1)\n : ngDate.substring(0, ngDate.length - 1);\n }\n return ngDateFormat;\n });\n\n timeZone = computed(() => this.layoutConfig().timeZone);\n\n transitionComplete = signal<boolean>(false);\n\n private initialized = false;\n\n constructor() {\n effect(() => {\n const config = this.layoutConfig();\n if (config) {\n this.onConfigUpdate();\n }\n });\n\n effect(() => {\n const config = this.layoutConfig();\n\n if (!this.initialized || !config) {\n this.initialized = true;\n return;\n }\n\n this.handleDarkModeTransition(config);\n });\n }\n\n /**\n * Get application settings from browser storage\n * @returns AppConfig\n */\n private getAppConfigFromStorage(): AppConfig {\n const appConfigUiString = localStorage.getItem('layoutConfig');\n if (appConfigUiString != null) {\n const config = JSON.parse(appConfigUiString) as AppConfig;\n config.timeZone ??= Intl.DateTimeFormat().resolvedOptions().timeZone;\n return config;\n }\n return {\n preset: 'Aura',\n primary: 'emerald',\n surface: null,\n darkTheme: false,\n menuMode: 'static',\n language: 'ru',\n dateFormat: 'yyyy-MM-dd',\n timeFormat: 'HH:mm:ss',\n dateTimeFormat: 'yyyy-MM-dd HH:mm:ss',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone\n };\n }\n\n private handleDarkModeTransition(config: AppConfig): void {\n if ((document as any).startViewTransition) {\n this.startViewTransition(config);\n } else {\n this.toggleDarkMode(config);\n this.onTransitionEnd();\n }\n }\n\n private startViewTransition(config: AppConfig): void {\n const transition = (document as any).startViewTransition(() => {\n this.toggleDarkMode(config);\n });\n\n transition.ready\n .then(() => {\n this.onTransitionEnd();\n })\n .catch(() => {});\n }\n\n toggleDarkMode(config?: AppConfig): void {\n const _config = config || this.layoutConfig();\n if (_config.darkTheme) {\n document.documentElement.classList.add('app-dark');\n } else {\n document.documentElement.classList.remove('app-dark');\n }\n }\n\n private onTransitionEnd() {\n this.transitionComplete.set(true);\n setTimeout(() => {\n this.transitionComplete.set(false);\n });\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.layoutState.update((prev) => ({ ...prev, overlayMenuActive: !this.layoutState().overlayMenuActive }));\n\n if (this.layoutState().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.layoutState.update((prev) => ({\n ...prev,\n staticMenuDesktopInactive: !this.layoutState().staticMenuDesktopInactive\n }));\n } else {\n this.layoutState.update((prev) => ({\n ...prev,\n staticMenuMobileActive: !this.layoutState().staticMenuMobileActive\n }));\n\n if (this.layoutState().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n onConfigUpdate() {\n this._config = { ...this.layoutConfig() };\n this.configUpdate.next(this.layoutConfig());\n localStorage.setItem('layoutConfig', JSON.stringify(this.layoutConfig()));\n }\n\n onMenuStateChange(event: MenuChangeEvent) {\n this.menuSource.next(event);\n }\n\n reset() {\n this.resetSource.next(true);\n }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { Component, computed, inject, PLATFORM_ID, signal, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { $t, updatePreset, updateSurfacePalette } from '@primeng/themes';\nimport Aura from '@primeng/themes/aura';\nimport Lara from '@primeng/themes/lara';\nimport Nora from '@primeng/themes/nora';\nimport { PrimeNG } from 'primeng/config';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { LayoutService } from '../services/app.layout.service';\n\nconst presets = {\n Aura,\n Lara,\n Nora\n} as const;\n\ndeclare type KeyOfType<T> = keyof T extends infer U ? U : never;\n\ndeclare type SurfacesType = {\n name?: string;\n palette?: {\n 0?: string;\n 50?: string;\n 100?: string;\n 200?: string;\n 300?: string;\n 400?: string;\n 500?: string;\n 600?: string;\n 700?: string;\n 800?: string;\n 900?: string;\n 950?: string;\n };\n};\n\n@Component({\n selector: 'app-configurator',\n standalone: true,\n imports: [CommonModule, FormsModule, SelectButtonModule],\n template: `\n <div class=\"flex flex-col gap-4\">\n <div>\n <span class=\"text-sm text-muted-color font-semibold\">Primary</span>\n <div class=\"pt-2 flex gap-2 flex-wrap justify-start\">\n @for (primaryColor of primaryColors(); track primaryColor.name) {\n <button\n class=\"border-none w-5 h-5 rounded-full p-0 cursor-pointer outline-none outline-offset-1\"\n id=\"oip-app-configurator-primary-color-{{ primaryColor.name }}\"\n type=\"button\"\n [ngClass]=\"{\n 'outline-primary': primaryColor.name === selectedPrimaryColor()\n }\"\n [style]=\"{\n 'background-color': primaryColor?.name === 'noir' ? 'var(--text-color)' : primaryColor?.palette?.['500']\n }\"\n [title]=\"primaryColor.name\"\n (click)=\"updateColors($event, 'primary', primaryColor)\"></button>\n }\n </div>\n </div>\n <div>\n <span class=\"text-sm text-muted-color font-semibold\">Surface</span>\n <div class=\"pt-2 flex gap-2 flex-wrap justify-start\">\n @for (surface of surfaces; track surface.name) {\n <button\n class=\"border-none w-5 h-5 rounded-full p-0 cursor-pointer outline-none outline-offset-1\"\n id=\"oip-app-configurator-surface-color-{{ surface.name }}\"\n type=\"button\"\n [ngClass]=\"{\n 'outline-primary': selectedSurfaceColor()\n ? selectedSurfaceColor() === surface.name\n : layoutService.layoutConfig().darkTheme\n ? surface.name === 'zinc'\n : surface.name === 'slate'\n }\"\n [style]=\"{\n 'background-color': surface?.name === 'noir' ? 'var(--text-color)' : surface?.palette?.['500']\n }\"\n [title]=\"surface.name\"\n (click)=\"updateColors($event, 'surface', surface)\"></button>\n }\n </div>\n </div>\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-sm text-muted-color font-semibold\">Presets</span>\n <p-selectButton\n id=\"oip-app-configurator-preset-select-button\"\n size=\"small\"\n [allowEmpty]=\"false\"\n [ngModel]=\"selectedPreset()\"\n [options]=\"presets\"\n (ngModelChange)=\"onPresetChange($event)\" />\n </div>\n @if (showMenuModeButton()) {\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-sm text-muted-color font-semibold\">Menu Mode</span>\n <p-selectButton\n id=\"oip-app-configurator-menu-mode-select-button\"\n size=\"small\"\n [allowEmpty]=\"false\"\n [ngModel]=\"menuMode()\"\n [options]=\"menuModeOptions\"\n (ngModelChange)=\"onMenuModeChange($event)\" />\n </div>\n }\n </div>\n `,\n host: {\n class:\n 'hidden absolute top-[3.25rem] right-0 w-72 p-4 bg-surface-0 dark:bg-surface-900 border border-surface rounded-border origin-top shadow-[0px_3px_5px_rgba(0,0,0,0.02),0px_0px_2px_rgba(0,0,0,0.05),0px_1px_4px_rgba(0,0,0,0.08)]'\n }\n})\nexport class AppConfiguratorComponent implements OnInit {\n router = inject(Router);\n\n config: PrimeNG = inject(PrimeNG);\n\n layoutService: LayoutService = inject(LayoutService);\n\n platformId = inject(PLATFORM_ID);\n\n primeng = inject(PrimeNG);\n\n presets = Object.keys(presets);\n\n showMenuModeButton = signal(!this.router.url.includes('auth'));\n\n menuModeOptions = [\n { label: 'Static', value: 'static' },\n { label: 'Overlay', value: 'overlay' }\n ];\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.onPresetChange(this.layoutService.layoutConfig().preset);\n }\n }\n\n surfaces: SurfacesType[] = [\n {\n name: 'slate',\n palette: {\n 0: '#ffffff',\n 50: '#f8fafc',\n 100: '#f1f5f9',\n 200: '#e2e8f0',\n 300: '#cbd5e1',\n 400: '#94a3b8',\n 500: '#64748b',\n 600: '#475569',\n 700: '#334155',\n 800: '#1e293b',\n 900: '#0f172a',\n 950: '#020617'\n }\n },\n {\n name: 'gray',\n palette: {\n 0: '#ffffff',\n 50: '#f9fafb',\n 100: '#f3f4f6',\n 200: '#e5e7eb',\n 300: '#d1d5db',\n 400: '#9ca3af',\n 500: '#6b7280',\n 600: '#4b5563',\n 700: '#374151',\n 800: '#1f2937',\n 900: '#111827',\n 950: '#030712'\n }\n },\n {\n name: 'zinc',\n palette: {\n 0: '#ffffff',\n 50: '#fafafa',\n 100: '#f4f4f5',\n 200: '#e4e4e7',\n 300: '#d4d4d8',\n 400: '#a1a1aa',\n 500: '#71717a',\n 600: '#52525b',\n 700: '#3f3f46',\n 800: '#27272a',\n 900: '#18181b',\n 950: '#09090b'\n }\n },\n {\n name: 'neutral',\n palette: {\n 0: '#ffffff',\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#e5e5e5',\n 300: '#d4d4d4',\n 400: '#a3a3a3',\n 500: '#737373',\n 600: '#525252',\n 700: '#404040',\n 800: '#262626',\n 900: '#171717',\n 950: '#0a0a0a'\n }\n },\n {\n name: 'stone',\n palette: {\n 0: '#ffffff',\n 50: '#fafaf9',\n 100: '#f5f5f4',\n 200: '#e7e5e4',\n 300: '#d6d3d1',\n 400: '#a8a29e',\n 500: '#78716c',\n 600: '#57534e',\n 700: '#44403c',\n 800: '#292524',\n 900: '#1c1917',\n 950: '#0c0a09'\n }\n },\n {\n name: 'soho',\n palette: {\n 0: '#ffffff',\n 50: '#ececec',\n 100: '#dedfdf',\n 200: '#c4c4c6',\n 300: '#adaeb0',\n 400: '#97979b',\n 500: '#7f8084',\n 600: '#6a6b70',\n 700: '#55565b',\n 800: '#3f4046',\n 900: '#2c2c34',\n 950: '#16161d'\n }\n },\n {\n name: 'viva',\n palette: {\n 0: '#ffffff',\n 50: '#f3f3f3',\n 100: '#e7e7e8',\n 200: '#cfd0d0',\n 300: '#b7b8b9',\n 400: '#9fa1a1',\n 500: '#87898a',\n 600: '#6e7173',\n 700: '#565a5b',\n 800: '#3e4244',\n 900: '#262b2c',\n 950: '#0e1315'\n }\n },\n {\n name: 'ocean',\n palette: {\n 0: '#ffffff',\n 50: '#fbfcfc',\n 100: '#F7F9F8',\n 200: '#EFF3F2',\n 300: '#DADEDD',\n 400: '#B1B7B6',\n 500: '#828787',\n 600: '#5F7274',\n 700: '#415B61',\n 800: '#29444E',\n 900: '#183240',\n 950: '#0c1920'\n }\n }\n ];\n\n selectedPrimaryColor = computed(() => {\n return this.layoutService.layoutConfig().primary;\n });\n\n selectedSurfaceColor = computed(() => this.layoutService.layoutConfig().surface);\n\n selectedPreset = computed(() => this.layoutService.layoutConfig().preset);\n\n menuMode = computed(() => this.layoutService.layoutConfig().menuMode);\n\n primaryColors = computed<SurfacesType[]>(() => {\n const presetPalette = presets[this.layoutService.layoutConfig().preset as KeyOfType<typeof presets>].primitive;\n const colors = [\n 'emerald',\n 'green',\n 'lime',\n 'orange',\n 'amber',\n 'yellow',\n 'teal',\n 'cyan',\n 'sky',\n 'blue',\n 'indigo',\n 'violet',\n 'purple',\n 'fuchsia',\n 'pink',\n 'rose'\n ];\n const palettes: SurfacesType[] = [{ name: 'noir', palette: {} }];\n\n colors.forEach((color) => {\n palettes.push({\n name: color,\n palette: presetPalette?.[color as KeyOfType<typeof presetPalette>] as SurfacesType['palette']\n });\n });\n\n return palettes;\n });\n\n getPresetExt() {\n const color: SurfacesType = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor()) || {};\n const preset = this.layoutService.layoutConfig().preset;\n\n if (color.name === 'noir') {\n return {\n semantic: {\n primary: {\n 50: '{surface.50}',\n 100: '{surface.100}',\n 200: '{surface.200}',\n 300: '{surface.300}',\n 400: '{surface.400}',\n 500: '{surface.500}',\n 600: '{surface.600}',\n 700: '{surface.700}',\n 800: '{surface.800}',\n 900: '{surface.900}',\n 950: '{surface.950}'\n },\n colorScheme: {\n light: {\n primary: {\n color: '{primary.950}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.800}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.950}',\n focusBackground: '{primary.700}',\n color: '#ffffff',\n focusColor: '#ffffff'\n }\n },\n dark: {\n primary: {\n color: '{primary.50}',\n contrastColor: '{primary.950}',\n hoverColor: '{primary.200}',\n activeColor: '{primary.300}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.300}',\n color: '{primary.950}',\n focusColor: '{primary.950}'\n }\n }\n }\n }\n };\n } else if (preset === 'Nora') {\n return {\n semantic: {\n primary: color.palette,\n colorScheme: {\n light: {\n primary: {\n color: '{primary.600}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.700}',\n activeColor: '{primary.800}'\n },\n highlight: {\n background: '{primary.600}',\n focusBackground: '{primary.700}',\n color: '#ffffff',\n focusColor: '#ffffff'\n }\n },\n dark: {\n primary: {\n color: '{primary.500}',\n contrastColor: '{surface.900}',\n hoverColor: '{primary.400}',\n activeColor: '{primary.300}'\n },\n highlight: {\n background: '{primary.500}',\n focusBackground: '{primary.400}',\n color: '{surface.900}',\n focusColor: '{surface.900}'\n }\n }\n }\n }\n };\n } else {\n return {\n semantic: {\n primary: color.palette,\n colorScheme: {\n light: {\n primary: {\n color: '{primary.500}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.600}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.100}',\n color: '{primary.700}',\n focusColor: '{primary.800}'\n }\n },\n dark: {\n primary: {\n color: '{primary.400}',\n contrastColor: '{surface.900}',\n hoverColor: '{primary.300}',\n activeColor: '{primary.200}'\n },\n highlight: {\n background: 'color-mix(in srgb, {primary.400}, transparent 84%)',\n focusBackground: 'color-mix(in srgb, {primary.400}, transparent 76%)',\n color: 'rgba(255,255,255,.87)',\n focusColor: 'rgba(255,255,255,.87)'\n }\n }\n }\n }\n };\n }\n }\n\n updateColors(event: MouseEvent, type: string, color: SurfacesType) {\n if (type === 'primary') {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n primary: color.name\n }));\n } else if (type === 'surface') {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n surface: color.name\n }));\n }\n this.applyTheme(type, color);\n\n event.stopPropagation();\n }\n\n applyTheme(type: string, color: SurfacesType) {\n if (type === 'primary') {\n updatePreset(this.getPresetExt());\n } else if (type === 'surface') {\n updateSurfacePalette(color.palette);\n }\n }\n\n onPresetChange(event: string) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n preset: event\n }));\n const preset = presets[event as KeyOfType<typeof presets>];\n const surfacePalette = this.surfaces.find((s) => s.name === this.selectedSurfaceColor())?.palette;\n $t().preset(preset).preset(this.getPresetExt()).surfacePalette(surfacePalette).use({ useDefaultOptions: true });\n }\n\n onMenuModeChange(event: string) {\n this.layoutService.layoutConfig.update((prev) => ({\n ...prev,\n menuMode: event\n }));\n }\n}\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'logo',\r\n standalone: true,\r\n template: `\r\n <svg\r\n viewBox=\"0.8516 1.7159 60.0074 64.7142\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n [attr.height]=\"height + 'px'\"\r\n [attr.width]=\"width + 'px'\">\r\n <path\r\n class=\"primary-logo-color\"\r\n d=\"M -130.45 -104.78 C -130.45 -105.9 -130.43 -107.01 -130.45 -108.13 C -130.49 -108.52 -130.28 -108.9 -129.92 -109.07 C -125.87 -111.4 -121.82 -113.74 -117.77 -116.08 C -115.7 -117.26 -113.63 -118.45 -111.58 -119.67 C -111.26 -119.89 -110.83 -119.89 -110.51 -119.67 C -101.66 -114.53 -92.787 -109.41 -83.915 -104.29 C -83.752 -104.2 -83.479 -104.16 -83.475 -103.94 C -83.472 -103.72 -83.766 -103.65 -83.947 -103.54 C -86.326 -102.16 -88.716 -100.79 -91.092 -99.39 C -91.377 -99.18 -91.761 -99.18 -92.046 -99.39 C -98.211 -102.98 -104.38 -106.55 -110.56 -110.12 C -110.85 -110.33 -111.23 -110.33 -111.52 -110.12 C -114.88 -108.16 -118.25 -106.22 -121.63 -104.28 C -122.01 -104.11 -122.24 -103.71 -122.2 -103.3 C -122.18 -101.11 -122.2 -98.922 -122.2 -96.736 C -122.19 -95.98 -122.21 -95.98 -122.84 -96.335 C -125.2 -97.7 -127.57 -99.07 -129.93 -100.42 C -130.27 -100.57 -130.49 -100.92 -130.46 -101.3 C -130.43 -102.46 -130.45 -103.62 -130.45 -104.78 Z\"\r\n transform=\"matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)\" />\r\n <path\r\n class=\"primary-logo-color\"\r\n d=\"M -70.504 -100.94 L -70.504 -90.438 C -70.447 -89.98 -70.692 -89.537 -71.11 -89.342 C -78.942 -84.839 -86.769 -80.325 -94.592 -75.8 C -95.635 -75.2 -96.684 -74.612 -97.713 -73.988 C -98.17 -73.708 -98.255 -73.846 -98.255 -74.314 L -98.255 -82.785 C -98.268 -83.116 -98.07 -83.419 -97.762 -83.541 C -92.003 -86.86 -86.269 -90.236 -80.468 -93.47 C -79.181 -94.179 -78.667 -94.934 -78.731 -96.441 C -78.869 -99.76 -78.791 -103.09 -78.755 -106.42 C -78.694 -107 -79.02 -107.56 -79.56 -107.8 C -81.436 -108.83 -83.28 -109.93 -85.138 -110.99 C -85.734 -111.34 -85.734 -111.34 -85.113 -111.7 C -82.748 -113.07 -80.379 -114.43 -78.021 -115.82 C -77.707 -116.05 -77.283 -116.06 -76.957 -115.84 C -74.962 -114.66 -72.953 -113.5 -70.929 -112.37 C -70.62 -112.19 -70.456 -111.84 -70.521 -111.49 C -70.514 -107.99 -70.508 -104.48 -70.504 -100.94 Z\"\r\n transform=\"matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)\" />\r\n <path\r\n class=\"primary-logo-color\"\r\n d=\"M -108.68 -85.743 L -108.68 -75.169 C -108.72 -74.754 -108.5 -74.358 -108.12 -74.179 C -104.77 -72.267 -101.44 -70.339 -98.117 -68.396 C -97.762 -68.141 -97.284 -68.141 -96.929 -68.396 C -95.028 -69.527 -93.096 -70.598 -91.195 -71.725 C -90.667 -72.041 -90.581 -71.892 -90.581 -71.371 C -90.596 -68.591 -90.596 -65.811 -90.581 -63.03 C -90.551 -62.7 -90.729 -62.386 -91.028 -62.243 C -93.083 -61.073 -95.13 -59.891 -97.17 -58.697 C -97.436 -58.537 -97.775 -58.569 -98.007 -58.775 C -102.74 -61.517 -107.47 -64.254 -112.22 -66.984 C -113.63 -67.796 -115.01 -68.615 -116.42 -69.406 C -116.77 -69.561 -116.97 -69.913 -116.94 -70.286 C -116.93 -80.555 -116.93 -90.823 -116.94 -101.09 C -116.94 -101.63 -116.86 -101.75 -116.35 -101.44 C -113.98 -100.05 -111.59 -98.667 -109.19 -97.303 C -108.84 -97.135 -108.62 -96.76 -108.66 -96.367 C -108.68 -92.833 -108.69 -89.291 -108.68 -85.743 Z\"\r\n transform=\"matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)\" />\r\n <path\r\n class=\"secondary-logo-color\"\r\n d=\"M -122.18 -85.807 L -122.18 -82.129 C -122.18 -81.637 -122.34 -81.615 -122.72 -81.839 C -125.16 -83.257 -127.6 -84.667 -130.05 -86.069 C -130.35 -86.219 -130.53 -86.535 -130.5 -86.867 L -130.5 -94.09 C -130.5 -94.64 -130.34 -94.679 -129.89 -94.417 C -127.49 -92.998 -125.09 -91.607 -122.67 -90.243 C -122.35 -90.103 -122.15 -89.772 -122.18 -89.42 C -122.21 -88.214 -122.18 -87.012 -122.18 -85.807 Z M -82.688 -119.15 C -83.954 -118.41 -85.17 -117.7 -86.365 -117.02 C -87.748 -116.22 -89.138 -115.44 -90.514 -114.63 C -90.761 -114.45 -91.093 -114.45 -91.34 -114.63 C -93.432 -115.86 -95.535 -117.07 -97.649 -118.27 C -98.053 -118.5 -98.191 -118.63 -97.67 -118.93 C -95.216 -120.32 -92.776 -121.74 -90.337 -123.15 C -90.134 -123.33 -89.845 -123.36 -89.61 -123.23 L -82.918 -119.33 C -82.862 -119.28 -82.812 -119.24 -82.688 -119.15 Z M -85.365 -65.616 L -85.365 -72.062 L -85.365 -74.622 C -85.403 -74.928 -85.24 -75.223 -84.961 -75.353 C -82.886 -76.534 -80.83 -77.736 -78.77 -78.931 C -78.174 -79.286 -78.135 -79.257 -78.135 -78.576 L -78.135 -70.303 C -78.135 -69.991 -78.135 -69.711 -78.468 -69.52 C -80.656 -68.275 -82.833 -67.013 -85.014 -65.761 C -85.127 -65.704 -85.245 -65.655 -85.365 -65.616 Z\"\r\n transform=\"matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)\" />\r\n </svg>\r\n `\r\n})\r\nexport class LogoComponent {\r\n @Input() width: number;\r\n @Input() height: number;\r\n}\r\n","import { Injectable, OnDestroy, inject } from '@angular/core';\r\nimport {\r\n LoginResponse,\r\n LogoutAuthOptions,\r\n OidcSecurityService,\r\n PublicEventsService,\r\n EventTypes\r\n} from 'angular-auth-oidc-client';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\n/**\r\n * SecurityService extends OidcSecurityService to manage authentication,\r\n * token handling, and user role access in an Angular application.\r\n *\r\n * It provides helper methods for checking authentication, managing tokens,\r\n * determining user roles, and performing logout and refresh operations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SecurityService extends OidcSecurityService implements OnDestroy {\r\n /**\r\n * Handles angular OIDC events.\r\n */\r\n private readonly publicEventsService = inject(PublicEventsService);\r\n\r\n /**\r\n * Stores the latest login response from checkAuth().\r\n */\r\n loginResponse = new BehaviorSubject<LoginResponse>(null);\r\n\r\n /**\r\n * Stores the decoded access token payload.\r\n */\r\n payload = new BehaviorSubject<any>(null);\r\n\r\n /**\r\n * Stores user-specific data from the login response.\r\n */\r\n userData: any;\r\n\r\n /**\r\n * Initializes service and subscribes to authentication events.\r\n * When a 'NewAuthenticationResult' event is received, the `auth` method is called.\r\n */\r\n constructor() {\r\n super();\r\n this.publicEventsService\r\n .registerForEvents()\r\n .pipe(filter((event) => event.type === EventTypes.NewAuthenticationResult))\r\n .subscribe(() => {\r\n this.auth();\r\n });\r\n }\r\n\r\n /**\r\n * Returns the ID token for the sign-in.\r\n * @returns A string with the id token.\r\n */\r\n override getAccessToken(): Observable<string> {\r\n return this.loginResponse.pipe(map((data) => data?.accessToken));\r\n }\r\n\r\n /**\r\n * Indicates whether the current user has the 'admin' role.\r\n *\r\n * @returns {boolean} True if the user is an admin, false otherwise.\r\n */\r\n get isAdmin(): boolean {\r\n return this.payload.getValue()?.realm_access?.roles?.includes('admin');\r\n }\r\n\r\n /**\r\n * Initiates authentication check and updates login response, user data,\r\n * and decoded token payload if authenticated.\r\n */\r\n auth() {\r\n super.checkAuth().subscribe((_response: LoginResponse) => {\r\n this.loginResponse.next(_response);\r\n this.userData = _response.userData;\r\n this.getPayloadFromAccessToken().subscribe((_token) => {\r\n this.payload.next(_token);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Performs logout and clears the local token payload.\r\n *\r\n * @param {string} [configId] Optional configuration ID for logout.\r\n * @param {LogoutAuthOptions} [logoutAuthOptions] Optional logout options.\r\n */\r\n logout(configId?: string, logoutAuthOptions?: LogoutAuthOptions) {\r\n this.logoff(configId, logoutAuthOptions).subscribe((x) => this.payload.next(x));\r\n }\r\n\r\n /**\r\n * Completes the BehaviorSubjects when the service is destroyed to avoid memory leaks.\r\n */\r\n ngOnDestroy(): void {\r\n this.loginResponse.complete();\r\n this.payload.complete();\r\n }\r\n\r\n /**\r\n * Checks whether the current access token is expired based on the 'exp' claim.\r\n *\r\n * @returns {Observable<boolean>} Observable that emits true if the token is expired.\r\n */\r\n isTokenExpired(): Observable<boolean> {\r\n return this.getPayloadFromAccessToken().pipe(\r\n map((payload) => {\r\n return payload.exp < Math.floor(Date.now() / 1000);\r\n })\r\n );\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { SecurityService } from './security.service';\r\nimport { BaseDataService } from './base-data.service';\r\n\r\n/**\r\n * UserService is responsible for retrieving and handling user-related data,\r\n * including the user's photo and short label for avatar display.\r\n */\r\n@Injectable()\r\nexport class UserService {\r\n private readonly securityService = inject(SecurityService);\r\n private readonly baseDataService = inject(BaseDataService);\r\n\r\n constructor() {\r\n this.getUserPhoto();\r\n }\r\n\r\n /**\r\n * Stores the user's photo as a data URL or binary blob, depending on how it's processed.\r\n */\r\n photo: any = null;\r\n\r\n /**\r\n * Indicates whether the user photo has finished loading.\r\n */\r\n photoLoaded: boolean = false;\r\n\r\n /**\r\n * Returns a short label composed of the user's initials.\r\n * Typically used for avatar display when a photo is unavailable.\r\n */\r\n get shortLabel(): string {\r\n const data = this.securityService.userData;\r\n return data.given_name[0] + data.family_name[0];\r\n }\r\n\r\n get userName(): string {\r\n const data = this.securityService.userData;\r\n return `${data.given_name} ${data.family_name}`;\r\n }\r\n\r\n /**\r\n * Initiates an HTTP request to fetch the user's photo based on their email,\r\n * and updates the `photo` and `photoLoaded` properties accordingly.\r\n */\r\n getUserPhoto(): void {\r\n const url = `${this.baseDataService.baseUrl}api/user-profile/get-user-photo?email=${this.securityService.userData.email}`;\r\n this.baseDataService.getBlob(url).then(\r\n (data) => {\r\n this.createImageFromBlob(data as Blob);\r\n this.photoLoaded = true;\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Converts a Blob image into a Base64 data URL and stores it in the `photo` property.\r\n *\r\n * @param image - The image Blob to be converted.\r\n */\r\n private createImageFromBlob(image: Blob): void {\r\n const reader = new FileReader();\r\n reader.addEventListener(\r\n 'load',\r\n () => {\r\n this.photo = reader.result;\r\n },\r\n false\r\n );\r\n if (image) {\r\n reader.readAsDataURL(image);\r\n }\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { StyleClassModule } from 'primeng/styleclass';\nimport { LayoutService } from '../services/app.layout.service';\nimport { AppConfiguratorComponent } from './app-configurator.component';\nimport { LogoComponent } from './logo.component';\nimport { SecurityService } from '../services/security.service';\nimport { TopBarService } from '../services/top-bar.service';\nimport { Tab, TabList, Tabs } from 'primeng/tabs';\nimport { AvatarModule } from 'primeng/avatar';\nimport { UserService } from '../services/user.service';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'app-topbar',\n standalone: true,\n imports: [\n RouterModule,\n CommonModule,\n StyleClassModule,\n AppConfiguratorComponent,\n LogoComponent,\n Tabs,\n TabList,\n Tab,\n AvatarModule,\n ButtonModule\n ],\n template: ` <div class=\"layout-topbar\">\n <div class=\"layout-topbar-logo-container\">\n <button class=\"layout-menu-button layout-topbar-action\" (click)=\"layoutService.onMenuToggle()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n <a class=\"layout-topbar-logo\" id=\"oip-app-topbar-logo-link\" routerLink=\"\">\n <logo [height]=\"36\" [width]=\"36\"></logo>\n <span>OIP</span>\n </a>\n </div>\n\n @if (securityService.isAdmin && topBarService.topBarItems.length > 0) {\n <p-tabs class=\"layout-topbar-tabs ml-2\" [(value)]=\"topBarService.activeId\">\n <p-tablist>\n @for (tab of topBarService.availableTopBarItems; track tab.id) {\n <p-tab id=\"oip-app-topbar-tab-{{ tab.id }}\" [value]=\"tab.id\">\n <i class=\"pi {{ tab.icon }}\"></i>\n <span class=\"ml-2\">{{ tab.caption }}</span>\n </p-tab>\n }\n </p-tablist>\n </p-tabs>\n }\n <div class=\"layout-topbar-actions\">\n <div class=\"layout-config-menu\">\n <p-button\n class=\"layout-topbar-action\"\n id=\"oip-app-topbar-theme-button\"\n severity=\"secondary\"\n type=\"button\"\n [rounded]=\"true\"\n [text]=\"true\"\n (click)=\"toggleDarkMode()\">\n <i\n class=\"pi\"\n [ngClass]=\"{\n 'pi-moon': layoutService.isDarkTheme(),\n 'pi-sun': !layoutService.isDarkTheme()\n }\"></i>\n </p-button>\n <div class=\"relative\">\n <p-button\n class=\"layout-topbar-action layout-topbar-action-highlight\"\n enterActiveClass=\"animate-scalein\"\n enterFromClass=\"hidden\"\n id=\"oip-app-topbar-palette-button\"\n leaveActiveClass=\"animate-fadeout\"\n leaveToClass=\"hidden\"\n pStyleClass=\"@next\"\n [hideOnOutsideClick]=\"true\"\n [rounded]=\"true\">\n <i class=\"pi pi-palette\"></i>\n </p-button>\n <app-configurator />\n </div>\n </div>\n\n <button\n class=\"layout-topbar-menu-button layout-topbar-action\"\n enterActiveClass=\"animate-scalein\"\n enterFromClass=\"hidden\"\n id=\"oip-app-topbar-menu-expand-button\"\n leaveActiveClass=\"animate-fadeout\"\n leaveToClass=\"hidden\"\n pStyleClass=\"@next\"\n [hideOnOutsideClick]=\"true\">\n <i class=\"pi pi-ellipsis-v\"></i>\n </button>\n\n <div class=\"layout-topbar-menu hidden lg:block\">\n <div class=\"layout-topbar-menu-content\">\n <button\n class=\"layout-topbar-action\"\n id=\"oip-app-topbar-logout-button\"\n type=\"button\"\n (click)=\"securityService.logout()\"\n (keydown)=\"logoutKeyDown($event)\">\n <i class=\"pi pi-sign-out\"></i>\n <span>Logout</span>\n </button>\n <button class=\"layout-topbar-action\" routerLink=\"config\">\n <p-avatar\n class=\"p-link flex align-items-center\"\n id=\"oip-app-topbar-user-avatar\"\n shape=\"circle\"\n size=\"normal\"\n [image]=\"userService.photoLoaded ? userService.photo : null\"\n >{{ !userService.photoLoaded ? userService.shortLabel : null }}\n </p-avatar>\n <span class=\"ml-2\">Profile</span>\n </button>\n </div>\n </div>\n </div>\n </div>`\n})\nexport class AppTopbar {\n items!: MenuItem[];\n securityService = inject(SecurityService);\n topBarService = inject(TopBarService);\n userService = inject(UserService);\n\n constructor(public layoutService: LayoutService) {}\n\n toggleDarkMode() {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n darkTheme: !state.darkTheme\n }));\n }\n\n logoutKeyDown($event: KeyboardEvent) {\n if ($event.key === 'Enter') {\n this.securityService.logout();\n }\n }\n}\n","import { Component } from '@angular/core';\r\nimport { LogoComponent } from './logo.component';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n template: `\r\n <div class=\"layout-footer\">\r\n <logo class=\"mr-2\" height=\"18\" width=\"18\"></logo>\r\n <span class=\"font-medium\">OIP</span>\r\n </div>\r\n `,\r\n standalone: true,\r\n imports: [LogoComponent]\r\n})\r\nexport class FooterComponent {\r\n constructor() {}\r\n}\r\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { inject, Injectable } from \"@angular/core\";\nimport { LayoutService, } from \"../services/app.layout.service\"\nimport { SecurityService } from \"../services/security.service\";\nexport type QueryParamsType = Record<string | number, any>;\nexport type ResponseFormat = keyof Omit<Body, \"body\" | \"bodyUsed\">;\n\nexport interface FullRequestParams extends Omit<RequestInit, \"body\"> {\n /** set parameter to `true` for call `securityWorker` for this request */\n secure?: boolean;\n /** request path */\n path: string;\n /** content type of request body */\n type?: ContentType;\n /** query params */\n query?: QueryParamsType;\n /** format of response (i.e. response.json() -> format: \"json\") */\n format?: ResponseFormat;\n /** request body */\n body?: unknown;\n /** base url */\n baseUrl?: string;\n /** request cancellation token */\n cancelToken?: CancelToken;\n}\n\nexport type RequestParams = Omit<\n FullRequestParams,\n \"body\" | \"method\" | \"query\" | \"path\"\n>;\n\nexport interface ApiConfig<SecurityDataType = unknown> {\n baseUrl?: string;\n baseApiParams?: Omit<RequestParams, \"baseUrl\" | \"cancelToken\" | \"signal\">;\n securityWorker?: (\n securityData: SecurityDataType | null,\n ) => Promise<RequestParams | void> | RequestParams | void;\n customFetch?: typeof fetch;\n}\n\nexport interface HttpResponse<D extends unknown, E extends unknown = unknown>\n extends Response {\n data: D;\n error: E;\n}\n\ntype CancelToken = Symbol | string | number;\n\nexport enum ContentType {\n Json = \"application/json\",\n FormData = \"multipart/form-data\",\n UrlEncoded = \"application/x-www-form-urlencoded\",\n Text = \"text/plain\",\n}\n\n@Injectable({providedIn: \"root\"})\nexport class HttpClient<SecurityDataType = unknown> {\n protected securityService = inject(SecurityService);\n protected layoutService = inject(LayoutService);\n public baseUrl: string = \"\";\n private securityData: SecurityDataType | null = null;\n private securityWorker?: ApiConfig<SecurityDataType>[\"securityWorker\"] = (\n securityData,\n ) => ({\n headers: {\n \"Accept-language\": this.layoutService.language()\n ? this.layoutService.language()\n : \"en\",\n \"X-Timezone\": this.layoutService.timeZone(),\n Authorization: `Bearer ${securityData}`,\n },\n });\n private abortControllers = new Map<CancelToken, AbortController>();\n private customFetch = (...fetchParams: Parameters<typeof fetch>) =>\n fetch(...fetchParams);\n\n private baseApiParams: RequestParams = {\n credentials: \"same-origin\",\n headers: {},\n redirect: \"follow\",\n referrerPolicy: \"no-referrer\",\n };\n\n constructor() {\n this.securityService.getAccessToken().subscribe((token) => {\n this.securityData = token;\n });\n }\n\n public setSecurityData = (data: SecurityDataType | null) => {\n this.securityData = data;\n };\n\n protected encodeQueryParam(key: string, value: any) {\n const encodedKey = encodeURIComponent(key);\n return `${encodedKey}=${encodeURIComponent(typeof value === \"number\" ? value : `${value}`)}`;\n }\n\n protected addQueryParam(query: QueryParamsType, key: string) {\n return this.encodeQueryParam(key, query[key]);\n }\n\n protected addArrayQueryParam(query: QueryParamsType, key: string) {\n const value = query[key];\n return value.map((v: any) => this.encodeQueryParam(key, v)).join(\"&\");\n }\n\n protected toQueryString(rawQuery?: QueryParamsType): string {\n const query = rawQuery || {};\n const keys = Object.keys(query).filter(\n (key) => \"undefined\" !== typeof query[key],\n );\n return keys\n .map((key) =>\n Array.isArray(query[key])\n ? this.addArrayQueryParam(query, key)\n : this.addQueryParam(query, key),\n )\n .join(\"&\");\n }\n\n protected addQueryParams(rawQuery?: QueryParamsType): string {\n const queryString = this.toQueryString(rawQuery);\n return queryString ? `?${queryString}` : \"\";\n }\n\n private contentFormatters: Record<ContentType, (input: any) => any> = {\n [ContentType.Json]: (input: any) =>\n input !== null && (typeof input === \"object\" || typeof input === \"string\")\n ? JSON.stringify(input)\n : input,\n [ContentType.Text]: (input: any) =>\n input !== null && typeof input !== \"string\"\n ? JSON.stringify(input)\n : input,\n [ContentType.FormData]: (input: any) =>\n Object.keys(input || {}).reduce((formData, key) => {\n const property = input[key];\n formData.append(\n key,\n property instanceof Blob\n ? property\n : typeof property === \"object\" && property !== null\n ? JSON.stringify(property)\n : `${property}`,\n );\n return formData;\n }, new FormData()),\n [ContentType.UrlEncoded]: (input: any) => this.toQueryString(input),\n };\n\n protected mergeRequestParams(\n params1: RequestParams,\n params2?: RequestParams,\n ): RequestParams {\n return {\n ...this.baseApiParams,\n ...params1,\n ...(params2 || {}),\n headers: {\n ...(this.baseApiParams.headers || {}),\n ...(params1.headers || {}),\n ...((params2 && params2.headers) || {}),\n },\n };\n }\n\n protected createAbortSignal = (\n cancelToken: CancelToken,\n ): AbortSignal | undefined => {\n if (this.abortControllers.has(cancelToken)) {\n const abortController = this.abortControllers.get(cancelToken);\n if (abortController) {\n return abortController.signal;\n }\n return void 0;\n }\n\n const abortController = new AbortController();\n this.abortControllers.set(cancelToken, abortController);\n return abortController.signal;\n };\n\n public abortRequest = (cancelToken: CancelToken) => {\n const abortController = this.abortControllers.get(cancelToken);\n\n if (abortController) {\n abortController.abort();\n this.abortControllers.delete(cancelToken);\n }\n };\n\n public request = async <T = any, E = any>({\n body,\n secure,\n path,\n type,\n query,\n format,\n baseUrl,\n cancelToken,\n ...params\n }: FullRequestParams): Promise<T> => {\n const secureParams =\n ((typeof secure === \"boolean\" ? secure : this.baseApiParams.secure) &&\n this.securityWorker &&\n (await this.securityWorker(this.securityData))) ||\n {};\n const requestParams = this.mergeRequestParams(params, secureParams);\n const queryString = query && this.toQueryString(query);\n const payloadFormatter = this.contentFormatters[type || ContentType.Json];\n let responseFormat = format || requestParams.format;\n\n return this.customFetch(\n `${baseUrl || this.baseUrl || \"\"}${path}${queryString ? `?${queryString}` : \"\"}`,\n {\n ...requestParams,\n headers: {\n ...(requestParams.headers || {}),\n ...(type && type !== ContentType.FormData\n ? {\"Content-Type\": type}\n : {}),\n },\n signal:\n (cancelToken\n ? this.createAbortSignal(cancelToken)\n : requestParams.signal) || null,\n body:\n typeof body === \"undefined\" || body === null\n ? null\n : payloadFormatter(body),\n },\n ).then(async (response) => {\n const r = response.clone() as HttpResponse<T, E>;\n r.data = null as unknown as T;\n r.error = null as unknown as E;\n\n if (typeof E !== undefined && responseFormat === undefined)\n responseFormat = \"json\";\n\n const data = !responseFormat\n ? r\n : await response[responseFormat]()\n .then((data) => {\n if (r.ok) {\n r.data = data;\n } else {\n r.error = data;\n }\n return r;\n })\n .catch((e) => {\n r.error = e;\n return r;\n });\n\n if (cancelToken) {\n this.abortControllers.delete(cancelToken);\n }\n\n if (!response.ok) throw data;\n return data.data;\n });\n };\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { Injectable } from \"@angular/core\";\nimport {\n AddModuleInstanceDto,\n EditModuleInstanceDto,\n IntKeyValueDto,\n MenuDeleteModuleInstanceParams,\n ModuleInstanceDto,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\n@Injectable()\nexport class Menu<\n SecurityDataType = unknown,\n> extends HttpClient<SecurityDataType> {\n /**\n * @description Retrieves the menu available to the current authenticated user.\n *\n * @tags Menu\n * @name menuGet\n * @request GET:/api/menu/get\n * @secure\n */\n menuGet = (params: RequestParams = {}) =>\n this.request<ModuleInstanceDto[], any>({\n path: `/api/menu/get`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Retrieves the admin-specific menu.\n *\n * @tags Menu\n * @name menuGetAdminMenu\n * @request GET:/api/menu/get-admin-menu\n * @secure\n */\n menuGetAdminMenu = (params: RequestParams = {}) =>\n this.request<ModuleInstanceDto[], any>({\n path: `/api/menu/get-admin-menu`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Retrieves all available modules in the system.\n *\n * @tags Menu\n * @name menuGetModules\n * @request GET:/api/menu/get-modules\n * @secure\n */\n menuGetModules = (params: RequestParams = {}) =>\n this.request<IntKeyValueDto[], any>({\n path: `/api/menu/get-modules`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Adds a new module instance to the system.\n *\n * @tags Menu\n * @name menuAddModuleInstance\n * @request POST:/api/menu/add-module-instance\n * @secure\n */\n menuAddModuleInstance = (\n data: AddModuleInstanceDto,\n params: RequestParams = {},\n ) =>\n this.request<void, any>({\n path: `/api/menu/add-module-instance`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * @description Edits an existing module instance.\n *\n * @tags Menu\n * @name menuEditModuleInstance\n * @request POST:/api/menu/edit-module-instance\n * @secure\n */\n menuEditModuleInstance = (\n data: EditModuleInstanceDto,\n params: RequestParams = {},\n ) =>\n this.request<void, any>({\n path: `/api/menu/edit-module-instance`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * @description Deletes a module instance by its identifier.\n *\n * @tags Menu\n * @name menuDeleteModuleInstance\n * @request DELETE:/api/menu/delete-module-instance\n * @secure\n */\n menuDeleteModuleInstance = (\n query: MenuDeleteModuleInstanceParams,\n params: RequestParams = {},\n ) =>\n this.request<void, any>({\n path: `/api/menu/delete-module-instance`,\n method: \"DELETE\",\n query: query,\n secure: true,\n ...params,\n });\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BaseDataService } from './base-data.service';\nimport { MenuChangeEvent } from '../events/menu-change.event';\nimport { EditModuleInstanceDto } from '../dtos/edit-module-instance.dto';\nimport { Menu } from '../api/Menu';\nimport { AppTitleService } from './app-title.service';\nimport { AddModuleInstanceDto, ModuleInstanceDto } from '../api/data-contracts';\n\n@Injectable()\nexport class MenuService extends BaseDataService {\n private readonly menuSource = new Subject<MenuChangeEvent>();\n private readonly resetSource = new Subject();\n private readonly titleService = inject(AppTitleService);\n private readonly menuDataService = inject(Menu);\n menuSource$ = this.menuSource.asObservable();\n resetSource$ = this.resetSource.asObservable();\n contextMenuItem: any;\n\n public menu: ModuleInstanceDto[] = [];\n public adminMode: boolean = false;\n\n async loadMenu() {\n this.menu = this.adminMode ? await this.getAdminMenu() : await this.getMenu();\n }\n\n /**\n * Handles changes in the menu state.\n * @param {MenuChangeEvent} event - The event containing information about the menu state change.\n * @return {void}\n */\n onMenuStateChange(event: MenuChangeEvent): void {\n this.menuSource.next(event);\n this.titleService.setTitle(event.item.label);\n }\n\n reset() {\n this.resetSource.next(true);\n }\n\n getMenu() {\n return this.menuDataService.menuGet();\n }\n\n getAdminMenu() {\n return this.menuDataService.menuGetAdminMenu();\n }\n\n getModules() {\n return this.menuDataService.menuGetModules();\n }\n\n addModuleInstance(addModuleInstance: AddModuleInstanceDto) {\n return this.menuDataService.menuAddModuleInstance(addModuleInstance as AddModuleInstanceDto);\n }\n\n deleteItem(moduleInstanceId: number) {\n return this.sendRequest(this.baseUrl + 'api/menu/delete-module-instance?id=' + moduleInstanceId, 'DELETE');\n }\n\n editModuleInstance(item: EditModuleInstanceDto) {\n return this.sendRequest(this.baseUrl + 'api/menu/edit-module-instance', 'POST', item);\n }\n}\n","import { ChangeDetectorRef, Component, HostBinding, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { NavigationEnd, Router, RouterLinkActive, RouterLink } from '@angular/router';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { LayoutService } from '../../services/app.layout.service';\nimport { MenuService } from '../../services/app.menu.service';\nimport { RippleModule } from 'primeng/ripple';\nimport { NgIf, NgClass, NgFor } from '@angular/common';\nimport { ConfirmationService, ContextMenuService, MenuItem, MenuItemCommandEvent, PrimeIcons } from 'primeng/api';\nimport { MenuItemCreateDialogComponent } from './menu-item-create-dialog.component';\nimport { ContextMenu, ContextMenuModule } from 'primeng/contextmenu';\nimport { MsgService } from '../../services/msg.service';\nimport { MenuItemEditDialogComponent } from './menu-item-edit-dialog.component';\nimport { ContextMenuItemDto } from '../../dtos/context-menu-item.dto';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ConfirmDialog } from 'primeng/confirmdialog';\nimport { Menu } from '../../api/Menu';\nimport { MenuDeleteModuleInstanceParams } from '../../api/data-contracts';\n\ninterface MenuItemComponentTranslation {\n delete: string;\n edit: string;\n new: string;\n deleteItemConfirmHeader: string;\n deleteItemConfirmMessage: string;\n deleteItemSuccessMessage: string;\n deleteItemConfirmRejectButtonPropsLabel: string;\n deleteItemConfirmAcceptButtonPropsLabel: string;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[app-menuitem]',\n template: `\n <ng-container>\n <p-confirm-dialog />\n <div\n *ngIf=\"root && item.visible !== false\"\n class=\"layout-menuitem-root-text\"\n (contextmenu)=\"onContextMenu($event, item)\">\n {{ item.label }}\n </div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false\"\n pRipple\n tabindex=\"0\"\n [attr.href]=\"item.url\"\n [attr.target]=\"item.target\"\n [ngClass]=\"item.class\"\n (click)=\"itemClick($event)\">\n <i class=\"layout-menuitem-icon\" [ngClass]=\"item.icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label }}</span>\n <i *ngIf=\"item.items\" class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items && item.visible !== false\"\n pRipple\n routerLinkActive=\"active-route\"\n tabindex=\"0\"\n [attr.target]=\"item.target\"\n [fragment]=\"item.fragment\"\n [ngClass]=\"item.class\"\n [preserveFragment]=\"item.preserveFragment\"\n [queryParams]=\"item.queryParams\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [replaceUrl]=\"item.replaceUrl\"\n [routerLink]=\"item.routerLink\"\n [routerLinkActiveOptions]=\"\n item.routerLinkActiveOptions || {\n paths: 'exact',\n queryParams: 'ignored',\n matrixParams: 'ignored',\n fragment: 'ignored'\n }\n \"\n [skipLocationChange]=\"item.skipLocationChange\"\n [state]=\"item.state\"\n (click)=\"itemClick($event)\"\n (contextmenu)=\"onContextMenu($event, item)\">\n <i class=\"layout-menuitem-icon\" [ngClass]=\"item.icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label }}</span>\n <i *ngIf=\"item.items\" class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n </a>\n\n <ul\n *ngIf=\"item.items && item.visible !== false\"\n [@children]=\"submenuAnimation\"\n (contextmenu)=\"onContextMenu($event, item)\">\n <ng-template let-child let-i=\"index\" ngFor [ngForOf]=\"item.items\">\n <li\n app-menuitem\n [class]=\"child.badgeClass\"\n [contextMenu]=\"contextMenu\"\n [index]=\"i\"\n [item]=\"child\"\n [menuItemCreateDialogComponent]=\"menuItemCreateDialogComponent\"\n [menuItemEditDialogComponent]=\"menuItemEditDialogComponent\"\n [parentKey]=\"key\"></li>\n </ng-template>\n </ul>\n </ng-container>\n `,\n animations: [\n trigger('children', [\n state(\n 'collapsed',\n style({\n height: '0'\n })\n ),\n state(\n 'expanded',\n style({\n height: '*'\n })\n ),\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ],\n imports: [NgIf, RippleModule, NgClass, RouterLinkActive, RouterLink, NgFor, ContextMenuModule, ConfirmDialog],\n providers: [ConfirmationService]\n})\nexport class MenuItemComponent implements OnInit, OnDestroy {\n private readonly layoutService = inject(LayoutService);\n private readonly translateService = inject(TranslateService);\n private readonly confirmationService = inject(ConfirmationService);\n private readonly msgService = inject(MsgService);\n private readonly menuDataService = inject(Menu);\n\n @Input() item: ContextMenuItemDto;\n @Input() index!: number;\n @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;\n @Input() parentKey!: string;\n @Input() menuItemCreateDialogComponent: MenuItemCreateDialogComponent;\n @Input() menuItemEditDialogComponent: MenuItemEditDialogComponent;\n @Input() contextMenu: ContextMenu;\n\n private active = false;\n private subscriptions: Subscription[] = [];\n private localization: MenuItemComponentTranslation = {} as MenuItemComponentTranslation;\n\n protected key: string = '';\n\n constructor(\n private readonly cd: ChangeDetectorRef,\n public router: Router,\n private readonly menuService: MenuService\n ) {\n this.subscriptions.push(\n this.menuService.menuSource$.subscribe((value) => {\n Promise.resolve(null).then(() => {\n if (value.routeEvent) {\n this.active = value.key === this.key || value.key.startsWith(this.key + '-');\n } else if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {\n this.active = false;\n }\n });\n })\n );\n\n this.subscriptions.push(\n this.menuService.resetSource$.subscribe(() => {\n this.active = false;\n })\n );\n\n this.subscriptions.push(\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((params) => {\n if (this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n })\n );\n\n this.subscriptions.push(\n this.translateService.get('menuItemComponent').subscribe((value: MenuItemComponentTranslation) => {\n this.localization = value;\n })\n );\n }\n\n ngOnInit() {\n this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);\n\n if (this.item.routerLink) {\n this.updateActiveStateFromRoute();\n }\n }\n\n updateActiveStateFromRoute() {\n const activeRoute = this.router.isActive(this.item.routerLink[0], {\n paths: 'exact',\n queryParams: 'ignored',\n matrixParams: 'ignored',\n fragment: 'ignored'\n });\n\n if (activeRoute) {\n this.menuService.onMenuStateChange({\n key: this.key,\n item: this.item,\n routeEvent: true\n });\n }\n }\n\n itemClick(event: Event) {\n // avoid processing disabled items\n if (this.item.disabled) {\n event.preventDefault();\n return;\n }\n\n // execute command\n if (this.item.command) {\n this.item.command({ originalEvent: event, item: this.item });\n }\n\n // toggle active state\n if (this.item.items) {\n this.active = !this.active;\n }\n\n this.menuService.onMenuStateChange({ key: this.key, item: this.item });\n }\n\n get submenuAnimation() {\n return this.root || this.active ? 'expanded' : 'collapsed';\n }\n\n @HostBinding('class.active-menuitem')\n get activeClass() {\n return this.active && !this.root;\n }\n\n ngOnDestroy() {\n this.subscriptions.map((s) => s.unsubscribe());\n }\n\n private newClick(e: MenuItemCommandEvent) {\n this.menuItemCreateDialogComponent.showDialog();\n }\n\n onContextMenu($event: MouseEvent, item: any) {\n this.menuService.contextMenuItem = item;\n this.contextMenu.model = [\n {\n label: this.localization.new,\n icon: PrimeIcons.PLUS,\n command: (event) => this.newClick(event)\n },\n {\n label: this.localization.edit,\n icon: PrimeIcons.FILE_EDIT,\n command: (event) => this.editClick(event)\n },\n { separator: true },\n {\n label: this.localization.delete,\n icon: PrimeIcons.TRASH,\n command: (event) => this.deleteItem(event)\n }\n ];\n this.contextMenu.show($event);\n }\n\n private deleteItem(event: MenuItemCommandEvent) {\n this.confirmationService.confirm({\n header: this.localization.deleteItemConfirmHeader,\n message: this.localization.deleteItemConfirmMessage,\n icon: PrimeIcons.TRASH,\n rejectButtonProps: {\n label: this.localization.deleteItemConfirmRejectButtonPropsLabel,\n severity: 'secondary',\n outlined: true\n },\n acceptButtonProps: {\n label: this.localization.deleteItemConfirmAcceptButtonPropsLabel,\n severity: 'danger'\n },\n accept: async () => {\n await this.menuDataService.menuDeleteModuleInstance({\n id: this.menuService.contextMenuItem?.moduleInstanceId\n } as MenuDeleteModuleInstanceParams);\n this.msgService.success(this.localization.deleteItemSuccessMessage);\n await this.menuService.loadMenu();\n }\n });\n }\n\n private editClick(event: MenuItemCommandEvent) {\n this.menuItemEditDialogComponent.showDialog();\n }\n}\n","import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { SelectModule } from 'primeng/select';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { AddModuleInstanceDto, IntKeyValueDto } from '../../api/data-contracts';\nimport { Menu } from '../../api/Menu';\nimport { MenuService } from \"../../services/app.menu.service\";\n\n@Component({\n selector: 'menu-item-create-dialog',\n standalone: true,\n imports: [ButtonModule, DialogModule, InputTextModule, SelectModule, FormsModule, TranslatePipe],\n template: `\n <p-dialog\n header=\"{{ 'menuItemCreateDialogComponent.header' | translate }}\"\n [modal]=\"true\"\n [style]=\"{ width: '40rem' }\"\n [(visible)]=\"visible\">\n @if (menuService.contextMenuItem) {\n <div class=\"flex items-center gap-4 mb-4 mt-1\">\n <label class=\"font-semibold w-1/3\" for=\"oip-menu-item-create-dialog-parent-input\">\n {{ 'menuItemCreateDialogComponent.parentLabel' | translate }}\n </label>\n <input\n autocomplete=\"off\"\n class=\"flex-auto\"\n id=\"oip-menu-item-create-dialog-parent-input\"\n pInputText\n readonly\n [ngModel]=\"menuService.contextMenuItem?.label\"/>\n </div>\n }\n <div class=\"flex items-center gap-4 mb-4\">\n <label class=\"font-semibold w-1/3\" for=\"oip-menu-item-create-label\">\n {{ 'menuItemCreateDialogComponent.label' | translate }}\n </label>\n <input autocomplete=\"off\" class=\"flex-auto\" id=\"oip-menu-item-create-label\" pInputText [(ngModel)]=\"label\"/>\n </div>\n <div class=\"flex items-center gap-4 mb-4\">\n <label class=\"font-semibold w-1/3\" for=\"oip-menu-item-create-module\">\n {{ 'menuItemCreateDialogComponent.module' | translate }}\n </label>\n <p-select\n appendTo=\"body\"\n class=\"flex-auto\"\n id=\"oip-menu-item-create-module\"\n optionLabel=\"value\"\n optionValue=\"key\"\n placeholder=\"{{ 'menuItemCreateDialogComponent.selectModule' | translate }}\"\n [options]=\"modules\"\n [(ngModel)]=\"selectModule\"/>\n </div>\n <div class=\"flex items-center gap-4 mb-4\">\n <label class=\"font-semibold w-1/3\" for=\"oip-menu-item-create-dialog-icon\">\n {{ 'menuItemCreateDialogComponent.icon' | translate }}\n </label>\n <i class=\"{{ selectIcon }}\"></i>\n <input class=\"flex-auto\" id=\"oip-menu-item-create-dialog-icon\" pInputText [(ngModel)]=\"selectIcon\"/>\n </div>\n <div class=\"flex justify-end gap-2\">\n <p-button\n id=\"oip-menu-item-create-cancel\"\n label=\"{{ 'menuItemCreateDialogComponent.cancel' | translate }}\"\n severity=\"secondary\"\n (click)=\"changeVisible()\"\n (keydown)=\"changeVisible()\"/>\n <p-button\n id=\"oip-menu-item-create-save\"\n label=\"{{ 'menuItemCreateDialogComponent.save' | translate }}\"\n (click)=\"save()\"\n (keydown)=\"save()\"/>\n </div>\n </p-dialog>\n `\n})\nexport class MenuItemCreateDialogComponent implements OnInit {\n menuService = inject(MenuService);\n protected readonly menu = inject(Menu);\n @Input() visible!: boolean;\n @Output() visibleChange = new EventEmitter<boolean>();\n modules: IntKeyValueDto[] = [];\n selectModule: any;\n label: string;\n selectIcon: string = 'pi pi-box';\n\n async ngOnInit() {\n this.modules = await this.menu.menuGetModules();\n }\n\n changeVisible() {\n this.visible = !this.visible;\n this.visibleChange.emit(this.visible);\n }\n\n async save() {\n const item: AddModuleInstanceDto = {\n moduleId: this.selectModule,\n label: this.label,\n icon: this.selectIcon,\n parentId: this.menuService.contextMenuItem?.moduleInstanceId\n };\n await this.menuService.addModuleInstance(item);\n await this.menuService.loadMenu();\n this.hide();\n }\n\n hide() {\n this.visible = false;\n this.visibleChange.emit(this.visible);\n }\n\n showDialog() {\n this.visible = true;\n this.visibleChange.emit(this.visible);\n }\n}\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MenuService } from '../../services/app.menu.service'\r\nimport { SecurityDataService, } from '../../services/security-data.service'\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { EditModuleInstanceDto } from '../../dtos/edit-module-instance.dto';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\n\r\n@Component({\r\n imports: [ButtonModule, DialogModule, InputTextModule, FormsModule, TranslatePipe, MultiSelectModule],\r\n selector: 'menu-item-edit-dialog',\r\n standalone: true,\r\n template: `\r\n <p-dialog\r\n header=\"{{ 'menuItemEditDialogComponent.header' | translate }}\"\r\n [modal]=\"true\"\r\n [style]=\"{ width: '40rem' }\"\r\n [(visible)]=\"visible\">\r\n <div class=\"flex items-center gap-4 mb-4 mt-1\">\r\n <label class=\"font-semibold w-1/3\" for=\"oip-menu-item-edit-dialog-menu-input\">\r\n {{ 'menuItemEditDialogComponent.label' | translate }}\r\n </label>\r\n <input\r\n autocomplete=\"off\"\r\n class=\"flex-auto\"\r\n id=\"oip-menu-item-edit-dialog-menu-input\"\r\n pInputText\r\n [(ngModel)]=\"item.label\"/>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-4 mb-4\">\r\n <label class=\"font-semibold w-1/3\" for=\"oip-menu-item-edit-dialog-icon\">\r\n {{ 'menuItemEditDialogComponent.icon' | translate }}\r\n </label>\r\n <i class=\"{{ item.icon }}\"></i>\r\n <input class=\"flex-auto\" id=\"oip-menu-item-edit-dialog-icon\" pInputText [(ngModel)]=\"item.icon\"/>\r\n </div>\r\n\r\n <div class=\"flex items-center gap-4 mb-4\">\r\n <label class=\"font-semibold w-1/3\" for=\"security\">\r\n {{ 'menuItemEditDialogComponent.security' | translate }}\r\n </label>\r\n <p-multiSelect\r\n appendTo=\"body\"\r\n class=\"flex-auto\"\r\n id=\"oip-menu-item-edit-dialog-roles-multi-select\"\r\n placeholder=\"Select roles\"\r\n [maxSelectedLabels]=\"10\"\r\n [options]=\"roles\"\r\n [(ngModel)]=\"item.viewRoles\"/>\r\n </div>\r\n\r\n <div class=\"flex justify-end gap-2\">\r\n <p-button\r\n id=\"oip-menu-item-edit-dialog-cancel-edit-button\"\r\n label=\"{{ 'menuItemEditDialogComponent.cancel' | translate }}\"\r\n severity=\"secondary\"\r\n (click)=\"changeVisible()\"\r\n (keydown)=\"changeVisible()\"/>\r\n <p-button\r\n id=\"oip-menu-item-edit-dialog-save-edit-button\"\r\n label=\"{{ 'menuItemEditDialogComponent.save' | translate }}\"\r\n (click)=\"save()\"\r\n (keydown)=\"save()\"/>\r\n </div>\r\n </p-dialog>\r\n `\r\n})\r\nexport class MenuItemEditDialogComponent {\r\n private readonly menuService = inject(MenuService);\r\n private readonly securityDataService = inject(SecurityDataService);\r\n\r\n @Input() visible!: boolean;\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n modules: any[] = [];\r\n roles: string[] = [];\r\n item: EditModuleInstanceDto = {\r\n icon: '',\r\n label: '',\r\n viewRoles: [''],\r\n moduleId: 0,\r\n moduleInstanceId: 0,\r\n parentId: 0\r\n };\r\n\r\n changeVisible() {\r\n this.visible = !this.visible;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n\r\n async save() {\r\n await this.menuService.editModuleInstance(this.item);\r\n await this.menuService.loadMenu();\r\n this.hide();\r\n }\r\n\r\n hide() {\r\n this.visible = false;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n\r\n async showDialog() {\r\n this.item = {\r\n moduleInstanceId: this.menuService.contextMenuItem?.moduleInstanceId,\r\n moduleId: this.menuService.contextMenuItem?.moduleId,\r\n parentId: this.menuService.contextMenuItem?.parentId,\r\n label: this.menuService.contextMenuItem?.label,\r\n icon: this.menuService.contextMenuItem?.icon,\r\n viewRoles: this.menuService.contextMenuItem?.securities\r\n };\r\n\r\n this.roles = await this.securityDataService.getRealmRoles();\r\n this.menuService.getModules().then((data) => {\r\n this.modules = data;\r\n });\r\n\r\n this.visible = true;\r\n this.visibleChange.emit(this.visible);\r\n }\r\n}\r\n","import { Component, inject, OnInit, ViewChild } from '@angular/core';\nimport { MenuService } from '../../services/app.menu.service';\nimport { ButtonModule } from 'primeng/button';\nimport { SecurityService } from '../../services/security.service';\nimport { ContextMenu, ContextMenuModule } from 'primeng/contextmenu';\nimport { DialogModule } from 'primeng/dialog';\nimport { MenuItemCommandEvent, PrimeIcons } from 'primeng/api';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormsModule } from '@angular/forms';\nimport { MenuItemComponent } from './menu-item.component';\nimport { MenuItemCreateDialogComponent } from './menu-item-create-dialog.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MenuItemEditDialogComponent } from './menu-item-edit-dialog.component';\nimport { Menu } from '../../api/Menu';\n\n@Component({\n imports: [\n MenuItemComponent,\n ButtonModule,\n ContextMenuModule,\n DialogModule,\n InputTextModule,\n MenuItemCreateDialogComponent,\n FormsModule,\n MenuItemEditDialogComponent\n ],\n providers: [Menu],\n selector: 'app-menu',\n standalone: true,\n template: ` <div #empty class=\"layout-sidebar\" (contextmenu)=\"onContextMenu($event)\">\n <ul class=\"layout-menu\">\n @for (item of menuService.menu; track item; let i = $index) {\n <ng-container>\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n } @else {\n <li\n app-menuitem\n [contextMenu]=\"contextMenu\"\n [index]=\"i\"\n [item]=\"item\"\n [menuItemCreateDialogComponent]=\"menuItemCreateDialogComponent\"\n [menuItemEditDialogComponent]=\"menuItemEditDialogComponent\"\n [root]=\"true\"></li>\n }\n </ng-container>\n }\n </ul>\n </div>\n <p-contextMenu [target]=\"empty\" />\n @if (securityService.isAdmin) {\n <menu-item-create-dialog />\n <menu-item-edit-dialog />\n }`\n})\nexport class MenuComponent implements OnInit {\n readonly menuService = inject(MenuService);\n readonly securityService = inject(SecurityService);\n readonly translateService = inject(TranslateService);\n\n @ViewChild(MenuItemCreateDialogComponent)\n menuItemCreateDialogComponent: MenuItemCreateDialogComponent;\n @ViewChild(MenuItemEditDialogComponent)\n menuItemEditDialogComponent: MenuItemEditDialogComponent;\n @ViewChild(ContextMenu) contextMenu: ContextMenu;\n\n ngOnInit() {\n this.menuService.loadMenu().then();\n }\n\n private newClick(e: MenuItemCommandEvent) {\n this.menuItemCreateDialogComponent.showDialog();\n }\n\n onContextMenu($event: MouseEvent) {\n this.menuService.contextMenuItem = null;\n this.contextMenu.model = [\n {\n label: this.translateService.instant('menuComponent.new'),\n icon: PrimeIcons.PLUS,\n command: (event) => this.newClick(event)\n }\n ];\n }\n}\n","import { Component } from '@angular/core';\r\nimport { MenuComponent } from './menu/menu.component';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n template: ` <app-menu></app-menu>`,\r\n standalone: true,\r\n imports: [MenuComponent]\r\n})\r\nexport class SidebarComponent {\r\n constructor() {}\r\n}\r\n","import { Component, Renderer2, ViewChild, OnDestroy, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, Subscription } from 'rxjs';\nimport { AppTopbar } from './top-bar.component';\nimport { FooterComponent } from './footer.component';\nimport { LayoutService } from './../services/app.layout.service';\nimport { SidebarComponent } from './sidebar.component';\nimport { Menu } from '../api/Menu';\nimport { MenuService } from '../services/app.menu.service';\n\n@Component({\n selector: 'app-layout',\n standalone: true,\n imports: [CommonModule, AppTopbar, SidebarComponent, RouterModule, FooterComponent],\n template: `\n <div class=\"layout-wrapper\" [ngClass]=\"containerClass\">\n <app-topbar></app-topbar>\n <app-sidebar></app-sidebar>\n <div class=\"layout-main-container\">\n <div class=\"layout-main\">\n <router-outlet></router-outlet>\n </div>\n <app-footer></app-footer>\n </div>\n <div class=\"layout-mask animate-fadein\"></div>\n </div>\n `,\n providers: [MenuService, Menu]\n})\nexport class AppLayoutComponent implements OnDestroy {\n protected layoutService = inject(LayoutService);\n protected router = inject(Router);\n protected renderer = inject(Renderer2);\n overlayMenuOpenSubscription: Subscription;\n\n menuOutsideClickListener: () => void;\n\n @ViewChild(SidebarComponent) appSidebar!: SidebarComponent;\n\n @ViewChild(AppTopbar) appTopBar!: AppTopbar;\n\n constructor() {\n this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', (event) => {\n if (this.isOutsideClicked(event)) {\n this.hideMenu();\n }\n });\n }\n\n if (this.layoutService.layoutState().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(() => {\n this.hideMenu();\n });\n }\n\n isOutsideClicked(event: MouseEvent) {\n const sidebarEl = document.querySelector('.layout-sidebar');\n const topbarEl = document.querySelector('.layout-menu-button');\n const eventTarget = event.target as Node;\n\n return !(\n sidebarEl?.isSameNode(eventTarget) ||\n sidebarEl?.contains(eventTarget) ||\n topbarEl?.isSameNode(eventTarget) ||\n topbarEl?.contains(eventTarget)\n );\n }\n\n hideMenu() {\n this.layoutService.layoutState.update((prev) => ({\n ...prev,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(\n new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'),\n ' '\n );\n }\n }\n\n get containerClass() {\n return {\n 'layout-overlay': this.layoutService.layoutConfig().menuMode === 'overlay',\n 'layout-static': this.layoutService.layoutConfig().menuMode === 'static',\n 'layout-static-inactive':\n this.layoutService.layoutState().staticMenuDesktopInactive &&\n this.layoutService.layoutConfig().menuMode === 'static',\n 'layout-overlay-active': this.layoutService.layoutState().overlayMenuActive,\n 'layout-mobile-active': this.layoutService.layoutState().staticMenuMobileActive\n };\n }\n\n ngOnDestroy() {\n if (this.overlayMenuOpenSubscription) {\n this.overlayMenuOpenSubscription.unsubscribe();\n }\n\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { StyleClassModule } from 'primeng/styleclass';\nimport { AppConfiguratorComponent } from './app-configurator.component';\nimport { LayoutService } from '../services/app.layout.service';\n\n@Component({\n selector: 'app-floating-configurator',\n imports: [ButtonModule, StyleClassModule, AppConfiguratorComponent],\n template: `\n <div class=\"fixed flex gap-4 top-8 right-8\">\n <p-button\n id=\"oip-app-floating-configurator-dark-theme-button\"\n severity=\"secondary\"\n type=\"button\"\n [icon]=\"isDarkTheme() ? 'pi pi-moon' : 'pi pi-sun'\"\n [rounded]=\"true\"\n (onClick)=\"toggleDarkMode()\" />\n <div class=\"relative\">\n <p-button\n enterActiveClass=\"animate-scalein\"\n enterFromClass=\"hidden\"\n icon=\"pi pi-palette\"\n id=\"oip-app-floating-configurator-next-button\"\n leaveActiveClass=\"animate-fadeout\"\n leaveToClass=\"hidden\"\n pStyleClass=\"@next\"\n type=\"button\"\n [hideOnOutsideClick]=\"true\"\n [rounded]=\"true\" />\n <app-configurator />\n </div>\n </div>\n `\n})\nexport class AppFloatingConfiguratorComponent {\n LayoutService = inject(LayoutService);\n\n isDarkTheme = computed(() => this.LayoutService.layoutConfig().darkTheme);\n\n toggleDarkMode() {\n this.LayoutService.layoutConfig.update((state) => ({\n ...state,\n darkTheme: !state.darkTheme\n }));\n }\n}\n","import { Component } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { LogoComponent } from './logo.component';\nimport { Button } from 'primeng/button';\nimport { AppFloatingConfiguratorComponent } from './app-floating-configurator.component';\n\n@Component({\n selector: 'app-notfound',\n template: ` <app-floating-configurator />\n <div class=\"flex items-center justify-center min-h-screen overflow-hidden\">\n <div class=\"flex flex-col items-center justify-center\">\n <div\n style=\"border-radius: 56px; padding: 0.3rem; background: linear-gradient(180deg, color-mix(in srgb, var(--primary-color), transparent 60%) 10%, var(--surface-ground) 30%)\">\n <div\n class=\"w-full bg-surface-0 dark:bg-surface-900 py-20 px-8 sm:px-20 flex flex-col items-center\"\n style=\"border-radius: 53px\">\n <div class=\"flex flex-col items-center justify-center\">\n <logo height=\"96\" width=\"96\"></logo>\n </div>\n <span class=\"text-primary font-bold text-3xl\">404</span>\n <h1 class=\"text-surface-900 dark:text-surface-0 font-bold text-3xl lg:text-5xl mb-2\">Not Found</h1>\n <div class=\"text-surface-600 dark:text-surface-200 mb-8\">Requested resource is not available.</div>\n <p-button id=\"oip-app-notfound-go-to-home-button\" label=\"Go to home\" routerLink=\"/\" />\n </div>\n </div>\n </div>\n </div>`,\n imports: [RouterLink, LogoComponent, Button, AppFloatingConfiguratorComponent],\n standalone: true\n})\nexport class NotfoundComponent {}\n","import { Component, inject } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { RippleModule } from 'primeng/ripple';\nimport { LogoComponent } from '../../logo.component';\nimport { SecurityService } from '../../../services/security.service';\nimport { AppFloatingConfiguratorComponent } from '../../app-floating-configurator.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n template: `\n <app-floating-configurator />\n <div\n class=\"bg-surface-50 dark:bg-surface-950 flex items-center justify-center min-h-screen min-w-[100vw] overflow-hidden\">\n <div class=\"flex flex-col items-center justify-center\">\n <div\n style=\"border-radius: 56px; padding: 0.3rem; background: linear-gradient(180deg, var(--primary-color) 10%, rgba(33, 150, 243, 0) 30%)\">\n <div class=\"w-full bg-surface-0 dark:bg-surface-900 py-20 px-8 sm:px-20\" style=\"border-radius: 53px\">\n <div class=\"flex flex-col items-center justify-center\">\n <logo [height]=\"96\" [width]=\"96\" />\n </div>\n <div class=\"text-center mb-8\">\n <div class=\"text-surface-900 dark:text-surface-0 text-3xl font-medium mb-4\">\n {{ 'unauthorized.welcomeToOip' | translate }}\n </div>\n <span class=\"text-muted-color font-medium\">{{ 'unauthorized.signInToContinue' | translate }}</span>\n </div>\n <div>\n <p-button\n id=\"oip-unauthorized-error-sign-in-button\"\n label=\"{{ 'unauthorized.signIn' | translate }}\"\n styleClass=\"w-full\"\n (click)=\"securityService.authorize()\"></p-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,\n imports: [\n ButtonModule,\n RippleModule,\n LogoComponent,\n AppFloatingConfiguratorComponent,\n ReactiveFormsModule,\n TranslatePipe\n ]\n})\nexport class UnauthorizedComponent {\n protected readonly securityService = inject(SecurityService);\n}\n","import { Component } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { RouterLink } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-error',\r\n template: `<div\r\n class=\"surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden\">\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n <img alt=\"Sakai logo\" class=\"mb-5 w-6rem flex-shrink-0\" src=\"assets/demo/images/error/logo-error.svg\" />\r\n <div\r\n style=\"border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(233, 30, 99, 0.4) 10%, rgba(33, 150, 243, 0) 30%);\">\r\n <div\r\n class=\"w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center\"\r\n style=\"border-radius:53px\">\r\n <div class=\"grid flex flex-column align-items-center\">\r\n <div\r\n class=\"flex justify-content-center align-items-center bg-pink-500 border-circle\"\r\n style=\"height:3.2rem; width:3.2rem;\">\r\n <i class=\"pi pi-fw pi-exclamation-circle text-2xl text-white\"></i>\r\n </div>\r\n <h1 class=\"text-900 font-bold text-5xl mb-2\">Error Occured</h1>\r\n <span class=\"text-600 mb-5\">Requested resource is not available.</span>\r\n <img alt=\"Error\" class=\"mb-5\" src=\"assets/demo/images/error/asset-error.svg\" width=\"80%\" />\r\n <button\r\n class=\"p-button-text\"\r\n icon=\"pi pi-arrow-left\"\r\n id=\"oip-app-error-go-to-dashboard-button\"\r\n label=\"Go to Dashboard\"\r\n pButton\r\n pRipple\r\n [routerLink]=\"['/']\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>`,\r\n standalone: true,\r\n imports: [ButtonModule, RippleModule, RouterLink]\r\n})\r\nexport class ErrorComponent {}\r\n","import { Component, inject } from '@angular/core';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { ImageModule } from 'primeng/image';\nimport { AvatarModule } from 'primeng/avatar';\nimport { MsgService } from \"../services/msg.service\";\nimport { UserService } from \"../services/user.service\";\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'user-profile',\n standalone: true,\n imports: [FileUploadModule, ImageModule, ImageModule, FileUploadModule, ImageModule, AvatarModule, TranslatePipe],\n template: `\n <p-avatar\n class=\"mr-2\"\n id=\"oip-user-profile-photo-avatar\"\n shape=\"circle\"\n size=\"xlarge\"\n [image]=\"userService.photoLoaded ? userService.photo : null\"/>\n <div class=\"mt-2\">\n <p-fileupload\n accept=\"image/*\"\n chooseIcon=\"pi pi-upload\"\n chooseLabel=\"{{ 'profileComponent.changePhoto' | translate }}\"\n id=\"oip-user-profile-file-upload\"\n maxFileSize=\"1000000\"\n mode=\"basic\"\n name=\"files\"\n url=\"/api/user-profile/post-user-photo\"\n withCredentials=\"true\"\n [auto]=\"true\"\n (onUpload)=\"onBasicUploadAuto($event)\"/>\n </div>\n `\n})\nexport class ProfileComponent {\n readonly userService = inject(UserService);\n readonly msgService = inject(MsgService);\n readonly translateService = inject(TranslateService);\n\n onBasicUploadAuto($event) {\n this.msgService.success(this.translateService.instant('profileComponent.successfullyUploaded'));\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateService } from '@ngx-translate/core';\nimport { lastValueFrom } from 'rxjs';\n\n/**\n * Service for managing translation loading in the application\n */\n@Injectable({ providedIn: 'root' }) // Provided at root level for singleton usage\nexport class L10nService {\n private loadedTranslations: Set<string> = new Set();\n private httpClient = inject(HttpClient);\n private translateService = inject(TranslateService);\n\n /**\n * Loads translations for a specific component\n * @param component - Name of the component to load translations for\n */\n async loadComponentTranslations(component: string): Promise<void> {\n const lang = this.translateService.currentLang;\n await this.loadTranslations(component, lang);\n }\n\n /**\n * Gets the translated value of a key (or an array of keys)\n * @returns the translated key, or an object of translated keys\n */\n public async get(key: string) {\n await this.loadComponentTranslations(key);\n return this.translateService.get(key);\n }\n\n /**\n * Internal method to load translations from JSON files\n * @param component - Component or translation namespace\n * @param lang - Language code to load translations for\n */\n private async loadTranslations(component: string, lang: string): Promise<void> {\n // Create unique key for this component-language combination\n const key = `${component}.${lang}`;\n\n // Skip if translations are already loaded\n if (this.loadedTranslations.has(key)) {\n return;\n }\n\n try {\n // Load translation file from assets\n const translations = await lastValueFrom(this.httpClient.get(`./assets/i18n/${component}.${lang}.json`));\n\n // Get existing translations for the language\n const current = this.translateService.translations[lang] || {};\n\n // Merge new translations with existing ones\n this.translateService.setTranslation(lang, { ...current, ...translations }, true);\n\n // Mark these translations as loaded\n this.loadedTranslations.add(key);\n } catch (e) {\n console.warn(`No translations found for ${component}.${lang}.json`);\n console.error(e);\n }\n }\n\n /**\n * Changes the lang currently used\n */\n use(selectedLanguage: string) {\n this.translateService.use(selectedLanguage);\n }\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { ProfileComponent } from './profile.component';\nimport { Fluid } from 'primeng/fluid';\nimport { Tooltip } from 'primeng/tooltip';\nimport { FormsModule } from '@angular/forms';\nimport { Select } from 'primeng/select';\nimport { TableModule } from 'primeng/table';\nimport { LayoutService } from '../services/app.layout.service';\nimport { UserService } from '../services/user.service';\nimport { ToggleSwitchModule } from 'primeng/toggleswitch';\nimport { RouterLink } from '@angular/router';\nimport { SecurityService } from '../services/security.service';\nimport { MenuService } from '../services/app.menu.service';\nimport { Button } from 'primeng/button';\nimport { L10nService } from '../services/l10n.service';\nimport { SelectItem } from 'primeng/api';\n\ninterface L10n {\n menu: string;\n all: string;\n profile: string;\n photo: string;\n usePhoto256x256Pixel: string;\n selectLanguage: string;\n moduleManagement: string;\n localization: string;\n goTo: string;\n}\n\n@Component({\n selector: 'app-config',\n template: `\n <p-fluid>\n <div class=\"flex flex-col md:flex-row gap-4\">\n <div class=\"md:w-1/2\">\n <div class=\"card flex flex-col gap-4\">\n <div class=\"font-semibold text-xl\">{{ l10n.profile }}</div>\n <div class=\"flex justify-content-end flex-wrap\">\n {{ userService.userName }}\n </div>\n <label>\n {{ l10n.photo }}\n <span\n class=\"pi pi-question-circle\"\n pTooltip=\"{{ l10n.usePhoto256x256Pixel }}\"\n tooltipPosition=\"right\"></span>\n </label>\n <div class=\"flex justify-content-end flex-wrap\">\n <user-profile></user-profile>\n </div>\n </div>\n </div>\n <div class=\"md:w-1/2\">\n <div class=\"card flex flex-col gap-4\">\n <div class=\"font-semibold text-xl\">{{ l10n.localization }}</div>\n <label> {{ l10n.selectLanguage }} </label>\n <div class=\"flex justify-content-end flex-wrap\">\n <p-select\n class=\"w-full md:w-56\"\n id=\"oip-app-config-language-select\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [options]=\"languages\"\n [(ngModel)]=\"selectedLanguage\"\n (onChange)=\"changeLanguage()\" />\n </div>\n </div>\n </div>\n @if (securityService.isAdmin) {\n <div class=\"md:w-1/2\">\n <div class=\"card flex flex-col gap-4\">\n <div class=\"font-semibold text-xl\">{{ l10n.menu }}</div>\n <div class=\"flex items-center gap-2\">\n <label for=\"oip-app-config-admin-mode\">{{ l10n.all }}</label>\n <p-toggle-switch\n id=\"oip-app-config-admin-mode\"\n [(ngModel)]=\"menuService.adminMode\"\n (onChange)=\"onSwitchChange()\"></p-toggle-switch>\n </div>\n <div class=\"flex items-center gap-2\">\n <label for=\"oip-app-config-admin-mode\">{{ l10n.moduleManagement }}</label>\n <p-button icon=\"pi pi-cog\" label=\"{{ l10n.goTo }}\" routerLink=\"/modules\" />\n </div>\n </div>\n </div>\n }\n </div>\n </p-fluid>\n `,\n imports: [ProfileComponent, Fluid, Tooltip, FormsModule, Select, TableModule, ToggleSwitchModule, RouterLink, Button]\n})\nexport class ConfigComponent implements OnInit {\n private readonly layoutService = inject(LayoutService);\n private readonly l10nService = inject(L10nService);\n protected readonly userService = inject(UserService);\n protected readonly securityService = inject(SecurityService);\n protected readonly menuService = inject(MenuService);\n protected l10n = {} as L10n;\n\n selectedLanguage: string;\n languages: SelectItem<string>[] = [\n { value: 'en', label: 'English' },\n { value: 'ru', label: 'Русский' }\n ];\n\n constructor() {\n this.selectedLanguage = this.layoutService.language();\n }\n\n async ngOnInit() {\n (await this.l10nService.get('config')).subscribe((l10n) => {\n this.l10n = l10n;\n });\n }\n\n /**\n * Changes the application's language.\n * @return {void}\n */\n changeLanguage(): void {\n this.layoutService.layoutConfig.update((config) => ({\n ...config,\n language: this.selectedLanguage\n }));\n this.l10nService.use(this.selectedLanguage);\n }\n\n async onSwitchChange(): Promise<void> {\n await this.menuService.loadMenu();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TagModule } from 'primeng/tag';\nimport { ConfirmationService, SharedModule } from 'primeng/api';\nimport { TableModule } from 'primeng/table';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TextareaModule } from 'primeng/textarea';\nimport { ButtonModule } from 'primeng/button';\nimport { FormsModule } from '@angular/forms';\nimport { ConfirmDialog } from 'primeng/confirmdialog';\nimport { NgIf } from '@angular/common';\nimport { Tooltip } from 'primeng/tooltip';\nimport { BaseModuleComponent } from \"./base-module.component\";\nimport { NoSettingsDto } from \"../dtos/no-settings.dto\";\nimport { SecurityComponent } from \"./security.component\";\n\nexport interface MigrationDto {\n name: string;\n applied: boolean;\n pending: boolean;\n exist: boolean;\n}\n\nexport interface ApplyMigrationRequest {\n name: string;\n}\n\n@Component({\n imports: [\n TableModule,\n SharedModule,\n TagModule,\n InputTextModule,\n TextareaModule,\n ButtonModule,\n FormsModule,\n ConfirmDialog,\n NgIf,\n SecurityComponent,\n Tooltip\n ],\n selector: 'db-migration',\n template: `\n <div *ngIf=\"isContent\" class=\"card\" style=\"height: 100%\">\n <p-confirmDialog/>\n <div>\n <h5>Migration manager</h5>\n <div class=\"flex flex-row gap-2\">\n <p-button\n icon=\"pi pi-refresh\"\n pTooltip=\"Refresh\"\n severity=\"secondary\"\n tooltipPosition=\"bottom\"\n [outlined]=\"true\"\n (click)=\"refreshAction()\"/>\n <p-button\n icon=\"pi pi-filter-slash\"\n pTooltip=\"Clean filter\"\n severity=\"secondary\"\n tooltipPosition=\"bottom\"\n [outlined]=\"true\"\n (click)=\"dt.clear()\"/>\n </div>\n <div>\n <p-table #dt dataKey=\"name\" editMode=\"row\" size=\"small\" [scrollable]=\"true\" [value]=\"data\">\n <ng-template let-columns pTemplate=\"header\">\n <tr>\n <th pSortableColumn=\"name\" scope=\"col\">\n Migration name\n <p-columnFilter display=\"menu\" field=\"name\" type=\"text\"/>\n </th>\n <th scope=\"col\">Applied</th>\n <th scope=\"col\">Exist</th>\n <th>Pending</th>\n <th scope=\"col\"></th>\n </tr>\n </ng-template>\n\n <ng-template #body let-columns=\"columns\" let-editing=\"editing\" let-ri=\"rowIndex\" let-rowData>\n <tr [pEditableRow]=\"rowData\">\n <td>\n {{ rowData.name }}\n </td>\n <td>\n <p-button\n *ngIf=\"rowData.applied\"\n icon=\"pi pi-check\"\n severity=\"success\"\n [rounded]=\"true\"\n [text]=\"true\">\n </p-button>\n </td>\n <td>\n @if (rowData.exist) {\n <p-button icon=\"pi pi-check\" severity=\"success\" [rounded]=\"true\" [text]=\"true\"/>\n }\n </td>\n <td>\n @if (rowData.pending) {\n <p-button icon=\"pi pi-check\" severity=\"success\" [rounded]=\"true\" [text]=\"true\"></p-button>\n }\n </td>\n <td>\n <p-button\n icon=\"pi pi-bolt\"\n pCancelEditableRow\n pTooltip=\"Apply migration\"\n severity=\"secondary\"\n tooltipPosition=\"left\"\n [rounded]=\"true\"\n [text]=\"true\"\n (click)=\"applyMigration(rowData)\">\n </p-button>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n </div>\n @if (isSecurity) {\n <security [controller]=\"controller\" [id]=\"id\"/>\n }\n `,\n providers: [ConfirmationService]\n})\nexport class DbMigrationComponent\n extends BaseModuleComponent<NoSettingsDto, NoSettingsDto>\n implements OnInit, OnDestroy {\n data: MigrationDto[];\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.refreshAction();\n }\n\n async refreshAction() {\n this.getData()\n .then((response) => {\n this.data = response;\n })\n .catch((error) => {\n console.log(error);\n this.msgService.error('Error refreshing database');\n });\n }\n\n async getData() {\n return this.baseDataService.sendRequest<MigrationDto[]>(`api/${this.controller}/get-migrations`, 'GET');\n }\n\n async applyMigration(rowData: MigrationDto) {\n const request = {name: rowData.name} as ApplyMigrationRequest;\n return this.baseDataService.sendRequest(`api/${this.controller}/apply-migration`, 'POST', request);\n }\n}\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\nimport { Injectable } from \"@angular/core\";\nimport {\n ApiExceptionResponse,\n ExistModuleDto,\n ModuleDeleteRequest,\n ModuleDto,\n} from \"./data-contracts\";\nimport { ContentType, HttpClient, RequestParams } from \"./http-client\";\n\n@Injectable()\nexport class Module<\n SecurityDataType = unknown,\n> extends HttpClient<SecurityDataType> {\n /**\n * @description Retrieves all modules stored in the system.\n *\n * @tags Module\n * @name moduleGetAll\n * @request GET:/api/module/get-all\n * @secure\n */\n moduleGetAll = (params: RequestParams = {}) =>\n this.request<ModuleDto[], ApiExceptionResponse>({\n path: `/api/module/get-all`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n /**\n * @description Inserts a new module into the system.\n *\n * @tags Module\n * @name moduleInsert\n * @request POST:/api/module/insert\n * @secure\n */\n moduleInsert = (data: ModuleDto, params: RequestParams = {}) =>\n this.request<void, ApiExceptionResponse>({\n path: `/api/module/insert`,\n method: \"POST\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * @description Deletes a module by its identifier.\n *\n * @tags Module\n * @name moduleDelete\n * @request DELETE:/api/module/delete\n * @secure\n */\n moduleDelete = (data: ModuleDeleteRequest, params: RequestParams = {}) =>\n this.request<void, ApiExceptionResponse>({\n path: `/api/module/delete`,\n method: \"DELETE\",\n body: data,\n secure: true,\n type: ContentType.Json,\n ...params,\n });\n /**\n * @description Returns all registered modules and indicates whether each one is currently loaded into the application.\n *\n * @tags Module\n * @name moduleGetModulesWithLoadStatus\n * @request GET:/api/module/get-modules-with-load-status\n * @secure\n */\n moduleGetModulesWithLoadStatus = (params: RequestParams = {}) =>\n this.request<ExistModuleDto[], ApiExceptionResponse>({\n path: `/api/module/get-modules-with-load-status`,\n method: \"GET\",\n secure: true,\n format: \"json\",\n ...params,\n });\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { Tooltip } from 'primeng/tooltip';\nimport { FormsModule } from '@angular/forms';\nimport { TableModule } from 'primeng/table';\nimport { BaseDataService } from '../services/base-data.service';\nimport { Tag } from 'primeng/tag';\nimport { ButtonModule } from 'primeng/button';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { MsgService } from '../services/msg.service';\nimport { ConfirmationService } from 'primeng/api';\nimport { ConfirmDialog } from 'primeng/confirmdialog';\nimport { L10nService } from '../services/l10n.service';\nimport { Module } from '../api/Module';\nimport { ModuleDto } from '../api/data-contracts';\nimport { AppTitleService } from '../services/app-title.service';\n\ninterface L10n {\n confirm: {\n header: string;\n message: string;\n cancel: string;\n delete: string;\n };\n title: string;\n messages: {\n deleteSuccess: string;\n };\n table: {\n deleteTooltip: string;\n currentlyLoaded: string;\n yes: string;\n no: string;\n name: string;\n moduleId: string;\n };\n refreshTooltip: string;\n}\n\n@Component({\n imports: [FormsModule, TableModule, Tag, ButtonModule, ToolbarModule, Tooltip, ConfirmDialog],\n providers: [ConfirmationService, Module],\n selector: 'app-modules',\n template: `\n <p-confirmDialog></p-confirmDialog>\n <div class=\"flex flex-col md:flex-row gap-4\">\n <div class=\"card w-full\">\n <div class=\"font-semibold text-xl mb-4\">\n {{ l10n.title }}\n </div>\n <div class=\"mb-4\">\n <p-toolbar>\n <p-button\n icon=\"pi pi-refresh\"\n rounded=\"true\"\n severity=\"secondary\"\n text=\"true\"\n tooltipPosition=\"bottom\"\n [pTooltip]=\"l10n.refreshTooltip\"\n (onClick)=\"refreshAction()\"></p-button>\n </p-toolbar>\n </div>\n <p-table class=\"mt-4\" [paginator]=\"true\" [rows]=\"100\" [value]=\"modules\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th>{{ l10n.table.moduleId }}</th>\n <th>{{ l10n.table.name }}</th>\n <th>{{ l10n.table.currentlyLoaded }}</th>\n <th style=\"width: 4rem\"></th>\n </tr>\n </ng-template>\n <ng-template let-module pTemplate=\"body\">\n <tr>\n <td>{{ module.moduleId }}</td>\n <td>{{ module.name }}</td>\n <td>\n <p-tag\n [severity]=\"module.currentlyLoaded ? 'success' : 'danger'\"\n [value]=\"module.currentlyLoaded ? l10n.table.yes : l10n.table.no\"></p-tag>\n </td>\n <td>\n <p-button\n icon=\"pi pi-trash\"\n rounded=\"true\"\n severity=\"danger\"\n text=\"true\"\n tooltipPosition=\"bottom\"\n [pTooltip]=\"l10n.table.deleteTooltip\"\n (onClick)=\"deleteModule(module)\"></p-button>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n `\n})\nexport class AppModulesComponent implements OnInit {\n protected dataService = inject(BaseDataService);\n protected modules: ModuleDto[] = [];\n protected msgService = inject(MsgService);\n protected confirmationService = inject(ConfirmationService);\n protected l10nService = inject(L10nService);\n protected l10n: L10n = {} as L10n;\n protected titleService = inject(AppTitleService);\n private moduleService = inject(Module);\n\n async ngOnInit() {\n (await this.l10nService.get('app-modules')).subscribe((l) => {\n this.l10n = l;\n });\n this.titleService.setTitle(this.l10n.title);\n await this.refreshAction();\n }\n\n async refreshAction() {\n this.modules = await this.moduleService.moduleGetModulesWithLoadStatus();\n }\n\n deleteModule(module: ModuleDto) {\n this.confirmationService.confirm({\n header: this.l10n.confirm.header,\n message: this.l10n.confirm.message,\n icon: 'pi pi-trash',\n rejectButtonProps: {\n label: this.l10n.confirm.cancel,\n severity: 'secondary',\n outlined: true\n },\n acceptButtonProps: {\n label: this.l10n.confirm.delete,\n severity: 'danger'\n },\n accept: async () => {\n this.dataService\n .sendRequest(`api/module/delete`, 'DELETE', {\n moduleId: module.moduleId\n })\n .then(() => this.refreshAction())\n .catch((error) => console.error(error));\n this.msgService.success(this.l10n.messages.deleteSuccess);\n }\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Router, UrlTree } from '@angular/router';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { SecurityService } from './security.service';\n\n/**\n * A route guard that ensures the user is authenticated and has a valid access token.\n * If the access token is expired, it attempts to refresh the session.\n * If authentication fails or refresh is unsuccessful, redirects to the unauthorized page.\n */\n@Injectable()\nexport class AuthGuardService {\n private readonly oidcSecurityService = inject(SecurityService);\n private readonly router = inject(Router);\n\n /**\n * Checks whether the route can be activated.\n * - Returns `true` if the user is authenticated and the token is valid.\n * - Attempts to refresh the token if expired.\n * - Redirects to `/unauthorized` if not authenticated or refresh fails.\n *\n * @returns {Observable<boolean | UrlTree>} A stream resolving to true (allow), or UrlTree (redirect).\n */\n canActivate(): Observable<boolean | UrlTree> {\n return combineLatest([this.oidcSecurityService.isAuthenticated(), this.oidcSecurityService.isTokenExpired()]).pipe(\n switchMap(([authenticated, tokenExpired]) => {\n if (!authenticated) {\n return of(this.router.parseUrl('/unauthorized'));\n }\n if (!tokenExpired) {\n return of(true);\n }\n\n // Token is expired; attempt to refresh\n return this.tryRefreshToken();\n })\n );\n }\n\n /**\n * Attempts to refresh the session using the refresh token.\n * If successful, allows route activation; otherwise, redirects to `/unauthorized`.\n *\n * @returns {boolean | UrlTree} A stream resolving to true or redirect UrlTree.\n */\n tryRefreshToken(): Observable<boolean | UrlTree> {\n return this.oidcSecurityService.forceRefreshSession().pipe(\n map((refreshSuccess) => {\n return refreshSuccess ? true : this.router.parseUrl('/unauthorized');\n }),\n catchError((err) => {\n console.warn(err);\n return of(this.router.parseUrl('/unauthorized'));\n })\n );\n }\n}\n","import { AbstractSecurityStorage } from 'angular-auth-oidc-client';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class SecurityStorageService implements AbstractSecurityStorage {\r\n read(key: string) {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n write(key: string, value: any): void {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n remove(key: string): void {\r\n localStorage.removeItem(key);\r\n }\r\n\r\n clear(): void {\r\n localStorage.clear();\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { HttpInterceptorFn } from '@angular/common/http';\r\nimport { LayoutService } from '../services/app.layout.service';\r\n\r\nexport const langIntercept: HttpInterceptorFn = (req, next) => {\r\n const layoutService = inject(LayoutService);\r\n const lang = layoutService.language() ? layoutService.language() : 'en';\r\n const httpHeaders = req.headers.set('Accept-language', lang);\r\n const authReq = req.clone({\r\n headers: httpHeaders\r\n });\r\n return next(authReq);\r\n};\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { map, Observable } from 'rxjs';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'secure'\r\n})\r\nexport class SecurePipe implements PipeTransform {\r\n private readonly http = inject(HttpClient);\r\n private readonly sanitizer = inject(DomSanitizer);\r\n\r\n transform(url: any): Observable<SafeUrl> {\r\n return this.http\r\n .get(url, { responseType: 'blob' })\r\n .pipe(map((val) => this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(val))));\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { map, Observable } from 'rxjs';\nimport { OpenIdConfiguration, StsConfigHttpLoader } from 'angular-auth-oidc-client';\nimport { GetKeycloakClientSettingsResponse } from '../api/data-contracts';\n\n/**\n * Load keycloak settings from backend and save to sessionStorage\n * @param httpClient\n * @returns StsConfigHttpLoader\n */\nexport const httpLoaderAuthFactory = (httpClient: HttpClient) => {\n const KEYCLOAK_SETTINGS_KEY = 'keycloak-client-settings';\n const settingsStings = sessionStorage.getItem(KEYCLOAK_SETTINGS_KEY);\n if (settingsStings) {\n const config$ = new Observable<GetKeycloakClientSettingsResponse>((subscribe) => {\n subscribe.next(JSON.parse(settingsStings));\n });\n return new StsConfigHttpLoader(config$);\n } else {\n const config$ = httpClient.get<GetKeycloakClientSettingsResponse>(`api/security/get-keycloak-client-settings`).pipe(\n map((config: GetKeycloakClientSettingsResponse) => {\n const authConfig: OpenIdConfiguration = {\n authority: config.authority,\n redirectUrl: window.location.origin,\n postLogoutRedirectUri: window.location.origin,\n clientId: config.clientId,\n scope: config.scope,\n responseType: config.responseType,\n useRefreshToken: config.useRefreshToken,\n silentRenew: config.silentRenew,\n logLevel: config.logLevel,\n secureRoutes: config.secureRoutes\n };\n sessionStorage.setItem(KEYCLOAK_SETTINGS_KEY, JSON.stringify(authConfig));\n return authConfig;\n })\n );\n return new StsConfigHttpLoader(config$);\n }\n};\n","// Components\nexport * from './components/base-module.component';\nexport * from './components/security.component';\nexport * from './components/top-bar.component';\nexport * from './components/footer.component';\nexport * from './components/menu/menu.component';\nexport * from './components/app.layout.component';\nexport * from './components/sidebar.component';\nexport * from './components/logo.component';\nexport * from './components/notfound.component';\nexport * from './components/auth/unauthorized/unauthorized.component';\nexport * from './components/auth/error/error.component';\nexport * from './components/profile.component';\nexport { ConfigComponent } from './components/config.component';\nexport * from './components/db-migration.component';\nexport { AppModulesComponent } from './components/app-modules.component';\n\n// Dtos\nexport * from './dtos/top-bar.dto';\nexport * from './dtos/security.dto';\nexport * from './dtos/put-security.dto';\nexport * from './dtos/no-settings.dto';\n\n// Services\nexport * from './services/base-data.service';\nexport * from './services/top-bar.service';\nexport * from './services/security.service';\nexport * from './services/security-data.service';\nexport * from './services/msg.service';\nexport * from './services/auth.service';\nexport * from './services/app.layout.service';\nexport * from './services/app.menu.service';\nexport * from './services/user.service';\nexport * from './services/security-storage.service';\n\n// Events\nexport * from './events/menu-change.event';\n\n// other\nexport { langIntercept } from './intercepts/i18n-intercept.service';\nexport { SecurePipe } from './modules/secure.pipe';\nexport { httpLoaderAuthFactory } from './modules/http-loader.factory';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["HttpClient","i3","i1","i2","i1.LayoutService","i6","i2.MenuService","i4","i5","filter","map"],"mappings":"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"}
|