@kuzntsv/uikit 0.0.49 → 0.0.50
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.
|
@@ -278,7 +278,7 @@ class AuthService {
|
|
|
278
278
|
/** Элемент скрывается, если у пользователя нет ни одной роли из перереданных в "roles"
|
|
279
279
|
или в списке "roles" есть роль "hideRole". */
|
|
280
280
|
isHideElement(roles, checkRoles) {
|
|
281
|
-
if (!roles)
|
|
281
|
+
if (!roles || roles.length === 0)
|
|
282
282
|
return false;
|
|
283
283
|
if (roles.indexOf(this.hideRole) !== -1)
|
|
284
284
|
return true;
|
|
@@ -788,6 +788,7 @@ class BaseToolbarComponent {
|
|
|
788
788
|
this.subscription.unsubscribe();
|
|
789
789
|
}
|
|
790
790
|
isShow(roles) {
|
|
791
|
+
//console.log(roles, this.userRoles);
|
|
791
792
|
return !this.authService.isHideElement(roles, this.userRoles);
|
|
792
793
|
}
|
|
793
794
|
onNewClick() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kuzntsv-uikit.mjs","sources":["../../../projects/uikit/src/loader/progress-spinner.component.ts","../../../projects/uikit/src/loader/loader.service.ts","../../../projects/uikit/src/services/alert.service.ts","../../../projects/uikit/src/models/environment.model.ts","../../../projects/uikit/src/services/log.service.ts","../../../projects/uikit/src/auth/services/auth-user.service.ts","../../../projects/uikit/src/auth/services/auth.service.ts","../../../projects/uikit/src/auth/components/login-form/login-form.component.ts","../../../projects/uikit/src/auth/components/login-form/login-form.component.html","../../../projects/uikit/src/auth/components/permit-form/permit-form.component.ts","../../../projects/uikit/src/auth/components/permit-form/permit-form.component.html","../../../projects/uikit/src/auth/components/login-page/login-page.component.ts","../../../projects/uikit/src/auth/components/login-page/login-page.component.html","../../../projects/uikit/src/auth/directives/disable-if-unauthorized.directive.ts","../../../projects/uikit/src/auth/directives/hide-if-unauthorized.directive.ts","../../../projects/uikit/src/auth/directives/disable-if-role.directive.ts","../../../projects/uikit/src/auth/directives/hide-if-role-not.directive.ts","../../../projects/uikit/src/auth/services/auth-guard.service.ts","../../../projects/uikit/src/auth/services/role-guard.service.ts","../../../projects/uikit/src/auth/services/auth-role.service.ts","../../../projects/uikit/src/base/base-toolbar/base-toolbar.service.ts","../../../projects/uikit/src/base/base-toolbar/components/base-toolbar.component.ts","../../../projects/uikit/src/base/base-toolbar/components/base-toolbar.component.html","../../../projects/uikit/src/base/base-classes/base-edit-dialog-data.ts","../../../projects/uikit/src/services/avatar.service.ts","../../../projects/uikit/src/services/local-storage-service.ts","../../../projects/uikit/src/services/export.service.ts","../../../projects/uikit/src/base/base-classes/base-edit-class.ts","../../../projects/uikit/src/base/base-classes/base-entity-action.ts","../../../projects/uikit/src/base/base-classes/base-filter-class.ts","../../../projects/uikit/src/base/base-classes/base-nav-bar-menu-class.ts","../../../projects/uikit/src/core/animations/animations.service.ts","../../../projects/uikit/src/core/animations/route.animations.ts","../../../projects/uikit/src/shared/dialog/dialog.component.ts","../../../projects/uikit/src/shared/dialog/dialog.component.html","../../../projects/uikit/src/base/base-classes/base-page-class.ts","../../../projects/uikit/src/base/base-classes/base-service-class.ts","../../../projects/uikit/src/guards/redirect-guard.ts","../../../projects/uikit/src/models/sec-user.model.ts","../../../projects/uikit/src/pipes/safe.pipe.ts","../../../projects/uikit/src/pipes/time.pipe.ts","../../../projects/uikit/src/pipes/truncate.pipe.ts","../../../projects/uikit/src/shared/chip-input-autocomplete/chip-input-autocomplete.component.ts","../../../projects/uikit/src/shared/chip-input-autocomplete/chip-input-autocomplete.component.html","../../../projects/uikit/src/shared/date-range-input/models/date-range.ts","../../../projects/uikit/src/shared/date-range-input/models/date-formats.ts","../../../projects/uikit/src/shared/date-range-input/date-range-input.component.ts","../../../projects/uikit/src/shared/date-range-input/date-range-input.component.html","../../../projects/uikit/src/shared/dialog/models/dialog-action.ts","../../../projects/uikit/src/shared/navbar/navbar.ts","../../../projects/uikit/src/shared/navbar/navbar.html","../../../projects/uikit/src/shared/not-found/not-found.component.ts","../../../projects/uikit/src/shared/not-found/not-found.component.html","../../../projects/uikit/src/shared/select-autocomplete-with-vs/select-autocomplete-with-vs.component.ts","../../../projects/uikit/src/shared/select-autocomplete-with-vs/select-autocomplete-with-vs.component.html","../../../projects/uikit/src/shared/select-with-group/select-with-group.component.ts","../../../projects/uikit/src/shared/select-with-group/select-with-group.component.html","../../../projects/uikit/src/shared/table/table.component.ts","../../../projects/uikit/src/shared/table/table.component.html","../../../projects/uikit/src/public-api.ts","../../../projects/uikit/src/kuzntsv-uikit.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'ngx-uik-loader',\r\n template: `\r\n <div class=\"loading-indicator\" mat-dialog-content>\r\n <mat-progress-spinner mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </div>\r\n `,\r\n styles: [`\r\n /* Разместить по центру */\r\n .loading-indicator {\r\n position: fixed;\r\n z-index: 999;\r\n height: 2em;\r\n width: 2em;\r\n overflow: initial;\r\n margin: auto;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n }\r\n\r\n /* Заблокировать оверлей */\r\n .loading-indicator:before {\r\n content: '';\r\n display: block;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0,0,0,0.3);\r\n }\r\n `],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatProgressSpinner]\r\n})\r\n\r\nexport class ProgressSpinnerComponent implements AfterViewInit {\r\n\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n\r\n ngAfterViewInit() {\r\n this.cdRef.detectChanges();\r\n }\r\n}\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { inject, Injectable } from '@angular/core';\r\n\r\nimport { ProgressSpinnerComponent } from './progress-spinner.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class LoaderService {\r\n private overlayRef: OverlayRef | null = null;\r\n\r\n private readonly overlay = inject(Overlay);\r\n\r\n public show() {\r\n if (!this.overlayRef) {\r\n this.overlayRef = this.overlay.create();\r\n }\r\n const spinnerOverlayPortal = new ComponentPortal(ProgressSpinnerComponent);\r\n // Иправление ошибки Expression has changed after it was checked\r\n setTimeout(() => {\r\n if (!this.overlayRef?.hasAttached()) {\r\n this.overlayRef?.attach(spinnerOverlayPortal);\r\n }\r\n });\r\n }\r\n\r\n public hide() {\r\n if (this.overlayRef) {\r\n this.overlayRef.detach();\r\n }\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nimport { IAlertService } from '../base/interfaces';\r\n\r\n// Сервис для вывода сообщений(ошибки, успеха)\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService implements IAlertService {\r\n // eslint-disable-next-line no-magic-numbers\r\n private readonly duration = 5000;\r\n\r\n private readonly _snackBar = inject(MatSnackBar);\r\n\r\n openSnackBar(message: string, action: string, duration: number = this.duration) {\r\n this._snackBar.open(message, action, {\r\n duration,\r\n panelClass: ['red-snackbar'],\r\n });\r\n }\r\n\r\n success(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n info(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n helper(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n warning(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n error(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n}\r\n","export abstract class Environment {\r\n abstract readonly appVersion: string;\r\n abstract readonly production: boolean;\r\n abstract readonly endpoints: { [key in string]: string };\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\n\r\nimport { Environment } from '../models/environment.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LogService {\r\n public logPrefix: string = '';\r\n\r\n private readonly env = inject(Environment);\r\n\r\n log(...args: any) {\r\n if (!this.env.production) {\r\n // Prepend log prefix log string\r\n args.unshift(this.logPrefix + ' ');\r\n // Pass along arguments to console.log\r\n console.log(args.join(' '));\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n/**\r\n * Сущность пользователя из API\r\n */\r\nexport class User {\r\n id: number = 0;\r\n username: string = '';\r\n firstName: string = '';\r\n lastName: string = '';\r\n prof: string = '';\r\n depart: number = 0;\r\n area: string = '';\r\n tabnum: string = '';\r\n mail: string = '';\r\n phone: string = '';\r\n roles: string = '';\r\n rolesArray: string[] = [];\r\n roleList: string[] = [];\r\n idHuman: string = '';\r\n token: string = '';\r\n // Время действия токена\r\n expires_in: number = 0;\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n/**\r\n * Сервис для работы с объектом в local Storage\r\n */\r\nexport class UserService {\r\n private user: User;\r\n constructor() {\r\n if (localStorage.getItem('sed_currentUser')) {\r\n this.user = JSON.parse(localStorage.getItem('sed_currentUser') || '');\r\n } else {\r\n this.user = new User();\r\n }\r\n }\r\n\r\n get dept(): number {\r\n return this.user?.depart;\r\n }\r\n\r\n /** Получить данные о пользователе */\r\n get userData(): User {\r\n return this.user;\r\n }\r\n\r\n /** Изменить данные пользователя в localStorage */\r\n set userData(user: User) {\r\n localStorage.setItem('sed_currentUser', JSON.stringify(user));\r\n this.user = JSON.parse(localStorage.getItem('sed_currentUser') || '');\r\n }\r\n\r\n /** Удаляет данные о пользователе из localStorage. */\r\n removeUser() {\r\n localStorage.removeItem('sed_currentUser');\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { DefaultUrlSerializer, Router } from '@angular/router';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nimport { AlertService } from '../../services/alert.service';\r\nimport { LogService } from '../../services/log.service';\r\nimport { AuthPermission } from '../auth.types';\r\nimport { UserService } from './auth-user.service';\r\n\r\n// Сервис авторизации\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n // Указываем какой сервер использовать\r\n baseRoute = 'mainApi/';\r\n // Хранит доступные пользователю действия\r\n permissions: string[] = ['VIEW'];\r\n readonly defaultRoles = [];\r\n // Хранит роли пользователя\r\n roles$: BehaviorSubject<string[]>;\r\n loggedIn$: BehaviorSubject<boolean>;\r\n\r\n // Роль для скрытия элементов.\r\n private readonly hideRole = 'HIDE';\r\n\r\n // Объект, хранящий статус авторизации\r\n private readonly defaultHeader = {\r\n headers: new HttpHeaders().set('content-type', 'application/x-www-form-urlencoded')\r\n };\r\n\r\n private idHuman: string | null;\r\n\r\n private readonly http = inject(HttpClient);\r\n private readonly router = inject(Router);\r\n private readonly console = inject(LogService);\r\n private readonly alertService = inject(AlertService);\r\n private readonly userService = inject(UserService);\r\n\r\n constructor() {\r\n this.console.logPrefix = 'Auth Service';\r\n this.idHuman = localStorage.getItem('id_human');\r\n if (this.userService.userData?.roleList) {\r\n this.roles$ = new BehaviorSubject<string[]>(this.userService.userData?.roleList);\r\n } else {\r\n this.roles$ = new BehaviorSubject<string[]>(this.defaultRoles);\r\n }\r\n this.loggedIn$ = new BehaviorSubject<boolean>((!!this.userService.userData && !!this.userService.userData.token));\r\n }\r\n\r\n /** Проверка разрешений */\r\n hasPermission(authPermission: AuthPermission) {\r\n return !!(this.permissions &&\r\n this.permissions.find(permission => permission === authPermission));\r\n }\r\n\r\n /** Проверка ролей */\r\n public hasRole(roles: string[], checkRole: string): boolean {\r\n if (roles) {\r\n return !!roles.find(role => (role === checkRole || role === 'ADMIN'));\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /** Проверка массива ролей */\r\n public hasRoles(roles: string[], checkRoles: string[]): boolean {\r\n if (roles) {\r\n for (const checkRole of checkRoles) {\r\n if (roles.find(role => (role === checkRole || role === 'ADMIN'))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /** Элемент скрывается, если у пользователя нет ни одной роли из перереданных в \"roles\"\r\n или в списке \"roles\" есть роль \"hideRole\". */\r\n public isHideElement(roles: string[], checkRoles: string[]): boolean {\r\n if (!roles)\r\n return false;\r\n if (roles.indexOf(this.hideRole) !== -1)\r\n return true;\r\n for (const role of roles) {\r\n if (role && (role.length !== 0) && this.hasRole(checkRoles, role)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n\r\n // /** Сменить роль без side эффекта */\r\n // public changeRole(role: string) {\r\n // this.roles$.next([role]);\r\n // }\r\n\r\n // /** Сменить роли без side эффекта */\r\n // public changeRoles(roles: string[]) {\r\n // this.roles$.next(roles);\r\n // }\r\n\r\n /** Запрос авторизации */\r\n login(username: string, password: string, idCas: number, returnUrl: string = '', onErrorFn: () => void) {\r\n const passwordEncoded = encodeURIComponent(password);\r\n let body = `username=${username}&password=${passwordEncoded}`;\r\n\r\n if (idCas) {\r\n body += `&idcas=${idCas}`;\r\n }\r\n\r\n if (this.idHuman) {\r\n body += `&idhuman=${this.idHuman}`;\r\n }\r\n\r\n this.http.post(this.baseRoute + 'jwt', body, this.defaultHeader)\r\n .subscribe({\r\n next: data => {\r\n this.successLoginAction(data, returnUrl);\r\n this.alertService.success('Успешная авторизация');\r\n },\r\n error: (error: any) => {\r\n this.console.log(error);\r\n this.alertService.error('Ошибка при авторизации: ' + error, 0);\r\n if (onErrorFn) {\r\n onErrorFn();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /** Aвторизация по пропуску */\r\n loginByPermit(permit: string, idCas: number, returnUrl: string = '') {\r\n let body = `permit=${permit}`;\r\n\r\n if (idCas) {\r\n body += `&idcas=${idCas}`;\r\n }\r\n\r\n if (this.idHuman) {\r\n body += `&idhuman=${this.idHuman}`;\r\n }\r\n\r\n return this.http.post(this.baseRoute + 'jwt', body, this.defaultHeader)\r\n .subscribe({\r\n next: (data) => {\r\n this.successLoginAction(data, returnUrl);\r\n this.alertService.success('Успешная авторизация');\r\n },\r\n error: (error: any) => {\r\n this.console.log(error);\r\n this.alertService.error('Ошибка при авторизации: ' + error, 0);\r\n }\r\n });\r\n }\r\n\r\n /** Разлогиниться */\r\n logout(returnUrl: string = '') {\r\n // Убирает(удаляет) пользователя из локального хранилища когда он разлогинивается\r\n this.userService.removeUser();\r\n // localStorage.removeItem('sed_currentUser');\r\n // Отправляем подписчикам события что человек вышел\r\n this.loggedIn$.next(false);\r\n // Переход на страницу авторизации\r\n if (returnUrl) {\r\n // указываем целевой маршрут в параметре\r\n this.router.navigate(['/login'], { queryParams: { returnUrl } }).then();\r\n } else {\r\n this.router.navigate(['/login']).then();\r\n }\r\n }\r\n\r\n // Получить роли пользователя\r\n private getRoles(): Observable<string[]> {\r\n return this.http.get<string[]>(this.baseRoute + 'jwt/webroles');\r\n }\r\n\r\n // /** Инициализация ролей */\r\n // private initRole() {\r\n // if (this.hasRole(this.roles$.getValue(), this.defaultRole)) {\r\n // this.roleService.getRoles().subscribe({\r\n // next: (data: string[]) => {\r\n // this.roles$.next(data['Roles']);\r\n // },\r\n // error: (error: any) => {\r\n // this.console.log(error);\r\n // this.alert.error('Ошибка при получении списка ролей пользователя: ' + error);\r\n // }\r\n // });\r\n // }\r\n // }\r\n\r\n\r\n /** При успешной авторизации */\r\n private successLoginAction(user: any, returnUrl: string = '') {\r\n this.userService.userData = user;\r\n this.loggedIn$.next(true);\r\n // init roles\r\n this.roles$.next(this.userService.userData.roleList);\r\n\r\n if (returnUrl) {\r\n const decodeUrl = decodeURIComponent(returnUrl);\r\n // указан целевой маршрут\r\n if (decodeUrl.includes('?')) {\r\n // есть параметры строки запроса\r\n const serializer = new DefaultUrlSerializer();\r\n // параметры строки запроса\r\n const params = serializer.parse(decodeUrl).queryParams;\r\n //console.log('successLoginAction params = ', params);\r\n // выделение маршрута\r\n const url = decodeUrl.slice(0, decodeUrl.indexOf('?'));\r\n this.router.navigate([url], { queryParams: params });\r\n } else {\r\n this.router.navigate([decodeUrl]);\r\n }\r\n } else {\r\n // не указан целевой маршрут, переход на главную\r\n this.router.navigate(['']);\r\n }\r\n }\r\n}\r\n","\r\nimport { Component, effect, input, output } from '@angular/core';\r\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\r\nimport { MatError, MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatInput } from '@angular/material/input';\r\n\r\nimport { Authenticate } from '../../models/user';\r\n\r\n@Component({\r\n selector: 'ngx-uik-login-form',\r\n templateUrl: 'login-form.component.html',\r\n styleUrls: ['login-form.component.scss'],\r\n imports: [MatCard, MatCardHeader, MatCardTitle, MatCardContent, FormsModule, ReactiveFormsModule, MatFormField, \r\n MatLabel, MatInput, MatError, MatIcon, MatSuffix, MatButton]\r\n})\r\nexport class LoginFormComponent {\r\n pending = input<boolean>(false);\r\n errorMessage = input<string>('');\r\n submitted = output<Authenticate>();\r\n\r\n hide = true;\r\n\r\n form: FormGroup = new FormGroup({\r\n username: new FormControl('', [Validators.required]),\r\n password: new FormControl('', [Validators.required]),\r\n });\r\n\r\n constructor() { \r\n effect(() => {\r\n if (this.pending()) {\r\n this.form.disable();\r\n } else {\r\n this.form.enable();\r\n }\r\n });\r\n }\r\n\r\n submit() {\r\n if (this.form.valid) {\r\n this.submitted.emit(this.form.value);\r\n }\r\n }\r\n}\r\n","<mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n Авторизация\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <p>\r\n <mat-form-field>\r\n <mat-label>Имя пользователя</mat-label>\r\n <input type=\"text\" pattern=\"[A-Za-z]{1,}.[A-Za-z]{1,}.[A-Za-z]*\"\r\n matInput\r\n autocomplete=\"on\"\r\n name=\"login-form-username\"\r\n placeholder=\"Имя пользователя\"\r\n formControlName=\"username\">\r\n @if (form.controls['username'].hasError('pattern')) {\r\n <mat-error>\r\n Пожалуйста, используйте требуемый формат (Пример: a.p.petrov)\r\n </mat-error>\r\n }\r\n @if (form.controls['username'].hasError('required')) {\r\n <mat-error>\r\n Пожалуйста, заполните это поле\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n </p>\r\n\r\n <p>\r\n <mat-form-field>\r\n <mat-label>Пароль</mat-label>\r\n <input [type]=\"hide ? 'password' : 'text'\" matInput placeholder=\"Пароль\" formControlName=\"password\">\r\n <mat-icon class=\"watcher\" matSuffix (mousedown)=\"hide=false\" (mouseup)=\"hide=true\"\r\n >{{ hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n @if (form.controls['password'].hasError('required')) {\r\n <mat-error>\r\n Пожалуйста, заполните это поле\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n </p>\r\n\r\n @if (errorMessage()) {\r\n <p class=\"loginError\">\r\n {{ errorMessage() }}\r\n </p>\r\n }\r\n\r\n <p class=\"loginButtons\">\r\n <button type=\"submit\" mat-button mat-stroked-button color=\"primary\" [disabled]=\"pending()\">Войти</button>\r\n </p>\r\n\r\n </form>\r\n </mat-card-content>\r\n </mat-card>\r\n","import { Component, ElementRef, EventEmitter, HostListener, OnInit, output, Output, viewChild } from '@angular/core';\r\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\r\n\r\n@Component({\r\n selector: 'ngx-uik-permit-form',\r\n templateUrl: 'permit-form.component.html',\r\n styleUrls: ['permit-form.component.scss'],\r\n imports: [MatCard, MatCardHeader, MatCardTitle, MatCardContent]\r\n})\r\nexport class PermitFormComponent implements OnInit {\r\n readonly hidy = viewChild<ElementRef>('hidy');\r\n\r\n submitted = output<string>();\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n mouseHandling() {\r\n this.hidy()?.nativeElement.focus();\r\n }\r\n\r\n ngOnInit() {\r\n // Обнуляем значение Input\r\n const hidy = this.hidy();\n if (hidy) {\r\n hidy.nativeElement.value = null;\r\n hidy.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Поле ввода\r\n *\r\n * @param событие нажатия на клавишу\r\n */\r\n onKeydown(event: any): void {\r\n if (event.key === 'Enter') {\r\n const permit = this.hidy()?.nativeElement.value;\r\n if (permit) {\r\n this.submitted.emit(permit);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n Приложите пропуск\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div class=\"permit\"></div>\r\n </mat-card-content>\r\n</mat-card>\r\n<input #hidy class=\"hidy\" type=\"text\" (keydown)=\"onKeydown($event)\"/>","import { Component, inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LoaderService } from '../../../loader';\r\nimport { Authenticate } from '../../models/user';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { LoginFormComponent } from '../login-form/login-form.component';\r\nimport { PermitFormComponent } from '../permit-form/permit-form.component';\r\n\r\n@Component({\r\n selector: 'ngx-uik-login-page',\r\n templateUrl: 'login-page.component.html',\r\n styleUrls: ['login-page.component.scss'],\r\n imports: [LoginFormComponent, PermitFormComponent]\r\n})\r\nexport class LoginPageComponent implements OnInit, OnDestroy {\r\n pending: boolean = false;\r\n error: string = '';\r\n isKiosk: boolean = false;\r\n /** Идентификатор АС */\r\n idCas: number = 0;\r\n /** Подписка на Идентификатор АС */\r\n sub: Subscription;\r\n /** Url страницы, с которой был переход (после входа вернет на неё) */\r\n returnUrl: string = '';\r\n\r\n private readonly authService = inject(AuthService);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly loaderService = inject(LoaderService);\r\n\r\n constructor() {\r\n this.sub = this.route.data.subscribe(data => {\r\n this.idCas = data['idCas'];\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (localStorage.getItem('id_human') || localStorage.getItem('kiosk-keyboard-layout')) {\r\n // this.isKiosk = true;\r\n }\r\n this.route.queryParams.subscribe(params => {\r\n this.returnUrl = params['returnUrl'];\r\n //console.log('constructor this.returnUrl = ', this.returnUrl);\r\n //this.returnUrl = this.returnUrl.slice(this.returnUrl.lastIndexOf('returnUrl=') + 'returnUrl='.length);\r\n //console.log('constructor NEW this.returnUrl = ', this.returnUrl);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n onSubmitError() {\r\n return () => {\r\n this.pending = false;\r\n this.loaderService.hide();\r\n };\r\n }\r\n\r\n onSubmit($event: Authenticate) {\r\n this.loaderService.show();\r\n this.pending = true;\r\n this.authService.login($event.username, $event.password, this.idCas, this.returnUrl, this.onSubmitError());\r\n }\r\n\r\n onSubmitPermit($event: string) {\r\n const permit = $event;\r\n this.authService.loginByPermit(permit, this.idCas, this.returnUrl);\r\n }\r\n}\r\n","@if (!isKiosk) {\r\n <ngx-uik-login-form\r\n (submitted)=\"onSubmit($event)\"\r\n [pending]=\"pending\"\r\n [errorMessage]=\"error\">\r\n </ngx-uik-login-form>\r\n }\r\n @if (isKiosk) {\r\n <ngx-uik-permit-form\r\n (submitted)=\"onSubmitPermit($event)\"\r\n >\r\n </ngx-uik-permit-form>\r\n }","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\r\n\r\nimport { AuthPermission } from '../auth.types';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[ngxUikDisableIfUnauthorized]',\r\n standalone: true\r\n})\r\nexport class DisableIfUnauthorizedDirective {\r\n permission = input<AuthPermission | undefined>(undefined, { alias: 'ngxUikDisableIfUnauthorized' });\r\n\r\n private readonly el = inject(ElementRef);\r\n private readonly authService = inject(AuthService);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.permission() && !this.authService.hasPermission(this.permission()!)) {\r\n this.el.nativeElement.disabled = true;\r\n }\r\n });\r\n }\r\n}\r\n","import { Directive, ElementRef, inject, input, OnInit } from '@angular/core';\r\n\r\nimport { AuthPermission } from '../auth.types';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[ngxUikHideIfUnauthorized]',\r\n standalone: true\r\n})\r\nexport class HideIfUnauthorizedDirective implements OnInit {\r\n permission = input<AuthPermission | undefined>(undefined, { alias: 'ngxUikHideIfUnauthorized' });\r\n\r\n private readonly el = inject(ElementRef);\r\n private readonly authService = inject(AuthService);\r\n\r\n ngOnInit() {\r\n if (this.permission() && !this.authService.hasPermission(this.permission()!)) {\r\n this.el.nativeElement.style.display = 'none';\r\n }\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, inject, input, OnInit, signal } from '@angular/core';\r\n\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[ngxUikDisableIfRole]',\r\n standalone: true\r\n})\r\nexport class DisableIfRoleDirective implements OnInit {\r\n role = input<string>('', { alias: 'ngxUikDisableIfRole' });\r\n\r\n userRoles = signal<string[]>([]);\r\n\r\n private readonly el = inject(ElementRef);\r\n private readonly authService = inject(AuthService);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.authService.hasRole(this.userRoles(), this.role())) {\r\n this.el.nativeElement.disabled = true;\r\n } else {\r\n this.el.nativeElement.disabled = false;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.role()) {\r\n this.authService.roles$.subscribe((userRoles: string[]) => {\r\n this.userRoles.set(userRoles);\r\n });\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, OnInit, effect, inject, input, signal } from '@angular/core';\r\n\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[ngxUikHideIfRoleNot]',\r\n standalone: true\r\n})\r\nexport class HideIfRoleNotDirective implements OnInit {\r\n roles = input<string[]>([], { alias: 'ngxUikHideIfRoleNot' });\r\n\r\n userRoles = signal<string[]>([]);\r\n\r\n private readonly el = inject(ElementRef);\r\n private readonly authService = inject(AuthService);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.userRoles() && this.userRoles().length > 0) {\r\n // Элемент скрывается, если у пользователя нет ни одной роли из перереданных в \"roles\"\r\n // или в списке \"roles\" есть роль \"hideRole\".\r\n const isHide = this.authService.isHideElement(this.roles(), this.userRoles());\r\n if (isHide) {\r\n this.el.nativeElement.style.display = 'none';\r\n } else {\r\n this.el.nativeElement.style.display = 'inherit';\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.roles()) {\r\n this.authService.roles$.subscribe((userRoles) => {\r\n this.userRoles.set(userRoles);\r\n });\r\n }\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nclass AuthGuardService {\r\n\r\n private readonly auth = inject(AuthService);\r\n private readonly router = inject(Router);\r\n\r\n canActivate(route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ) {\r\n const isLogin = this.auth.loggedIn$.value;\r\n if (!isLogin) {\r\n console.log('state.url =', state.url);\r\n\r\n // Если не зарегистрирован вернуть в форму авторизации\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\r\n }\r\n\r\n return isLogin;\r\n }\r\n}\r\n\r\nexport const authGuard: CanActivateFn = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n) => inject(AuthGuardService).canActivate(route, state);\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nclass RoleGuardService {\r\n\r\n public roles: string[] = [];\r\n\r\n private readonly authService = inject(AuthService);\r\n private readonly router = inject(Router);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\r\n this.roles = route.data['roles'] as string[];\r\n return this.authService.roles$.pipe(map((userRoles: string[]) => this.authService.hasRoles(userRoles, this.roles)));\r\n }\r\n}\r\n\r\nexport const roleGuard: CanActivateFn = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n) => inject(RoleGuardService).canActivate(route, state);\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n// Вычисление разрешений на модули по ролям\r\nexport class RoleService {\r\n // Указываем какой сервер использовать\r\n baseRoute = 'mainApi/';\r\n\r\n private readonly http = inject(HttpClient);\r\n\r\n // Получить роли пользователя\r\n getRoles() {\r\n return this.http.get(this.baseRoute + 'jwt/webroles');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class BaseToolbarService {\r\n baseRoute = 'BaseToolbar';\r\n\r\n constructor() {}\r\n\r\n}\r\n","import { Component, inject, input, OnDestroy, OnInit, output } from '@angular/core';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { MatDivider } from '@angular/material/divider';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatToolbar } from '@angular/material/toolbar';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { AuthService } from '../../../auth';\r\nimport { IContextMenuOptions } from '../../../shared/table';\r\nimport { BaseToolbarService } from '../base-toolbar.service';\r\n\r\n@Component({\r\n selector: 'ngx-uik-base-toolbar',\r\n templateUrl: 'base-toolbar.component.html',\r\n styleUrls: ['base-toolbar.component.scss'],\r\n imports: [MatToolbar, MatIconButton, MatTooltip, MatIcon, MatMenu, MatDivider, MatMenuTrigger, MatMenuItem],\r\n providers: [\r\n BaseToolbarService\r\n ]\r\n})\r\nexport class BaseToolbarComponent implements OnInit, OnDestroy {\r\n rolesNewBtn = input<string[]>([]);\r\n rolesEditBtn = input<string[]>([]);\r\n rolesRemoveBtn = input<string[]>([]);\r\n rolesCopyBtn = input<string[]>([]);\r\n rolesExcelBtn = input<string[]>([]);\r\n rolesCsvBtn = input<string[]>([]);\r\n rolesPdfBtn = input<string[]>([]);\r\n rolesPrintBtn = input<string[]>([]);\r\n rolesRefreshBtn = input<string[]>([]);\r\n rolesClearBtn = input<string[]>([]);\r\n\r\n newBtnDisabled = input<boolean>(false);\r\n editBtnDisabled = input<boolean>(false);\r\n removeBtnDisabled = input<boolean>(false);\r\n copyBtnDisabled = input<boolean>(false);\r\n excelBtnDisabled = input<boolean>(false);\r\n csvBtnDisabled = input<boolean>(false);\r\n pdfBtnDisabled = input<boolean>(false);\r\n printBtnDisabled = input<boolean>(false);\r\n refreshBtnDisabled = input<boolean>(false);\r\n clearBtnDisabled = input<boolean>(false);\r\n\r\n newBtnTooltip = input<string>('Добавить');\r\n editBtnTooltip = input<string>('Изменить');\r\n removeBtnTooltip = input<string>('Удалить');\r\n copyBtnTooltip = input<string>('Скопировать');\r\n excelBtnTooltip = input<string>('Экспортировать в Excel');\r\n csvBtnTooltip = input<string>('Экспортировать в Csv');\r\n pdfBtnTooltip = input<string>('Экспортировать в Pdf');\r\n printBtnTooltip = input<string>('Печатать');\r\n refreshBtnTooltip = input<string>('Обновить данные');\r\n clearBtnTooltip = input<string>('Очистить фильтр');\r\n\r\n /** Список элементов контекстного меню. */\r\n newBtnOpt = input<IContextMenuOptions<string>[]>([]);\r\n\r\n clickedNewBtn = output();\r\n clickedEditBtn = output();\r\n clickedRemoveBtn = output();\r\n clickedCopyBtn = output();\r\n clickedExcelBtn = output();\r\n clickedCsvBtn = output();\r\n clickedPdfBtn = output();\r\n clickedPrintBtn = output();\r\n clickedRefreshBtn = output();\r\n clickedClearBtn = output();\r\n\r\n // DI\r\n protected authService = inject(AuthService);\r\n\r\n userRoles: string[] = [];\r\n subscription = new Subscription();\r\n\r\n ngOnInit(): void {\r\n // получить права пользователя\r\n const subs = this.authService.roles$.subscribe((userRoles) => {\r\n this.userRoles = userRoles;\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n isShow(roles: string[]) {\r\n return !this.authService.isHideElement(roles, this.userRoles);\r\n }\r\n\r\n onNewClick() {\r\n this.clickedNewBtn.emit();\r\n }\r\n\r\n onEditClick() {\r\n this.clickedEditBtn.emit();\r\n }\r\n\r\n onRemoveClick() {\r\n this.clickedRemoveBtn.emit();\r\n }\r\n\r\n onCopyClick() {\r\n this.clickedCopyBtn.emit();\r\n }\r\n\r\n onExcelClick() {\r\n this.clickedExcelBtn.emit();\r\n }\r\n\r\n onCsvClick() {\r\n this.clickedCsvBtn.emit();\r\n }\r\n\r\n onPdfClick() {\r\n this.clickedPdfBtn.emit();\r\n }\r\n\r\n onPrintClick() {\r\n this.clickedPrintBtn.emit();\r\n }\r\n\r\n onRefreshGridClick() {\r\n this.clickedRefreshBtn.emit();\r\n }\r\n\r\n onClearClick() {\r\n this.clickedClearBtn.emit();\r\n }\r\n}\r\n\r\n","<mat-toolbar>\r\n @if (isShow(rolesNewBtn())) {\r\n @if (newBtnOpt() && newBtnOpt().length > 0) {\r\n <button [disabled]=\"newBtnDisabled()\" [matMenuTriggerFor]=\"menuNewBtn\"\r\n mat-icon-button [matTooltip]=\"newBtnTooltip()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <mat-menu #menuNewBtn=\"matMenu\">\r\n @for (menuItem of newBtnOpt(); track menuItem) {\r\n @if (menuItem.title === '-' && !(menuItem.hideFn ? menuItem.hideFn(\"\") : menuItem.hide)) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (menuItem.title !== '-' && !(menuItem.hideFn ? menuItem.hideFn(\"\") : menuItem.hide)) {\r\n <button mat-menu-item\r\n (click)=\"menuItem.onClickFn ? menuItem.onClickFn('') : ''\"\r\n [disabled]=\"menuItem.disabledFn ? menuItem.disabledFn('') : menuItem.disabled\">\r\n @if (menuItem.icon) {\r\n <mat-icon>{{menuItem.icon}}</mat-icon>\r\n }\r\n {{ menuItem.title }}\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n } \r\n @else {\r\n <button [disabled]=\"newBtnDisabled()\" (click)=\"onNewClick()\"\r\n mat-icon-button routerLink=\"new\" routerLinkActive=\"active\" [matTooltip]=\"newBtnTooltip()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n }\r\n }\r\n\r\n @if (isShow(rolesEditBtn())) {\r\n <button [disabled]=\"editBtnDisabled()\" (click)=\"onEditClick()\"\r\n mat-icon-button routerLink=\"edit\" color=\"primary\" routerLinkActive=\"active\" [matTooltip]=\"editBtnTooltip()\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesRemoveBtn())) {\r\n <button [disabled]=\"removeBtnDisabled()\" (click)=\"onRemoveClick()\"\r\n mat-icon-button routerLink=\"delete\" color=\"warn\" routerLinkActive=\"active\" [matTooltip]=\"removeBtnTooltip()\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesCopyBtn())) {\r\n <button [disabled]=\"copyBtnDisabled()\" (click)=\"onCopyClick()\"\r\n mat-icon-button routerLink=\"delete\" routerLinkActive=\"active\" [matTooltip]=\"copyBtnTooltip()\">\r\n <mat-icon>content_copy</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesExcelBtn())) {\r\n <button [disabled]=\"excelBtnDisabled()\" (click)=\"onExcelClick()\"\r\n mat-icon-button routerLink=\"excel\" routerLinkActive=\"active\" [matTooltip]=\"excelBtnTooltip()\">\r\n <mat-icon class=\"material-icons-outlined\">explicit</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesCsvBtn())) {\r\n <button [disabled]=\"csvBtnDisabled()\" (click)=\"onCsvClick()\"\r\n mat-icon-button routerLink=\"csv\" routerLinkActive=\"active\" [matTooltip]=\"csvBtnTooltip()\">\r\n <mat-icon class=\"material-icons-outlined\">download</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesPdfBtn())) {\r\n <button [disabled]=\"pdfBtnDisabled()\" (click)=\"onPdfClick()\"\r\n mat-icon-button routerLink=\"pdf\" routerLinkActive=\"active\" [matTooltip]=\"pdfBtnTooltip()\">\r\n <mat-icon class=\"material-icons-outlined\">picture_as_pdf</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesPrintBtn())) {\r\n <button [disabled]=\"printBtnDisabled()\" (click)=\"onPrintClick()\"\r\n mat-icon-button routerLink=\"print\" routerLinkActive=\"active\" [matTooltip]=\"printBtnTooltip()\">\r\n <mat-icon class=\"material-icons-outlined\">print_outline</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesRefreshBtn())) {\r\n <button [disabled]=\"refreshBtnDisabled()\" (click)=\"onRefreshGridClick()\"\r\n mat-icon-button routerLink=\"refresh\" routerLinkActive=\"active\" [matTooltip]=\"refreshBtnTooltip()\">\r\n <mat-icon>refresh</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesClearBtn())) {\r\n <button [disabled]=\"clearBtnDisabled()\" (click)=\"onClearClick()\"\r\n mat-icon-button routerLink=\"clear\" routerLinkActive=\"active\" [matTooltip]=\"clearBtnTooltip()\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n</mat-toolbar>\r\n","export interface IEditDialogData<T, K = any> {\r\n action: Action;\r\n entity: T;\r\n extraData?: K;\r\n}\r\n\r\nexport enum Action {\r\n Add = 'Добавление',\r\n Edit = 'Изменение'\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AvatarService {\r\n baseRoute = 'common/human/';\r\n\r\n private readonly http = inject(HttpClient);\r\n\r\n getAvatarById(idHuman: number): Observable<ArrayBuffer> {\r\n return this.http.get(this.baseRoute + idHuman + '/avatar', { responseType: 'arraybuffer' });\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalStorageService {\r\n\r\n constructor() { }\r\n\r\n public saveData(key: string, value: string) {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n public getData(key: string) {\r\n return localStorage.getItem(key)\r\n }\r\n public removeData(key: string) {\r\n localStorage.removeItem(key);\r\n }\r\n\r\n public clearData() {\r\n localStorage.clear();\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n // Экспорт в CSV\r\n exportCSV(data: any, filename = 'data', arrHeader: any, newHeaders: any) {\r\n const csvData = this.convertToCSV(data, arrHeader, newHeaders);\r\n console.log(csvData);\r\n const blob = new Blob(['\\ufeff' + csvData], { type: 'text/csv;charset=utf-8;' });\r\n const dwldLink = document.createElement('a');\r\n const url = URL.createObjectURL(blob);\r\n const isSafariBrowser = navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1;\r\n if (isSafariBrowser) { //if Safari open in new window to save file with random filename.\r\n dwldLink.setAttribute('target', '_blank');\r\n }\r\n dwldLink.setAttribute('href', url);\r\n dwldLink.setAttribute('download', filename + '.csv');\r\n dwldLink.style.visibility = 'hidden';\r\n document.body.appendChild(dwldLink);\r\n dwldLink.click();\r\n document.body.removeChild(dwldLink);\r\n }\r\n\r\n convertToCSV(objArray: any, headerList: any, newHeaders: any) {\r\n const array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;\r\n let str = '';\r\n let row = 'S.No,';\r\n for (const index in newHeaders) {\r\n if (Object.prototype.hasOwnProperty.call(newHeaders, index)) {\r\n row += newHeaders[index] + ',';\r\n }\r\n }\r\n row = row.slice(0, -1);\r\n str += row + '\\r\\n';\r\n for (let i = 0; i < array.length; i++) {\r\n let line = (i + 1) + '';\r\n for (const index in headerList) {\r\n if (Object.prototype.hasOwnProperty.call(newHeaders, index)) {\r\n const head = headerList[index];\r\n line += ',' + array[i][head];\r\n }\r\n }\r\n str += line + '\\r\\n';\r\n }\r\n return str;\r\n }\r\n\r\n // Экспорт в Excel\r\n exportExcel(data: any, heading: any, sheetName = 'sheet1', filename = 'data') {\r\n const wb = XLSX.utils.book_new();\r\n const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet([]);\r\n XLSX.utils.sheet_add_aoa(ws, heading);\r\n XLSX.utils.sheet_add_json(ws, data, { origin: 'A2', skipHeader: true });\r\n XLSX.utils.book_append_sheet(wb, ws, sheetName);\r\n XLSX.writeFile(wb, filename + '.xlsx');\r\n }\r\n\r\n}\r\n","import { Directive, inject, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { MatDialogRef } from \"@angular/material/dialog\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { Action, IEditDialogData } from \"./base-edit-dialog-data\";\r\nimport { LoaderService } from \"../../loader\";\r\nimport { AlertService } from \"../../services\";\r\n\r\n\r\n@Directive()\r\nexport abstract class BaseEditClass<T> implements OnDestroy {\r\n\r\n /** Заголовок. */\r\n public abstract title: string;\r\n /** Данные диалога. */\r\n protected abstract dialogData?: IEditDialogData<T>;\r\n /** Форма. */\r\n public abstract form?: FormGroup;\r\n /** Ссылка на диалог. */\r\n protected abstract dialogRef?: MatDialogRef<any, IEditDialogData<T> | null>;\r\n /** Сервис индиатор загрузки. */\r\n protected loaderService = inject(LoaderService);\r\n /** Сервис уведослений. */\r\n protected alertService = inject(AlertService);\r\n\r\n /** Объект для отписки (вызывается метод unsubscribe при уничтожннии компонента). */\r\n protected subscription = new Subscription();\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onNoClick(event: MouseEvent): void {\r\n this.dialogRef?.close(null);\r\n event.preventDefault(); // иначе сработает onSubmit\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.form) {\r\n if (this.form.valid) {\r\n if (this.dialogData)\r\n Object.keys(this.form.controls).forEach(controlName => this.dialogData!.entity[controlName as keyof T] = this.form?.controls[controlName].value);\r\n this.dialogRef?.close(this.dialogData);\r\n } else {\r\n Object.keys(this.form.controls).forEach(controlName => this.form?.controls[controlName].markAsTouched());\r\n }\r\n }\r\n }\r\n\r\n formActionIsAdd(): boolean {\r\n return this.dialogData?.action === Action.Add;\r\n }\r\n\r\n formActionIsEdit(): boolean {\r\n return this.dialogData?.action === Action.Edit;\r\n }\r\n}","export interface IEntityAction<T> {\r\n action: EntityAction;\r\n entity: T;\r\n}\r\n\r\nexport enum EntityAction {\r\n Init = 'Инициализация',\r\n Add = 'Добавление',\r\n Edit = 'Изменение',\r\n Delete = 'Удаление'\r\n}\r\n","import { Directive, inject, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LoaderService } from '../../loader';\r\nimport { AlertService, LocalStorageService } from '../../services';\r\n\r\n@Directive()\r\nexport class BaseFilterClass implements OnDestroy {\r\n\r\n /** Сервис для работы с LocalStorage. */\r\n protected localStorageService = inject(LocalStorageService);\r\n /** Сервис индиатор загрузки. */\r\n protected loaderService = inject(LoaderService);\r\n /** Сервис уведомлений. */\r\n protected alertService = inject(AlertService);\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultDebounceTime = 500;\r\n /** Объект для отписки (вызывается метод unsubscribe при уничтожннии компонента). */\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","import { Directive, inject, OnDestroy } from \"@angular/core\";\r\nimport { MatMenuTrigger } from \"@angular/material/menu\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Directive()\r\nexport class BaseNavBarMenuClass implements OnDestroy {\r\n\r\n protected subscription = new Subscription();\r\n\r\n protected router = inject(Router);\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /** Нажата средняя кнопка (открыть ссылку в новой вкладке). */\r\n onMiddleClick(event: MouseEvent, baseUrl: string, menu: MatMenuTrigger) {\r\n // 1 -\tAuxiliary button pressed (usually the middle button)\r\n if (event.button === 1) {\r\n // event.preventDefault();\r\n menu.closeMenu();\r\n const urlTree = this.router.serializeUrl(\r\n this.router.createUrlTree([baseUrl]\r\n )\r\n );\r\n window.open(urlTree, '_blank');\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnimationsService {\r\n private static routeAnimationType: RouteAnimationType = 'ALL';\r\n\r\n constructor() {\r\n AnimationsService.routeAnimationType = 'ALL';\r\n }\r\n\r\n static isRouteAnimationsType(type: RouteAnimationType) {\r\n // console.log('isRouteAnimationsType ', AnimationsService.routeAnimationType, type, AnimationsService.routeAnimationType === type);\r\n return AnimationsService.routeAnimationType === type;\r\n }\r\n\r\n updateRouteAnimationType(\r\n pageAnimations: boolean,\r\n elementsAnimations: boolean\r\n ) {\r\n AnimationsService.routeAnimationType =\r\n pageAnimations && elementsAnimations\r\n ? 'ALL'\r\n : pageAnimations\r\n ? 'PAGE'\r\n : elementsAnimations\r\n ? 'ELEMENTS'\r\n : 'NONE';\r\n }\r\n}\r\n\r\nexport type RouteAnimationType = 'ALL' | 'PAGE' | 'ELEMENTS' | 'NONE';\r\n","import {\r\n animate,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n stagger,\r\n sequence\r\n} from '@angular/animations';\r\nimport { AnimationsService } from './animations.service';\r\n\r\nexport const ROUTE_ANIMATIONS_ELEMENTS = 'route-animations-elements';\r\n\r\nconst STEPS_ALL: any[] = [\r\n // PAGE\r\n query(':enter > *', style({ opacity: 0, position: 'fixed' }), {\r\n optional: true\r\n }),\r\n // ELEMENTS\r\n query(':enter .' + ROUTE_ANIMATIONS_ELEMENTS, style({ opacity: 0 }), {\r\n optional: true\r\n }),\r\n // PAGE\r\n sequence([\r\n query(\r\n ':leave > *',\r\n [\r\n style({ transform: 'translateY(0%)', opacity: 1 }),\r\n animate(\r\n '0.2s ease-in-out',\r\n style({ transform: 'translateY(-3%)', opacity: 0 })\r\n ),\r\n style({ position: 'fixed' })\r\n ],\r\n { optional: true }\r\n ),\r\n query(\r\n ':enter > *',\r\n [\r\n style({\r\n transform: 'translateY(-3%)',\r\n opacity: 0,\r\n position: 'static'\r\n }),\r\n animate(\r\n '0.5s ease-in-out',\r\n style({ transform: 'translateY(0%)', opacity: 1 })\r\n )\r\n ],\r\n { optional: true }\r\n )\r\n ]),\r\n // ELEMENTS\r\n query(\r\n ':enter .' + ROUTE_ANIMATIONS_ELEMENTS,\r\n // eslint-disable-next-line no-magic-numbers\r\n stagger(75, [\r\n style({ transform: 'translateY(10%)', opacity: 0 }),\r\n animate(\r\n '0.5s ease-in-out',\r\n style({ transform: 'translateY(0%)', opacity: 1 })\r\n )\r\n ]),\r\n { optional: true }\r\n )\r\n];\r\nconst STEPS_NONE: any[] = [];\r\nconst STEPS_PAGE = [STEPS_ALL[0], STEPS_ALL[2]];\r\nconst STEPS_ELEMENTS = [STEPS_ALL[1], STEPS_ALL[3]];\r\n\r\nexport const isRouteAnimationsAll = () => AnimationsService.isRouteAnimationsType('ALL');\r\nexport const isRouteAnimationsNone = () => AnimationsService.isRouteAnimationsType('NONE');\r\nexport const isRouteAnimationsPage = () => AnimationsService.isRouteAnimationsType('PAGE');\r\nexport const isRouteAnimationsElements = () => AnimationsService.isRouteAnimationsType('ELEMENTS');\r\n\r\nexport const routeAnimations = trigger('routeAnimations', [\r\n transition(isRouteAnimationsAll, STEPS_ALL),\r\n transition(isRouteAnimationsNone, STEPS_NONE),\r\n transition(isRouteAnimationsPage, STEPS_PAGE),\r\n transition(isRouteAnimationsElements, STEPS_ELEMENTS)\r\n]);\r\n","import { Component, inject } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\n\r\nimport { DialogData } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.css'],\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButton, MatDialogClose]\r\n})\r\nexport class DialogComponent {\r\n\r\n readonly data = inject<DialogData>(MAT_DIALOG_DATA);\r\n readonly dialogRef = inject(MatDialogRef<DialogComponent>);\r\n\r\n constructor() {\r\n if (!this.data.title) {\r\n this.data.title = 'Подтверждение';\r\n }\r\n if (!this.data.btnNoTitle) {\r\n this.data.btnNoTitle = 'Нет';\r\n }\r\n if (!this.data.btnYesTitle) {\r\n this.data.btnYesTitle = 'Да';\r\n }\r\n }\r\n\r\n onNoClick(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>\n <div style=\"white-space: pre-line\">{{ data.message }}</div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-raised-button (click)=\"onNoClick()\" cdkFocusInitial>{{ data.btnNoTitle }}</button>\n <button mat-raised-button color=\"warn\" [mat-dialog-close]=\"data.id\">{{ data.btnYesTitle }}</button>\n</div>\n\n","import { Directive, OnDestroy, inject, signal } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { Router } from '@angular/router';\r\nimport { ObservableInput, Subject, Subscription, forkJoin } from 'rxjs';\r\n\r\nimport { ROUTE_ANIMATIONS_ELEMENTS } from '../../core';\r\nimport { LoaderService } from '../../loader';\r\nimport { AlertService } from '../../services';\r\nimport { LocalStorageService } from '../../services/local-storage-service';\r\nimport { DialogComponent } from '../../shared/dialog/dialog.component';\r\nimport { IContextMenuOptions, IPageState, ISortState, ITableState } from '../../shared/table';\r\nimport { ObjectKeys, SortDirection, fnCbType, fnType } from '../../types/types';\r\nimport { Action, IEditDialogData } from './base-edit-dialog-data';\r\n\r\n@Directive()\r\nexport class BasePageClass<T> implements OnDestroy {\r\n\r\n routeAnimationsElements = ROUTE_ANIMATIONS_ELEMENTS;\r\n\r\n /** Данные для табличного компонента. */\r\n data = signal<T[]>([]);\r\n /** Количество записей по фильтру. */\r\n length = signal<number>(0);\r\n\r\n entityService: any;\r\n entityType: any;\r\n entityEditComponent: any;\r\n extraData?: any;\r\n\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultPageIndex = 0;\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultPageSize = 10;\r\n\r\n dialog?: MatDialog;\r\n dialogEditWidth = 'auto';\r\n dialogRemoveWidth = '400px';\r\n\r\n routeAddress: string = '';\r\n\r\n /** Сообщение при удалении записе(й). */\r\n removalMessage: string = '';\r\n /** Заголовок страницы. */\r\n pageTitle: string = '';\r\n\r\n /**\r\n * Создание записи: вызывается перед окрытием диалога.\r\n */\r\n beforeOpenDialogOnNewEvent: fnType<T>;\r\n /**\r\n * Редактирование записи: вызывается перед окрытием диалога.\r\n */\r\n beforeOpenDialogOnEditEvent: fnType<T>;\r\n /**\r\n * Создание записи: вызывается перед сохранением объекта.\r\n */\r\n beforeSaveOnNewEvent: fnType<T>;\r\n /**\r\n * Редактирование записи: вызывается перед сохранением объекта.\r\n */\r\n beforeSaveOnEditEvent: fnType<T>;\r\n /**\r\n * Создание записи: вызывается после сохранения объекта.\r\n */\r\n afterSaveOnNewEvent: fnCbType<T>;\r\n /**\r\n * Редактирование записи: вызывается после сохранения объекта.\r\n */\r\n afterSaveOnEditEvent: fnCbType<T>;\r\n\r\n editorRoles: string[] = [];\r\n executeRoles: string[] = [];\r\n /** Список ролей, для которых скрыть элемент. */\r\n hideRoles: string[] = ['HIDE'];\r\n\r\n /** Загрузка данных. */\r\n loadData$: Subject<null> = new Subject<null>();\r\n /** Загрузка количества записей. */\r\n loadLength$: Subject<null> = new Subject<null>();\r\n /** Очистка фильтра. */\r\n clearFilter$: Subject<null> = new Subject<null>();\r\n\r\n /** Очистка фильтра (для очистки присвоить пустой объект '{}'). */\r\n clearFilter: any = null;\r\n\r\n /** Разрешен выбор нескольких строк. */\r\n allowMultiSelect = false;\r\n /** Выбранные строки в таблице. */\r\n selected: T[] = [];\r\n\r\n /** Состояние сортировки, пагинации. */\r\n tableState: ITableState;\r\n\r\n /** Доступность кнопки \"Изменить\". */\r\n editBtnDisabled = true;\r\n /** Доступность кнопки \"Удалить\". */\r\n removeBtnDisabled = true;\r\n\r\n /** Разрешено ли отправлять событие rowDoubleClicked при двойном щелчке мышью. */\r\n dblClickedEventEnable = true;\r\n\r\n // Список элементов контекстного меню.\r\n opt: IContextMenuOptions<T>[] = [];\r\n\r\n // DI\r\n protected router = inject(Router);\r\n /** Сервис для работы с LocalStorage. */\r\n protected localStorageService = inject(LocalStorageService);\r\n /** Сервис индиатор загрузки. */\r\n protected loaderService = inject(LoaderService);\r\n /** Сервис уведомлений. */\r\n protected alertService = inject(AlertService);\r\n /** Объект для отписки (вызывается метод unsubscribe при уничтожннии компонента). */\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n this.tableState = {\r\n sortActive: this.localStorageService.getData(this.constructor.name + 'SortActive') || '',\r\n sortDirection: (this.localStorageService.getData(this.constructor.name + 'SortDirection') || '') as SortDirection,\r\n pageIndex: Number(this.localStorageService.getData(this.constructor.name + 'PageIndex')) || this.defaultPageIndex,\r\n pageSize: Number(this.localStorageService.getData(this.constructor.name + 'PageSize')) || this.defaultPageSize\r\n };\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onPageChange(pageState: IPageState) {\r\n this.tableState.pageIndex = pageState.pageIndex;\r\n this.tableState.pageSize = pageState.pageSize;\r\n this.localStorageService.saveData(this.constructor.name + 'PageIndex', pageState.pageIndex.toString());\r\n this.localStorageService.saveData(this.constructor.name + 'PageSize', pageState.pageSize.toString());\r\n\r\n this.loadData$.next(null);\r\n this.loadLength$.next(null);\r\n }\r\n\r\n onSortChange(sortState: ISortState) {\r\n this.tableState.sortActive = sortState.sortActive;\r\n this.tableState.sortDirection = sortState.sortDirection;\r\n this.localStorageService.saveData(this.constructor.name + 'SortActive', sortState.sortActive);\r\n this.localStorageService.saveData(this.constructor.name + 'SortDirection', sortState.sortDirection);\r\n\r\n this.loadData$.next(null);\r\n this.loadLength$.next(null);\r\n }\r\n\r\n entityFactory(type: new () => T): T {\r\n return new type();\r\n }\r\n\r\n /** Cобытие изменение выбранных записей. */\r\n onSelectionChange(selected: T[]) {\r\n this.selected = selected;\r\n this.editBtnDisabledUpdate(this.selected);\r\n this.removeBtnDisabledUpdate(this.selected);\r\n }\r\n\r\n /** Обновление доступности кнопки \"Изменить\" - вызывается при изменении выбранных записей. */\r\n editBtnDisabledUpdate(selected: T[]) {\r\n this.editBtnDisabled = !(selected && selected.length === 1);\r\n }\r\n\r\n /** Обновление доступности кнопки \"Удалить\" - вызывается при изменении выбранных записей. */\r\n removeBtnDisabledUpdate(selected: T[]) {\r\n this.removeBtnDisabled = !(selected && selected.length > 0);\r\n }\r\n\r\n /** Cобытие двойной клик. */\r\n onRowDoubleClicked() {\r\n this.editEvent();\r\n }\r\n\r\n /** Cобытие создание. */\r\n newEvent() {\r\n if (this.entityEditComponent) {\r\n const data: IEditDialogData<T> = { action: Action.Add, entity: new this.entityType(null) };\r\n\r\n // Назначить значения полей объекта перед окрытием диалога.\r\n if (this.beforeOpenDialogOnNewEvent) {\r\n this.beforeOpenDialogOnNewEvent(data.entity, data.extraData);\r\n }\r\n\r\n // Открытие окна\r\n const dialogRef = this.openDialog(this.entityEditComponent, data, this.dialog);\r\n\r\n // Обработка закрытия окна\r\n const subs = dialogRef.afterClosed().subscribe((result: IEditDialogData<T>) => {\r\n // Проверка результата\r\n if (result && result.entity && (Object.keys(result.entity).length !== 0)) {\r\n // Дополнительные действия перед сохранением объекта.\r\n if (this.beforeSaveOnNewEvent)\r\n this.beforeSaveOnNewEvent(result.entity, result.extraData);\r\n\r\n const subs = this.entityService.newObject(result.entity)\r\n .subscribe({\r\n next: (obj: any) => {\r\n // Дополнительные действия после сохранения объекта.\r\n if (this.afterSaveOnNewEvent) {\r\n const callback = () => {\r\n this.refreshEvent();\r\n this.alertService.success('Запись добавлена.');\r\n }\r\n this.afterSaveOnNewEvent(callback.bind(this), obj, result.extraData);\r\n } else {\r\n this.refreshEvent();\r\n this.alertService.success('Запись добавлена.');\r\n }\r\n },\r\n error: (error: any) => {\r\n console.log('error', error);\r\n this.alertService.error('Произошла ошибка при добавлении записи: ' + error, 0);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n\r\n // Закрытие окна по нажатию Escape\r\n const subs2 = dialogRef.keydownEvents().subscribe((event: any) => {\r\n if (event.key === 'Escape') {\r\n dialogRef.close(null);\r\n }\r\n });\r\n this.subscription.add(subs2);\r\n } else {\r\n this.alertService.warning('Действие не доступно.');\r\n }\r\n }\r\n\r\n /** Cобытие редактирование. */\r\n editEvent() {\r\n if (this.selected && this.selected.length === 1) {\r\n if (this.entityEditComponent) {\r\n const data: IEditDialogData<T> = { action: Action.Edit, entity: this.selected[0] };\r\n\r\n // Назначить значения полей объекта перед окрытием диалога.\r\n if (this.beforeOpenDialogOnEditEvent) {\r\n this.beforeOpenDialogOnEditEvent(data.entity, data.extraData);\r\n }\r\n\r\n // Открытие окна\r\n const dialogRef = this.openDialog(this.entityEditComponent, data, this.dialog);\r\n\r\n // Обработка закрытия окна\r\n const subs = dialogRef.afterClosed().subscribe((result: IEditDialogData<T>) => {\r\n // Проверка результата\r\n if (result && result.entity && (Object.keys(result.entity).length !== 0)) {\r\n // Дополнительные действия перед сохранением объекта.\r\n if (this.beforeSaveOnEditEvent)\r\n this.beforeSaveOnEditEvent(result.entity, result.extraData);\r\n\r\n const subs = this.entityService.editObject(result.entity)\r\n .subscribe({\r\n next: () => {\r\n // Дополнительные действия после сохранения объекта.\r\n if (this.afterSaveOnEditEvent) {\r\n const callback = () => {\r\n this.refreshEvent();\r\n this.alertService.success('Запись изменена.');\r\n }\r\n this.afterSaveOnEditEvent(callback.bind(this), result.entity, result.extraData);\r\n } else {\r\n this.refreshEvent();\r\n this.alertService.success('Запись изменена.');\r\n }\r\n },\r\n error: (error: any) => {\r\n console.log('error', error);\r\n this.alertService.error('Произошла ошибка при изменении записи: ' + error, 0);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n\r\n // Закрытие окна по нажатию Escape\r\n const subs2 = dialogRef.keydownEvents().subscribe((event: any) => {\r\n if (event.key === 'Escape') {\r\n dialogRef.close(null);\r\n }\r\n });\r\n this.subscription.add(subs2);\r\n } else {\r\n this.alertService.warning('Действие не доступно.');\r\n }\r\n }\r\n }\r\n\r\n\r\n /** Cобытие удаление. */\r\n removeEvent() {\r\n // если вырбана запись(и)\r\n if (this.selected && this.selected.length > 0) {\r\n const dialogRef = this.openDialogRemoveConfirm(this.removalMessage);\r\n if (dialogRef) {\r\n const subs = dialogRef.afterClosed().subscribe((result: any) => {\r\n // при подтверждении возвращается 'delete'\r\n if (result === 'delete') {\r\n // готовим объект с запросами на удаление\r\n type tplotOptions = {\r\n [key: string]: ObservableInput<T>\r\n }\r\n const sourcesObject: ObjectKeys = {};\r\n this.selected.forEach((item, index) => sourcesObject['obj' + index] = this.entityService.deleteObject(item));\r\n // ждем, когда выполнятся все запросы\r\n const subs = forkJoin(sourcesObject)\r\n .subscribe({\r\n next: () => {\r\n this.refreshEvent();\r\n this.alertService.success('Выбранные записи удалены.');\r\n },\r\n error: (error: any) => {\r\n console.log('error', error);\r\n this.alertService.error('Произошла ошибка при удалении записи: ' + error, 0);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n\r\n // Закрытие окна по нажатию Escape\r\n const subs2 = dialogRef.keydownEvents().subscribe((event: any) => {\r\n if (event.key === 'Escape') {\r\n dialogRef.close(null);\r\n }\r\n });\r\n this.subscription.add(subs2);\r\n }\r\n }\r\n }\r\n\r\n /** Событие обновления данных. */\r\n refreshEvent() {\r\n this.loadData$.next(null);\r\n this.loadLength$.next(null);\r\n }\r\n\r\n /** Cобытие очистки фильтра. */\r\n clearEvent() {\r\n this.clearFilter$.next(null);\r\n this.clearFilter = {};\r\n }\r\n\r\n /** Изменение сообщения об удалении. */\r\n onRemovalMessageChange(message: string) {\r\n this.removalMessage = message;\r\n }\r\n\r\n /** Изменение заголовка страницы. */\r\n onPageTitleChange(title: string) {\r\n this.pageTitle = title;\r\n }\r\n\r\n openDialog(entityComponent: any, data: IEditDialogData<T>, dialog: any) {\r\n // create dialog config\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.width = this.dialogEditWidth;\r\n dialogConfig.data = data;\r\n dialogConfig.panelClass = this.entityType.name + '-edit-dialog';\r\n // return dialog\r\n return dialog.open(entityComponent, dialogConfig);\r\n }\r\n\r\n openDialogRemoveConfirm(removalMessage: string): MatDialogRef<DialogComponent> | undefined {\r\n let message = 'Вы хотите удалить ';\r\n message += removalMessage ?\r\n removalMessage :\r\n this.allowMultiSelect ? `выбранные записи (${this.selected.length})?` : 'выбранную запись?';\r\n return this.dialog?.open(DialogComponent, {\r\n width: this.dialogRemoveWidth,\r\n data: {\r\n id: 'delete',\r\n title: 'Подтверждение',\r\n message: message,\r\n btnNoTitle: 'Отмена',\r\n btnYesTitle: 'Удалить'\r\n }\r\n });\r\n }\r\n\r\n // contextMenu: Документы потока (в новой вкладке).\r\n protected onMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string) {\r\n return ($event: MouseEvent, item: T, contextMenu: MatMenuTrigger) => {\r\n // Нажата средняя кнопка (в новой вкладке).\r\n // 1 -\tAuxiliary button pressed (usually the middle button)\r\n if ($event.button === 1) {\r\n //$event.preventDefault();\r\n contextMenu.closeMenu();\r\n // Converts the route into a string that can be used\r\n // with the window.open() function\r\n const url = this.router.serializeUrl(\r\n queryParamName && queryParamValue ?\r\n this.router.createUrlTree([baseUrl], { queryParams: { [queryParamName]: item[queryParamValue as keyof T] } })\r\n : this.router.createUrlTree([baseUrl])\r\n );\r\n window.open(url, '_blank');\r\n }\r\n };\r\n }\r\n\r\n protected dateToString(date: string | number | Date) {\r\n return date ? (new Date(date)).toLocaleString('ru-RU', { timeZone: 'Europe/Samara' }) : null; // MSK+01\r\n }\r\n\r\n}\r\n\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseClass } from './base-class';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport abstract class BaseServiceClass<T extends BaseClass> {\r\n abstract baseRoute: string;\r\n abstract entityType: any;\r\n\r\n protected countRoute = 'count';\r\n\r\n protected pageIndexParam = 'page';\r\n protected pageSizeParam = 'limit';\r\n protected sortColumnParam = 'column';\r\n protected directionParam = 'direction';\r\n\r\n protected http = inject(HttpClient);\r\n\r\n getObjects(): Observable<T[]> {\r\n return this.http.get<T[]>(this.baseRoute)\r\n .pipe(map(data => data.map(item => new this.entityType(item).deserialize(item))));\r\n }\r\n\r\n getObject(id: number): any {\r\n return this.http.get<T>(this.baseRoute + id)\r\n .pipe(map(data => new this.entityType(data).deserialize(data)));\r\n }\r\n\r\n getCount(): Observable<number> {\r\n return this.http.get<number>(this.baseRoute + this.countRoute);\r\n }\r\n\r\n getObjectsByPaging(pageIndex: number, pageSize: number, sortColumn: string, direction: string): Observable<T[]> {\r\n const params = this.getParams(pageIndex, pageSize, sortColumn, direction);\r\n return this.http.get<T[]>(this.baseRoute, { params })\r\n .pipe(map(data => data.map(item => new this.entityType(item).deserialize(item))));\r\n }\r\n\r\n newObject(entity: T): any {\r\n return this.http.post(this.baseRoute, entity);\r\n }\r\n\r\n editObject(entity: T): any {\r\n return this.http.put(this.baseRoute + entity.id, entity);\r\n }\r\n\r\n deleteObject(entity: T): any {\r\n return this.http.delete(this.baseRoute + entity.id);\r\n }\r\n\r\n protected getParams(pageIndex: number, pageSize: number, sortColumn: string, direction: string): HttpParams {\r\n let params = new HttpParams();\r\n if (pageIndex)\r\n params = params.append(this.pageIndexParam, pageIndex);\r\n if (pageSize)\r\n params = params.append(this.pageSizeParam, pageSize);\r\n if (sortColumn)\r\n params = params.append(this.sortColumnParam, sortColumn);\r\n if (direction)\r\n params = params.append(this.directionParam, direction);\r\n return params;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RedirectGuard {\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n console.log(route.data['externalUrl']);\r\n\r\n window.location.href = route.data['externalUrl'];\r\n return true;\r\n }\r\n}\r\n","import { Deserializable } from './deserializable.model';\r\nimport { SecUserView } from './sec-user-view.model';\r\n\r\nexport class SecUser implements Deserializable {\r\n id: number = 0;\r\n login: string = '';\r\n fio: string = '';\r\n dept: number = 0;\r\n tabnum: number = 0;\r\n userView: SecUserView | undefined;\r\n\r\n public constructor(init: SecUser) {\r\n if (init) {\r\n Object.assign(this, init);\r\n } else {\r\n this.id = 0;\r\n this.login = '';\r\n this.dept = 0;\r\n this.tabnum = 0;\r\n this.fio = '';\r\n }\r\n }\r\n\r\n deserialize(input: any): this {\r\n Object.assign(this, input);\r\n return this;\r\n }\r\n}\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safe'\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n\r\n private readonly sanitizer = inject(DomSanitizer);\r\n\r\n transform(url: string) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'time'\n})\nexport class TimePipe implements PipeTransform {\n\n transform(value: number): string {\n // const hour = Math.abs(value) >= 60 ? Math.round(value / 60) + 'ч.' : '';\n // const minute = ' ' + Math.abs(value % 60) + 'м.';\n // return value === 0 ? '0' : hour + ' ' + minute;\n\n const hour = Math.abs(value) >= 60 ? Math.floor(Math.abs(value) / 60).toString().padStart(2,'0') : '00';\n const minute = Math.abs(value % 60).toString().padStart(2,'0');\n const time = hour + ':' + minute;\n return value < 0 ? '-' + time : time;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate'\n})\nexport class TruncatePipe implements PipeTransform {\n // Usage:\n // {{ str | truncate:[20] }} // or\n // {{ str | truncate:[20, '...'] }} // or|\n transform(value: string, args: any[]): string {\n const limit = args.length > 0 ? parseInt(args[0], 10) : 20;\n const trail = args.length > 1 ? args[1] : '...';\n return value.length > limit ? value.substring(0, limit) + trail : value;\n }\n\n}\n","import { COMMA, ENTER } from \"@angular/cdk/keycodes\";\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { Component, effect, ElementRef, input, output, viewChild } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent, MatOption } from \"@angular/material/autocomplete\";\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { Observable, startWith } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { ChipItem } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-chip-input-autocomplete',\r\n templateUrl: './chip-input-autocomplete.component.html',\r\n styleUrl: './chip-input-autocomplete.component.css',\r\n imports: [MatFormField, AsyncPipe, FormsModule, ReactiveFormsModule, MatAutocompleteModule, MatIcon, MatOption,\r\n MatChipsModule, MatLabel]\r\n})\r\nexport class BaseMatChipComponent {\r\n\r\n // Все элементы\r\n items = input<ChipItem[]>([]);\r\n // Выбранные элементы, ключи (ChipItem.value)\r\n selectedItemsInput = input<string[]>([]);\r\n // Заголовок\r\n title = input<string>('');\r\n // Событие изменения выбранных элементов\r\n selectedItemsChange = output<string[]>();\r\n\r\n readonly input = viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n inputCtrl = new FormControl();\r\n filteredItems$?: Observable<ChipItem[]>;\r\n selectedItems: ChipItem[] = [];\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.items().length > 0) {\r\n this.filteredItems$ = this.inputCtrl.valueChanges.pipe(\r\n startWith(null),\r\n map(item => (item ? this._filter(item) : this.items().slice())),\r\n );\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (this.selectedItemsInput())\r\n this.selectedItems = this.items().filter(s => this.selectedItemsInput().includes(s.value));\r\n });\r\n }\r\n\r\n remove(value: string): void {\r\n this.selectedItems = [...this.selectedItems];\r\n const index = this.selectedItems.map(i => i.value).indexOf(value);\r\n if (index >= 0) {\r\n this.selectedItems.splice(index, 1);\r\n this.selectedItemsChange.emit(this.selectedItems.map(i => i.value));\r\n }\r\n }\r\n\r\n selected(event: MatAutocompleteSelectedEvent): void {\r\n this.selectedItems = [...this.selectedItems];\r\n const item = this.items().find(s => s.value == event.option.value)\r\n if (item) {\r\n this.selectedItems.push(item);\r\n }\r\n this.selectedItemsChange.emit(this.selectedItems.map(i => i.value));\r\n const inputValue = this.input();\n if (inputValue)\r\n inputValue.nativeElement.value = '';\r\n this.inputCtrl.setValue(null);\r\n }\r\n\r\n private _filter(value: string): ChipItem[] {\r\n const filterValue = value.toLowerCase();\r\n return this.items().filter(item => item.viewValue.toLowerCase().includes(filterValue));\r\n }\r\n\r\n onCloseClick($event: MouseEvent) {\r\n $event.stopPropagation();\r\n this.selectedItemsChange.emit([]);\r\n }\r\n}\r\n","<mat-form-field class=\"chip-list\" appearance=\"fill\">\r\n <mat-label>{{ title() }}</mat-label>\r\n <mat-chip-grid #chipList aria-label=\"'Выбор '+title()\">\r\n @for (item of selectedItems; track item) {\r\n <mat-chip-row color=\"primary\"\r\n (removed)=\"remove(item.value)\">\r\n {{ item.viewValue }}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input\r\n #input\r\n [placeholder]=\"'Введите '+title()+'...'\"\r\n [formControl]=\"inputCtrl\"\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n >\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n @for (item of filteredItems$ | async; track item) {\r\n <mat-option [value]=\"item.value\"\r\n [disabled]=\"selectedItemsInput()?.includes(item.value)\">\r\n {{ item.viewValue }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (selectedItems.length > 0) {\r\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onCloseClick($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n</mat-form-field>\r\n","import moment from \"moment\";\r\n\r\nexport interface DateRange {\r\n begin: string;\r\n end: string;\r\n}\r\n\r\nexport function dateFormat(date: Date): string {\r\n if (date)\r\n return moment(date).format(\"YYYY-MM-DD\")\r\n else\r\n return '';\r\n}\r\n","// See the Moment.js docs for the meaning of these formats:\r\n// https://momentjs.com/docs/#/displaying/format/\r\nexport const MY_FORMATS = {\r\n parse: {\r\n dateInput: 'DD.MM.YYYY',\r\n },\r\n display: {\r\n dateInput: 'DD.MM.YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n };","import { Component, effect, input, OnDestroy, OnInit, output } from '@angular/core';\r\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatDatepickerToggle, MatDateRangeInput, MatDateRangePicker, MatEndDate, MatStartDate } from '@angular/material/datepicker';\r\nimport { MatError, MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\r\nimport 'moment/locale/ru';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { dateFormat, DateRange, MY_FORMATS } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-date-range-input',\r\n templateUrl: './date-range-input.component.html',\r\n styleUrls: ['./date-range-input.component.scss'],\r\n imports: [MatFormField, MatLabel, MatDateRangeInput, FormsModule, ReactiveFormsModule, MatStartDate, MatEndDate,\r\n MatDatepickerToggle, MatSuffix, MatDateRangePicker, MatError],\r\n providers: [\r\n { provide: MAT_DATE_LOCALE, useValue: 'ru' },\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },\r\n ]\r\n})\r\nexport class DateRangeInputComponent implements OnInit, OnDestroy {\r\n label = input<string>('');\r\n dateRange = input<DateRange>(<DateRange>{ begin: '', end: '' });\r\n // eslint-disable-next-line no-magic-numbers\r\n minDate = input<Date>(new Date(2020, 0, 1));\r\n clearInput = input<any>(null);\r\n required = input<boolean>(false);\r\n dateRangeChange = output<DateRange>();\r\n\r\n form = new FormGroup({\r\n begin: new FormControl(),\r\n end: new FormControl(),\r\n });\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.clearInput())\r\n this.form.reset();\r\n });\r\n\r\n effect(() => {\r\n const value = this.dateRange();\r\n if (this.form) {\r\n this.form.controls['begin'].setValue(value.begin ? new Date(value.begin) : null);\r\n this.form.controls['end'].setValue(value.end ? new Date(value.begin) : null);\r\n }\r\n this.dateRangeChange.emit(this.rangeToDateDateRange(this.form.value));\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.required()) {\r\n this.form.controls['begin'].addValidators(Validators.required);\r\n this.form.controls['end'].addValidators(Validators.required);\r\n }\r\n\r\n // подписка на изменение периода\r\n this.form.valueChanges\r\n .pipe(\r\n // eslint-disable-next-line no-magic-numbers\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n )\r\n .subscribe({\r\n next: range => {\r\n if (this.required()) {\r\n if (range.begin && range.end) {\r\n this.dateRangeChange.emit(this.rangeToDateDateRange(range));\r\n }\r\n } else {\r\n this.dateRangeChange.emit(this.rangeToDateDateRange(range));\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private rangeToDateDateRange(range: Partial<{ begin: Date; end: Date }>): DateRange {\r\n return {\r\n begin: range.begin ? dateFormat(range.begin) : '',\r\n end: range.end ? dateFormat(range.end) : ''\r\n };\r\n }\r\n\r\n}\r\n","<mat-form-field appearance=\"fill\">\n <mat-label>{{label()}}</mat-label>\n <mat-date-range-input\n [rangePicker]=\"picker\"\n [formGroup]=\"form\"\n [min]=\"minDate()\">\n <input matStartDate formControlName=\"begin\" placeholder=\"Дата начала\">\n <input matEndDate formControlName=\"end\" placeholder=\"Дата окончания\">\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error>Укажите период</mat-error>\n</mat-form-field>\n\n","export enum DialogAction {\r\n Add = 'Добавить',\r\n Edit = 'Изменить',\r\n Delete = 'Удалить',\r\n None = ''\r\n }","import { AsyncPipe } from '@angular/common';\r\nimport { Component, inject } from '@angular/core';\r\nimport { MatAnchor } from '@angular/material/button';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { AuthService, UserService } from '../../auth';\r\nimport { BaseNavBarMenuClass } from '../../base';\r\nimport { SafePipe } from '../../pipes';\r\nimport { AvatarService } from '../../services';\r\nimport { DialogComponent } from '../dialog';\r\n\r\n@Component({\r\n selector: 'ngx-uik-navbar',\r\n templateUrl: 'navbar.html',\r\n styleUrls: ['./navbar.scss'],\r\n imports: [MatAnchor, MatIcon, MatTooltip,\n AsyncPipe, SafePipe]\r\n})\r\nexport class NavBarComponent extends BaseNavBarMenuClass {\r\n loggedIn$: BehaviorSubject<boolean>;\r\n roles$: BehaviorSubject<string[]>;\r\n fioUser = '';\r\n photoURL: string = '';\r\n\r\n private readonly authService = inject(AuthService);\r\n private readonly userService = inject(UserService);\r\n private readonly avatarService = inject(AvatarService);\r\n private readonly dialog = inject(MatDialog);\r\n\r\n constructor() {\r\n super();\r\n this.loggedIn$ = this.authService.loggedIn$;\r\n this.roles$ = this.authService.roles$;\r\n\r\n this.fioUser = '';\r\n\r\n const subs = this.loggedIn$.subscribe({\r\n next: (value: boolean) => {\r\n if (value) {\r\n if (this.userService.userData) {\r\n if (this.userService.userData.lastName && this.userService.userData.firstName) {\r\n this.fioUser = this.userService.userData.lastName + ' ' + this.userService.userData.firstName;\r\n }\r\n if (this.userService.userData.idHuman) {\r\n // Аватар сотрудника.\r\n const subs2 = this.avatarService.getAvatarById(Number(this.userService.userData.idHuman))\r\n .subscribe((image: ArrayBuffer) => {\r\n if (image) {\r\n const blob = new Blob([image], { \"type\": \"image/jpeg\" });\r\n this.photoURL = URL.createObjectURL(blob);\r\n }\r\n });\r\n this.subscription.add(subs2);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n logout() {\r\n this.authService.logout(this.router.url);\r\n }\r\n\r\n openDialog(): void {\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n width: '400px',\r\n data: {\r\n id: 'logout',\r\n title: 'Подтверждение',\r\n message: 'Вы хотите выйти?',\r\n btnNoTitle: 'Отмена',\r\n btnYesTitle: 'Выйти'\r\n }\r\n });\r\n\r\n const subs = dialogRef.afterClosed().subscribe((id: any) => {\r\n if (id) {\r\n this.logout();\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n}\r\n","@if (loggedIn$ | async) {\r\n <nav class=\"ngx-uik-navbar-header\">\r\n \r\n <ng-content></ng-content>\r\n\r\n <div class=\"flex-spacer\"></div>\r\n \r\n @if ((loggedIn$ | async) === false || !photoURL) {\r\n <mat-icon [matTooltip]=\"(roles$ | async)?.join(',')||''\">account_circle</mat-icon>\r\n }\r\n @if ((loggedIn$ | async) && photoURL) {\r\n <img\r\n class=\"user-photo\"\r\n [src]=\"photoURL | safe\"\r\n loading=\"lazy\"\r\n [alt]=\"fioUser\"\r\n [matTooltip]=\"(roles$ | async)?.join(',')||''\">\r\n }\r\n\r\n <span class = \"user-name\" [matTooltip]=\"(roles$ | async)?.join(',') || ''\">\r\n {{ fioUser }}\r\n </span>\r\n\r\n <a mat-button class=\"pm-button\" (click)=\"openDialog()\">Выйти <mat-icon>logout</mat-icon></a>\r\n </nav>\r\n}","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ngx-uik-not-found',\r\n templateUrl: './not-found.component.html',\r\n styleUrls: ['./not-found.component.css'],\r\n standalone: true\r\n})\r\nexport class NotFoundComponent {\r\n\r\n}\r\n","<div class=\"center\">\r\n <h3 class=\"mat-display-1\">Страница не найдена</h3>\r\n</div>\r\n","import { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { Component, effect, input, linkedSignal, OnDestroy, OnInit, output } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule, MatOption } from '@angular/material/autocomplete';\r\nimport { MatError, MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith } from 'rxjs/operators';\r\n\r\nimport { SelectItem } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-select-autocomplete-with-vs',\r\n templateUrl: './select-autocomplete-with-vs.component.html',\r\n styleUrl: './select-autocomplete-with-vs.component.css',\r\n imports: [FormsModule, ReactiveFormsModule, MatAutocompleteModule, MatHint, MatError, MatOption, MatIcon,\r\n MatFormField, ScrollingModule, MatInput, MatLabel]\r\n})\r\nexport class BaseSelectAutocompleteWithVsComponent implements OnInit, OnDestroy {\r\n // https://stackblitz.com/edit/autocomplete-with-virtual-scroll-dc9u2g\r\n\r\n // Все элементы\r\n items = input<SelectItem[]>([]);\r\n // Выбранный элемент (входной параметр)\r\n selectedItemInput = input<SelectItem | undefined>(undefined);\r\n // Заголовок\r\n title = input<string>('');\r\n // Видимость\r\n isVisible = input<boolean>(true);\r\n // Обязательность\r\n isRequired = input<boolean>(false);\r\n // Доступность\r\n isDisabled = input<boolean>(false);\r\n // Доступность\r\n width = input<string>('200');\r\n\r\n // Выбранный элемент\r\n selectedItem = linkedSignal(() => this.selectedItemInput());\r\n // Событие изменения выбранного элемента\r\n selectedItemChange = output<string>();\r\n\r\n public height: string = '200px';\r\n // input элемент\r\n inputCtrl = new FormControl();\r\n // отфильтрованные (отображаемые) элементы\r\n filteredItems: SelectItem[] = [];\r\n\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n effect(() => {\r\n console.log('ITEMS =', this.items());\r\n //this.filteredItems = this.items();\r\n\r\n console.log('selectedItem =', this.selectedItemInput());\r\n if (this.items().length > 0) {\r\n console.log('filteredItems SET');\r\n this.setFileredItems(this.items());\r\n this.inputCtrl.setValue(this.selectedItemInput());\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n // Listen for changes to the input\r\n const subs = this.inputCtrl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n // eslint-disable-next-line no-magic-numbers\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n // Note: If the option value is bound to object, after selecting the option\r\n // Note: the value will change from string to {}. We want to perform search\r\n // Note: only when the type is string (no match)\r\n //filter(q => typeof q === 'string'),\r\n //tap((v) => console.log('v=', v)),\r\n map((value) => {\r\n // Filter the options\r\n console.log('typeof value =', typeof value);\r\n\r\n if (typeof value === 'undefined') {\r\n this.setFileredItems(this.items());\r\n } else {\r\n if (typeof value !== 'object') {\r\n console.log('v1=', value);\r\n this.setFileredItems(this.items()\r\n .filter(option => option.viewValue.toLowerCase().includes(value.toLowerCase())));\r\n } else {\r\n // typeof value === 'object'\r\n console.log('v2=', value);\r\n if (value) {\r\n // this.predmet = value;\r\n this.setFileredItems(this.items()\r\n .filter((option) => option.viewValue.toLowerCase().includes(value.viewValue.toLowerCase())));\r\n console.log('v3=', value);\r\n } else {\r\n this.setFileredItems(this.items());\r\n console.log('v4=', value);\r\n }\r\n }\r\n }\r\n\r\n })\r\n )\r\n .subscribe();\r\n this.subscription.add(subs);\r\n\r\n if (this.isDisabled()) {\r\n this.inputCtrl.disable();\r\n } else {\r\n this.inputCtrl.enable();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onSelectedItemChange(item: any) {\r\n console.log(\"onSelectedItemChange, item=\", item);\r\n this.selectedItem.set(item);\r\n this.selectedItemChange.emit(item);\r\n }\r\n\r\n onClearClick($event: MouseEvent) {\r\n $event.stopPropagation();\r\n this.inputCtrl.setValue('');\r\n }\r\n\r\n displayWithFn(lookup: any) {\r\n return lookup ? lookup.viewValue : null;\r\n }\r\n\r\n private setFileredItems(items: SelectItem[]) {\r\n this.filteredItems = items;\r\n // Recompute how big the viewport should be.\r\n // eslint-disable-next-line no-magic-numbers\r\n if (items.length < 4) {\r\n // eslint-disable-next-line no-magic-numbers\r\n this.height = items.length * 50 + 'px';\r\n } else {\r\n this.height = '200px';\r\n }\r\n console.log('update filteredItems =', this.filteredItems);\r\n }\r\n}\r\n","@if (isVisible()) {\r\n <mat-form-field [style.width.px]=\"width()\">\r\n <mat-label>{{ title() }}</mat-label>\r\n <input type=\"text\"\r\n [placeholder]=title()\r\n aria-label=\"Number\"\r\n matInput\r\n (ngModelChange)=\"onSelectedItemChange($event)\"\r\n [formControl]=\"inputCtrl\"\r\n [matAutocomplete]=\"auto\"\r\n [required]=\"isRequired() ? 'required' : ''\"\r\n >\r\n @if (!isDisabled && selectedItem()) {\r\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearClick($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayWithFn\" showPanel=\"true\">\r\n <cdk-virtual-scroll-viewport class=\"autocomplete-test-viewport\" [style.height]=\"height\" itemSize=\"25\">\r\n <mat-option *cdkVirtualFor=\"let option of filteredItems\" [value]=\"option\" class=\"autocomplete-item\">\r\n {{option.viewValue}}\r\n </mat-option>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n @if (inputCtrl.invalid) {\r\n <mat-error>Введите {{title()}}</mat-error>\r\n }\r\n @if (!inputCtrl.value) {\r\n <mat-hint>Начните вводить ...</mat-hint>\r\n }\r\n </mat-form-field>\r\n}","import { COMMA, ENTER } from \"@angular/cdk/keycodes\";\r\n\r\nimport { Component, effect, input, output } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatOptgroup, MatOption } from '@angular/material/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatFormField, MatLabel, MatSelect } from '@angular/material/select';\r\n\r\nimport { SelectGroup } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-select-with-group',\r\n templateUrl: './select-with-group.component.html',\r\n styleUrls: ['./select-with-group.component.css'],\r\n imports: [FormsModule, ReactiveFormsModule, MatIcon, MatOption, MatOptgroup, MatSelect, MatFormField, MatLabel]\r\n})\r\nexport class BaseSelectWithGroupComponent {\r\n\r\n // Все группы\r\n groups = input<SelectGroup[]>([]);\r\n // Выбранные элементы, ключи (BaseSelectItem.value)\r\n selectedItems = input<string[]>([]);\r\n // Заголовок\r\n title = input<string>('');\r\n // Событие изменения выбранных элементов\r\n selectedItemsChange = output<string[]>();\r\n\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n control = new FormControl<number[]>([]);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.groups().length > 0) {\r\n this.control.setValue(this.selectedItems().map(i => Number(i)));\r\n }\r\n });\r\n }\r\n\r\n selectionChange($event: any) {\r\n this.selectedItemsChange.emit($event.value.map((i: number) => i.toString()));\r\n }\r\n\r\n onClearClick($event: MouseEvent) {\r\n $event.stopPropagation();\r\n // this.control.setValue('');\r\n this.selectedItemsChange.emit([]);\r\n }\r\n}\r\n","<mat-form-field class=\"select-with-group\" appearance=\"fill\">\r\n <mat-label>{{ title() }}</mat-label>\r\n <mat-select [formControl]=\"control\" (selectionChange)=\"selectionChange($event)\" multiple>\r\n @for (group of groups(); track group) {\r\n <mat-optgroup [label]=\"group.name\">\r\n @for (item of group.items; track item) {\r\n <mat-option [value]=\"item.value\" >\r\n {{item.viewValue}}\r\n </mat-option>\r\n }\r\n </mat-optgroup>\r\n }\r\n\r\n </mat-select>\r\n @if (control.value && control.value!.length > 0) {\r\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearClick($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n</mat-form-field>\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { AfterViewInit, Component, OnDestroy, OnInit, effect, inject, input, linkedSignal, output, viewChild } from '@angular/core';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MatDivider } from '@angular/material/divider';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, MatSortHeader } from '@angular/material/sort';\r\nimport {\r\n MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef,\r\n MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef,\r\n MatTable, MatTableDataSource, MatTableModule\r\n} from '@angular/material/table';\r\nimport { RouterLink } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { AuthService } from '../../auth';\r\nimport { IColumnOptions } from './models/column-options.interface';\r\nimport { IContextMenuOptions } from './models/context-menu-options.interface';\r\nimport { IPageState, ISortState, ITableState } from './models/table-state';\r\n\r\n@Component({\r\n selector: 'ngx-uik-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.css'],\r\n imports: [MatTable, MatSort, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCheckbox, MatCellDef, MatCell,\r\n MatSortHeader, MatIcon, RouterLink, MatNoDataRow, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow,\r\n MatMenuTrigger, MatMenu, MatMenuContent, MatDivider, MatMenuItem, MatPaginator, MatFooterRowDef, MatFooterRow,\r\n MatFooterCellDef, MatFooterCell, MatTableModule]\r\n})\r\nexport class TableComponent<T> implements OnInit, AfterViewInit, OnDestroy {\r\n /** Отображаемые данные. */\r\n data = input<T[]>([]);\r\n /** Количество записей. */\r\n length = input<number>(0);\r\n /** Настройки колонок. */\r\n columnOptions = input<IColumnOptions[]>([]);\r\n /** Состояние сортировки, пагинации. */\r\n tableState = input.required<ITableState>();\r\n /** Разрешен выбор нескольких строк. */\r\n allowMultiSelect = input<boolean>(false);\r\n /** Список элементов контекстного меню. */\r\n opt = input<IContextMenuOptions<T>[]>([]);\r\n /** Роли которым разрешено отправлять событие rowDoubleClicked при двойном щелчке мышью. */\r\n rolesDblClickedEvent = input<string[]>([]);\r\n /** Отображать строку с итогом. */\r\n footer = input<boolean>(false);\r\n\r\n /** Изменение страницы. */\r\n pageStateChange = output<IPageState>();\r\n /** Изменение сортировки. */\r\n sortStateChange = output<ISortState>();\r\n /** Изменение выбранных записей. */\r\n selectionChange = output<T[]>();\r\n /** Двойной щелчек ЛКМ*/\r\n rowDoubleClicked = output<T>();\r\n\r\n readonly sort = viewChild(MatSort);\r\n readonly paginator = viewChild(MatPaginator);\r\n readonly contextMenu = viewChild(MatMenuTrigger);\r\n\r\n pageState = linkedSignal<IPageState>(() => {\r\n return { pageIndex: this.tableState().pageIndex, pageSize: this.tableState().pageSize };\r\n });\r\n\r\n sortState = linkedSignal<ISortState>(() => {\r\n return { sortActive: this.tableState().sortActive, sortDirection: this.tableState().sortDirection };\r\n });\r\n\r\n /** Выбранная строка, для которого будет показываться меню при нажатии правой кнопки мыши. */\r\n itemForMenu?: T;\r\n /** Позиция в которой отображается контекстное меню. */\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultPageIndex = 0;\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultPageSize = 10;\r\n\r\n /** Источник данных для отображения. */\r\n dataSource = new MatTableDataSource<T>();\r\n\r\n /** Выбранные записи. */\r\n selection: SelectionModel<T> = new SelectionModel<T>();\r\n\r\n /** Список отображаемых колонок (формируется из @columnOptions). */\r\n displayedColumns?: string[];\r\n\r\n // DI\r\n protected authService = inject(AuthService);\r\n\r\n // Разрешено ли отправлять событие rowDoubleClicked при двойном щелчке мышью.\r\n dblClickedEventEnable = true;\r\n\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n effect(() => {\r\n this.dataSource.data = this.data();\r\n\r\n // сохранить выделенные строки, если они все еще есть в данных\r\n const selected = this.selection.selected;\r\n this.selection.clear();\r\n this.data().filter(v => selected.map(s => JSON.stringify(s)).includes(JSON.stringify(v))).map(d => {\r\n this.selection.select(d);\r\n });\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n // получить права пользователя\r\n const subs = this.authService.roles$.subscribe((userRoles) => {\r\n this.dblClickedEventEnable = !this.authService.isHideElement(this.rolesDblClickedEvent(), userRoles);\r\n });\r\n this.subscription.add(subs);\r\n\r\n this.displayedColumns = ['select'].concat(this.columnOptions()?.filter(c => !c.hide).map((item) => item.name) || []);\r\n\r\n // пересоздаем, т.к. параметр allowMultiSelect появляется только сейчас\r\n this.selection = new SelectionModel<T>(this.allowMultiSelect());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n // подписи элементов управления пагинатора (MatPaginatorIntl)\r\n const paginator = this.paginator();\n if (paginator) {\r\n paginator._intl.itemsPerPageLabel = 'Записей на странице';\r\n paginator._intl.firstPageLabel = 'Первая страница';\r\n paginator._intl.previousPageLabel = 'Предыдущая страница';\r\n paginator._intl.nextPageLabel = 'Следующая страница';\r\n paginator._intl.lastPageLabel = 'Последняя страница';\r\n\r\n // изменение пагинации\r\n const subs = paginator.page.subscribe(page => {\r\n const pageState = {\r\n pageIndex: page.pageIndex,\r\n pageSize: page.pageSize\r\n } as IPageState;\r\n this.pageState.set(pageState);\r\n this.pageStateChange.emit(pageState);\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n // изменение сортировки\r\n const sortValue = this.sort();\n if (sortValue) {\r\n const subs = sortValue.sortChange\r\n .subscribe(sort => {\r\n const sortState = {\r\n sortActive: sort.active,\r\n sortDirection: sort.direction\r\n } as ISortState;\r\n this.sortState.set(sortState);\r\n this.sortStateChange.emit(sortState);\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n // изменение выбранных записей\r\n if (this.selection) {\r\n const subs = this.selection.changed.subscribe(change => {\r\n this.selectionChange.emit(change.source.selected);\r\n });\r\n this.subscription.add(subs);\r\n }\r\n }\r\n\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n console.log(this.selection.isMultipleSelection());\r\n if (this.isAllSelected()) {\r\n this.selection.clear();\r\n } else {\r\n this.dataSource.data.forEach(row => this.selection.select(row));\r\n }\r\n }\r\n\r\n /** При щелчке по строке. */\r\n onRowClicked(row: T) {\r\n // выделение строки при щелчке по строке\r\n if (this.selection.isSelected(row)) {\r\n this.selection.deselect(row);\r\n } else {\r\n this.selection.select(row);\r\n }\r\n }\r\n\r\n /** При двойном щелчке по строке. */\r\n onRowDblClicked(row: T) {\r\n // выделение строки при двойном щелчке по строке\r\n this.selection.clear();\r\n this.selection.select(row);\r\n if (this.dblClickedEventEnable)\r\n this.rowDoubleClicked.emit(row);\r\n }\r\n\r\n /** При вызове контекстного меню. */\r\n onContextMenu(event: MouseEvent, itemForMenu: T | undefined) {\r\n if (this.opt() && this.opt().length === 0) {\r\n // если нет пунктов меню, то не показываем меню\r\n return;\r\n }\r\n event.preventDefault();\r\n this.itemForMenu = itemForMenu;\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n // как это (menuData) использовать в шаблоне не понятно, поэтому использую this.itemForMenu\r\n // https://www.concretepage.com/angular-material/passing-data-to-mat-menu-angular-material\r\n const contextMenu = this.contextMenu();\n if (contextMenu) {\r\n contextMenu.menuData = { itemForMenu };\r\n contextMenu.menu?.focusFirstItem('mouse');\r\n contextMenu.openMenu();\r\n }\r\n }\r\n\r\n getTotal(columnName: string) {\r\n const arr = this.dataSource.data\r\n .filter(t => typeof t[columnName as keyof T] === 'number')\r\n .map(t => t[columnName as keyof T]);\r\n if (arr.length === 0)\r\n return ''\r\n else\r\n return arr.reduce((acc, value) => acc + <number>value, 0);\r\n }\r\n}\r\n","<div class=\"component-container\">\r\n <div class=\"table-container\">\r\n <table mat-table [dataSource]=\"dataSource\"\r\n matSort\r\n [matSortActive]=\"sortState().sortActive || ''\"\r\n [matSortDirection]=\"sortState().sortDirection\"\r\n matSortDisableClear>\r\n\r\n <!-- Выбор строки Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (allowMultiSelect()) {\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\">\r\n </mat-checkbox>\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n }\r\n </ng-container>\r\n\r\n @for (item of columnOptions(); track item) {\r\n <ng-container matColumnDef={{item.name}}>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [disabled]=\"item.titleSortDisable\">{{item.title}}</th>\r\n @if (!item.format) {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n {{element[item.name]}}\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footer) {\r\n <strong>{{ getTotal(item.name) }}</strong>\r\n }\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n } \r\n }\r\n @if (item.format === 'pre-wrap') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\" class=\"pre-wrap\">\r\n {{element[item.name]}}\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'link') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n <a [href]=\"element[item.name]\" target=\"_blank\">{{element[item.name]}}</a>\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'linkIcon') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n @if (element[item.name]) {\r\n <a [href]=\"element[item.name]\" target=\"_blank\">\r\n @if (item.icon) {\r\n <mat-icon>{{item.icon}}</mat-icon>\r\n } \r\n @if (item.symbol) {\r\n <span class=\"material-symbols-outlined-light\">{{item.symbol}}</span>\r\n }\r\n </a>\r\n }\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'routerLink') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n <a [routerLink]=\"[element[item.name]]\">{{element[item.name]}}</a>\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'routerLinkIcon') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n @if (element[item.name]) {\r\n <a [routerLink]=\"[element[item.name]]\">\r\n @if (item.icon) {\r\n <mat-icon>{{item.icon}}</mat-icon>\r\n } \r\n @if (item.symbol) {\r\n <span class=\"material-symbols-outlined-light\">{{item.symbol}}</span>\r\n }\r\n </a>\r\n }\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'checkbox') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n <mat-checkbox [checked]=\"element[item.name] === 1\" [disabled]=\"true\"></mat-checkbox>\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" colspan=\"9999\">\r\n Нет данных для отображения\r\n </td>\r\n </tr>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" \r\n (click)=\"onRowClicked(row)\" (dblclick)=\"onRowDblClicked(row)\" \r\n class=\"element-row\" [class.selected-row]=\"selection.isSelected(row)\">\r\n </tr>\r\n @if (footer()) {\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n }\r\n </table>\r\n <div style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\" #menuTrigger=\"matMenuTrigger\">\r\n </div>\r\n <mat-menu #contextMenu=\"matMenu\">\r\n <ng-template matMenuContent let-id=\"id\">\r\n @for (menuItem of opt(); track menuItem) {\r\n @if (menuItem.title === '-' && !(menuItem.hideFn ? menuItem.hideFn(itemForMenu) : menuItem.hide)) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (menuItem.title !== '-' && !(menuItem.hideFn ? menuItem.hideFn(itemForMenu) : menuItem.hide)) {\r\n <button mat-menu-item\r\n (click)=\"menuItem.onClickFn ? menuItem.onClickFn(itemForMenu) : ''\"\r\n (mousedown)=\"menuItem.onClickMiddleFn ? menuItem.onClickMiddleFn($event, itemForMenu, menuTrigger) : ''\"\r\n [disabled]=\"menuItem.disabledFn ? menuItem.disabledFn(itemForMenu) : menuItem.disabled\">\r\n @if (menuItem.icon) {\r\n <mat-icon>{{menuItem.icon}}</mat-icon>\r\n }\r\n @if (menuItem.symbol) {\r\n <span class=\"material-symbols-outlined-light\">{{menuItem.symbol}}</span>\r\n }\r\n {{ menuItem.title }}\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n\r\n\r\n<mat-paginator [length]=\"length()\"\r\n [pageIndex]=\"pageState().pageIndex || defaultPageIndex\"\r\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\r\n [pageSize]=\"pageState().pageSize || defaultPageSize\"\r\n showFirstLastButtons\r\n itemsPerPageLabel=\"\"\r\n></mat-paginator>\r\n</div>\r\n","/*\r\n * Public API Surface of uikit\r\n */\r\n\r\nexport * from './auth';\r\nexport * from './base';\r\nexport * from './core';\r\nexport * from './guards';\r\nexport * from './loader';\r\nexport * from './models';\r\nexport * from './pipes';\r\nexport * from './services';\r\nexport * from './shared';\r\nexport * from './types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["startWith","i4","MatOption","MatFormField","MatLabel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kuzntsv-uikit.mjs","sources":["../../../projects/uikit/src/loader/progress-spinner.component.ts","../../../projects/uikit/src/loader/loader.service.ts","../../../projects/uikit/src/services/alert.service.ts","../../../projects/uikit/src/models/environment.model.ts","../../../projects/uikit/src/services/log.service.ts","../../../projects/uikit/src/auth/services/auth-user.service.ts","../../../projects/uikit/src/auth/services/auth.service.ts","../../../projects/uikit/src/auth/components/login-form/login-form.component.ts","../../../projects/uikit/src/auth/components/login-form/login-form.component.html","../../../projects/uikit/src/auth/components/permit-form/permit-form.component.ts","../../../projects/uikit/src/auth/components/permit-form/permit-form.component.html","../../../projects/uikit/src/auth/components/login-page/login-page.component.ts","../../../projects/uikit/src/auth/components/login-page/login-page.component.html","../../../projects/uikit/src/auth/directives/disable-if-unauthorized.directive.ts","../../../projects/uikit/src/auth/directives/hide-if-unauthorized.directive.ts","../../../projects/uikit/src/auth/directives/disable-if-role.directive.ts","../../../projects/uikit/src/auth/directives/hide-if-role-not.directive.ts","../../../projects/uikit/src/auth/services/auth-guard.service.ts","../../../projects/uikit/src/auth/services/role-guard.service.ts","../../../projects/uikit/src/auth/services/auth-role.service.ts","../../../projects/uikit/src/base/base-toolbar/base-toolbar.service.ts","../../../projects/uikit/src/base/base-toolbar/components/base-toolbar.component.ts","../../../projects/uikit/src/base/base-toolbar/components/base-toolbar.component.html","../../../projects/uikit/src/base/base-classes/base-edit-dialog-data.ts","../../../projects/uikit/src/services/avatar.service.ts","../../../projects/uikit/src/services/local-storage-service.ts","../../../projects/uikit/src/services/export.service.ts","../../../projects/uikit/src/base/base-classes/base-edit-class.ts","../../../projects/uikit/src/base/base-classes/base-entity-action.ts","../../../projects/uikit/src/base/base-classes/base-filter-class.ts","../../../projects/uikit/src/base/base-classes/base-nav-bar-menu-class.ts","../../../projects/uikit/src/core/animations/animations.service.ts","../../../projects/uikit/src/core/animations/route.animations.ts","../../../projects/uikit/src/shared/dialog/dialog.component.ts","../../../projects/uikit/src/shared/dialog/dialog.component.html","../../../projects/uikit/src/base/base-classes/base-page-class.ts","../../../projects/uikit/src/base/base-classes/base-service-class.ts","../../../projects/uikit/src/guards/redirect-guard.ts","../../../projects/uikit/src/models/sec-user.model.ts","../../../projects/uikit/src/pipes/safe.pipe.ts","../../../projects/uikit/src/pipes/time.pipe.ts","../../../projects/uikit/src/pipes/truncate.pipe.ts","../../../projects/uikit/src/shared/chip-input-autocomplete/chip-input-autocomplete.component.ts","../../../projects/uikit/src/shared/chip-input-autocomplete/chip-input-autocomplete.component.html","../../../projects/uikit/src/shared/date-range-input/models/date-range.ts","../../../projects/uikit/src/shared/date-range-input/models/date-formats.ts","../../../projects/uikit/src/shared/date-range-input/date-range-input.component.ts","../../../projects/uikit/src/shared/date-range-input/date-range-input.component.html","../../../projects/uikit/src/shared/dialog/models/dialog-action.ts","../../../projects/uikit/src/shared/navbar/navbar.ts","../../../projects/uikit/src/shared/navbar/navbar.html","../../../projects/uikit/src/shared/not-found/not-found.component.ts","../../../projects/uikit/src/shared/not-found/not-found.component.html","../../../projects/uikit/src/shared/select-autocomplete-with-vs/select-autocomplete-with-vs.component.ts","../../../projects/uikit/src/shared/select-autocomplete-with-vs/select-autocomplete-with-vs.component.html","../../../projects/uikit/src/shared/select-with-group/select-with-group.component.ts","../../../projects/uikit/src/shared/select-with-group/select-with-group.component.html","../../../projects/uikit/src/shared/table/table.component.ts","../../../projects/uikit/src/shared/table/table.component.html","../../../projects/uikit/src/public-api.ts","../../../projects/uikit/src/kuzntsv-uikit.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, inject } from '@angular/core';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'ngx-uik-loader',\r\n template: `\r\n <div class=\"loading-indicator\" mat-dialog-content>\r\n <mat-progress-spinner mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n </div>\r\n `,\r\n styles: [`\r\n /* Разместить по центру */\r\n .loading-indicator {\r\n position: fixed;\r\n z-index: 999;\r\n height: 2em;\r\n width: 2em;\r\n overflow: initial;\r\n margin: auto;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n }\r\n\r\n /* Заблокировать оверлей */\r\n .loading-indicator:before {\r\n content: '';\r\n display: block;\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0,0,0,0.3);\r\n }\r\n `],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatProgressSpinner]\r\n})\r\n\r\nexport class ProgressSpinnerComponent implements AfterViewInit {\r\n\r\n private readonly cdRef = inject(ChangeDetectorRef);\r\n\r\n ngAfterViewInit() {\r\n this.cdRef.detectChanges();\r\n }\r\n}\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { inject, Injectable } from '@angular/core';\r\n\r\nimport { ProgressSpinnerComponent } from './progress-spinner.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class LoaderService {\r\n private overlayRef: OverlayRef | null = null;\r\n\r\n private readonly overlay = inject(Overlay);\r\n\r\n public show() {\r\n if (!this.overlayRef) {\r\n this.overlayRef = this.overlay.create();\r\n }\r\n const spinnerOverlayPortal = new ComponentPortal(ProgressSpinnerComponent);\r\n // Иправление ошибки Expression has changed after it was checked\r\n setTimeout(() => {\r\n if (!this.overlayRef?.hasAttached()) {\r\n this.overlayRef?.attach(spinnerOverlayPortal);\r\n }\r\n });\r\n }\r\n\r\n public hide() {\r\n if (this.overlayRef) {\r\n this.overlayRef.detach();\r\n }\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nimport { IAlertService } from '../base/interfaces';\r\n\r\n// Сервис для вывода сообщений(ошибки, успеха)\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService implements IAlertService {\r\n // eslint-disable-next-line no-magic-numbers\r\n private readonly duration = 5000;\r\n\r\n private readonly _snackBar = inject(MatSnackBar);\r\n\r\n openSnackBar(message: string, action: string, duration: number = this.duration) {\r\n this._snackBar.open(message, action, {\r\n duration,\r\n panelClass: ['red-snackbar'],\r\n });\r\n }\r\n\r\n success(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n info(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n helper(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n warning(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n error(message: string, duration: number = this.duration) {\r\n this.openSnackBar(message, 'Закрыть', duration);\r\n }\r\n\r\n}\r\n","export abstract class Environment {\r\n abstract readonly appVersion: string;\r\n abstract readonly production: boolean;\r\n abstract readonly endpoints: { [key in string]: string };\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\n\r\nimport { Environment } from '../models/environment.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LogService {\r\n public logPrefix: string = '';\r\n\r\n private readonly env = inject(Environment);\r\n\r\n log(...args: any) {\r\n if (!this.env.production) {\r\n // Prepend log prefix log string\r\n args.unshift(this.logPrefix + ' ');\r\n // Pass along arguments to console.log\r\n console.log(args.join(' '));\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\n/**\r\n * Сущность пользователя из API\r\n */\r\nexport class User {\r\n id: number = 0;\r\n username: string = '';\r\n firstName: string = '';\r\n lastName: string = '';\r\n prof: string = '';\r\n depart: number = 0;\r\n area: string = '';\r\n tabnum: string = '';\r\n mail: string = '';\r\n phone: string = '';\r\n roles: string = '';\r\n rolesArray: string[] = [];\r\n roleList: string[] = [];\r\n idHuman: string = '';\r\n token: string = '';\r\n // Время действия токена\r\n expires_in: number = 0;\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n/**\r\n * Сервис для работы с объектом в local Storage\r\n */\r\nexport class UserService {\r\n private user: User;\r\n constructor() {\r\n if (localStorage.getItem('sed_currentUser')) {\r\n this.user = JSON.parse(localStorage.getItem('sed_currentUser') || '');\r\n } else {\r\n this.user = new User();\r\n }\r\n }\r\n\r\n get dept(): number {\r\n return this.user?.depart;\r\n }\r\n\r\n /** Получить данные о пользователе */\r\n get userData(): User {\r\n return this.user;\r\n }\r\n\r\n /** Изменить данные пользователя в localStorage */\r\n set userData(user: User) {\r\n localStorage.setItem('sed_currentUser', JSON.stringify(user));\r\n this.user = JSON.parse(localStorage.getItem('sed_currentUser') || '');\r\n }\r\n\r\n /** Удаляет данные о пользователе из localStorage. */\r\n removeUser() {\r\n localStorage.removeItem('sed_currentUser');\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { DefaultUrlSerializer, Router } from '@angular/router';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nimport { AlertService } from '../../services/alert.service';\r\nimport { LogService } from '../../services/log.service';\r\nimport { AuthPermission } from '../auth.types';\r\nimport { UserService } from './auth-user.service';\r\n\r\n// Сервис авторизации\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n // Указываем какой сервер использовать\r\n baseRoute = 'mainApi/';\r\n // Хранит доступные пользователю действия\r\n permissions: string[] = ['VIEW'];\r\n readonly defaultRoles = [];\r\n // Хранит роли пользователя\r\n roles$: BehaviorSubject<string[]>;\r\n loggedIn$: BehaviorSubject<boolean>;\r\n\r\n // Роль для скрытия элементов.\r\n private readonly hideRole = 'HIDE';\r\n\r\n // Объект, хранящий статус авторизации\r\n private readonly defaultHeader = {\r\n headers: new HttpHeaders().set('content-type', 'application/x-www-form-urlencoded')\r\n };\r\n\r\n private idHuman: string | null;\r\n\r\n private readonly http = inject(HttpClient);\r\n private readonly router = inject(Router);\r\n private readonly console = inject(LogService);\r\n private readonly alertService = inject(AlertService);\r\n private readonly userService = inject(UserService);\r\n\r\n constructor() {\r\n this.console.logPrefix = 'Auth Service';\r\n this.idHuman = localStorage.getItem('id_human');\r\n if (this.userService.userData?.roleList) {\r\n this.roles$ = new BehaviorSubject<string[]>(this.userService.userData?.roleList);\r\n } else {\r\n this.roles$ = new BehaviorSubject<string[]>(this.defaultRoles);\r\n }\r\n this.loggedIn$ = new BehaviorSubject<boolean>((!!this.userService.userData && !!this.userService.userData.token));\r\n }\r\n\r\n /** Проверка разрешений */\r\n hasPermission(authPermission: AuthPermission) {\r\n return !!(this.permissions &&\r\n this.permissions.find(permission => permission === authPermission));\r\n }\r\n\r\n /** Проверка ролей */\r\n public hasRole(roles: string[], checkRole: string): boolean {\r\n if (roles) {\r\n return !!roles.find(role => (role === checkRole || role === 'ADMIN'));\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /** Проверка массива ролей */\r\n public hasRoles(roles: string[], checkRoles: string[]): boolean {\r\n if (roles) {\r\n for (const checkRole of checkRoles) {\r\n if (roles.find(role => (role === checkRole || role === 'ADMIN'))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /** Элемент скрывается, если у пользователя нет ни одной роли из перереданных в \"roles\"\r\n или в списке \"roles\" есть роль \"hideRole\". */\r\n public isHideElement(roles: string[], checkRoles: string[]): boolean {\r\n if (!roles || roles.length === 0)\r\n return false;\r\n if (roles.indexOf(this.hideRole) !== -1)\r\n return true;\r\n for (const role of roles) {\r\n if (role && (role.length !== 0) && this.hasRole(checkRoles, role)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n\r\n // /** Сменить роль без side эффекта */\r\n // public changeRole(role: string) {\r\n // this.roles$.next([role]);\r\n // }\r\n\r\n // /** Сменить роли без side эффекта */\r\n // public changeRoles(roles: string[]) {\r\n // this.roles$.next(roles);\r\n // }\r\n\r\n /** Запрос авторизации */\r\n login(username: string, password: string, idCas: number, returnUrl: string = '', onErrorFn: () => void) {\r\n const passwordEncoded = encodeURIComponent(password);\r\n let body = `username=${username}&password=${passwordEncoded}`;\r\n\r\n if (idCas) {\r\n body += `&idcas=${idCas}`;\r\n }\r\n\r\n if (this.idHuman) {\r\n body += `&idhuman=${this.idHuman}`;\r\n }\r\n\r\n this.http.post(this.baseRoute + 'jwt', body, this.defaultHeader)\r\n .subscribe({\r\n next: data => {\r\n this.successLoginAction(data, returnUrl);\r\n this.alertService.success('Успешная авторизация');\r\n },\r\n error: (error: any) => {\r\n this.console.log(error);\r\n this.alertService.error('Ошибка при авторизации: ' + error, 0);\r\n if (onErrorFn) {\r\n onErrorFn();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /** Aвторизация по пропуску */\r\n loginByPermit(permit: string, idCas: number, returnUrl: string = '') {\r\n let body = `permit=${permit}`;\r\n\r\n if (idCas) {\r\n body += `&idcas=${idCas}`;\r\n }\r\n\r\n if (this.idHuman) {\r\n body += `&idhuman=${this.idHuman}`;\r\n }\r\n\r\n return this.http.post(this.baseRoute + 'jwt', body, this.defaultHeader)\r\n .subscribe({\r\n next: (data) => {\r\n this.successLoginAction(data, returnUrl);\r\n this.alertService.success('Успешная авторизация');\r\n },\r\n error: (error: any) => {\r\n this.console.log(error);\r\n this.alertService.error('Ошибка при авторизации: ' + error, 0);\r\n }\r\n });\r\n }\r\n\r\n /** Разлогиниться */\r\n logout(returnUrl: string = '') {\r\n // Убирает(удаляет) пользователя из локального хранилища когда он разлогинивается\r\n this.userService.removeUser();\r\n // localStorage.removeItem('sed_currentUser');\r\n // Отправляем подписчикам события что человек вышел\r\n this.loggedIn$.next(false);\r\n // Переход на страницу авторизации\r\n if (returnUrl) {\r\n // указываем целевой маршрут в параметре\r\n this.router.navigate(['/login'], { queryParams: { returnUrl } }).then();\r\n } else {\r\n this.router.navigate(['/login']).then();\r\n }\r\n }\r\n\r\n // Получить роли пользователя\r\n private getRoles(): Observable<string[]> {\r\n return this.http.get<string[]>(this.baseRoute + 'jwt/webroles');\r\n }\r\n\r\n // /** Инициализация ролей */\r\n // private initRole() {\r\n // if (this.hasRole(this.roles$.getValue(), this.defaultRole)) {\r\n // this.roleService.getRoles().subscribe({\r\n // next: (data: string[]) => {\r\n // this.roles$.next(data['Roles']);\r\n // },\r\n // error: (error: any) => {\r\n // this.console.log(error);\r\n // this.alert.error('Ошибка при получении списка ролей пользователя: ' + error);\r\n // }\r\n // });\r\n // }\r\n // }\r\n\r\n\r\n /** При успешной авторизации */\r\n private successLoginAction(user: any, returnUrl: string = '') {\r\n this.userService.userData = user;\r\n this.loggedIn$.next(true);\r\n // init roles\r\n this.roles$.next(this.userService.userData.roleList);\r\n\r\n if (returnUrl) {\r\n const decodeUrl = decodeURIComponent(returnUrl);\r\n // указан целевой маршрут\r\n if (decodeUrl.includes('?')) {\r\n // есть параметры строки запроса\r\n const serializer = new DefaultUrlSerializer();\r\n // параметры строки запроса\r\n const params = serializer.parse(decodeUrl).queryParams;\r\n //console.log('successLoginAction params = ', params);\r\n // выделение маршрута\r\n const url = decodeUrl.slice(0, decodeUrl.indexOf('?'));\r\n this.router.navigate([url], { queryParams: params });\r\n } else {\r\n this.router.navigate([decodeUrl]);\r\n }\r\n } else {\r\n // не указан целевой маршрут, переход на главную\r\n this.router.navigate(['']);\r\n }\r\n }\r\n}\r\n","\r\nimport { Component, effect, input, output } from '@angular/core';\r\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\r\nimport { MatError, MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatInput } from '@angular/material/input';\r\n\r\nimport { Authenticate } from '../../models/user';\r\n\r\n@Component({\r\n selector: 'ngx-uik-login-form',\r\n templateUrl: 'login-form.component.html',\r\n styleUrls: ['login-form.component.scss'],\r\n imports: [MatCard, MatCardHeader, MatCardTitle, MatCardContent, FormsModule, ReactiveFormsModule, MatFormField, \r\n MatLabel, MatInput, MatError, MatIcon, MatSuffix, MatButton]\r\n})\r\nexport class LoginFormComponent {\r\n pending = input<boolean>(false);\r\n errorMessage = input<string>('');\r\n submitted = output<Authenticate>();\r\n\r\n hide = true;\r\n\r\n form: FormGroup = new FormGroup({\r\n username: new FormControl('', [Validators.required]),\r\n password: new FormControl('', [Validators.required]),\r\n });\r\n\r\n constructor() { \r\n effect(() => {\r\n if (this.pending()) {\r\n this.form.disable();\r\n } else {\r\n this.form.enable();\r\n }\r\n });\r\n }\r\n\r\n submit() {\r\n if (this.form.valid) {\r\n this.submitted.emit(this.form.value);\r\n }\r\n }\r\n}\r\n","<mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n Авторизация\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <p>\r\n <mat-form-field>\r\n <mat-label>Имя пользователя</mat-label>\r\n <input type=\"text\" pattern=\"[A-Za-z]{1,}.[A-Za-z]{1,}.[A-Za-z]*\"\r\n matInput\r\n autocomplete=\"on\"\r\n name=\"login-form-username\"\r\n placeholder=\"Имя пользователя\"\r\n formControlName=\"username\">\r\n @if (form.controls['username'].hasError('pattern')) {\r\n <mat-error>\r\n Пожалуйста, используйте требуемый формат (Пример: a.p.petrov)\r\n </mat-error>\r\n }\r\n @if (form.controls['username'].hasError('required')) {\r\n <mat-error>\r\n Пожалуйста, заполните это поле\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n </p>\r\n\r\n <p>\r\n <mat-form-field>\r\n <mat-label>Пароль</mat-label>\r\n <input [type]=\"hide ? 'password' : 'text'\" matInput placeholder=\"Пароль\" formControlName=\"password\">\r\n <mat-icon class=\"watcher\" matSuffix (mousedown)=\"hide=false\" (mouseup)=\"hide=true\"\r\n >{{ hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n @if (form.controls['password'].hasError('required')) {\r\n <mat-error>\r\n Пожалуйста, заполните это поле\r\n </mat-error>\r\n }\r\n </mat-form-field>\r\n </p>\r\n\r\n @if (errorMessage()) {\r\n <p class=\"loginError\">\r\n {{ errorMessage() }}\r\n </p>\r\n }\r\n\r\n <p class=\"loginButtons\">\r\n <button type=\"submit\" mat-button mat-stroked-button color=\"primary\" [disabled]=\"pending()\">Войти</button>\r\n </p>\r\n\r\n </form>\r\n </mat-card-content>\r\n </mat-card>\r\n","import { Component, ElementRef, EventEmitter, HostListener, OnInit, output, Output, viewChild } from '@angular/core';\r\nimport { MatCard, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card';\r\n\r\n@Component({\r\n selector: 'ngx-uik-permit-form',\r\n templateUrl: 'permit-form.component.html',\r\n styleUrls: ['permit-form.component.scss'],\r\n imports: [MatCard, MatCardHeader, MatCardTitle, MatCardContent]\r\n})\r\nexport class PermitFormComponent implements OnInit {\r\n readonly hidy = viewChild<ElementRef>('hidy');\r\n\r\n submitted = output<string>();\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n mouseHandling() {\r\n this.hidy()?.nativeElement.focus();\r\n }\r\n\r\n ngOnInit() {\r\n // Обнуляем значение Input\r\n const hidy = this.hidy();\n if (hidy) {\r\n hidy.nativeElement.value = null;\r\n hidy.nativeElement.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Поле ввода\r\n *\r\n * @param событие нажатия на клавишу\r\n */\r\n onKeydown(event: any): void {\r\n if (event.key === 'Enter') {\r\n const permit = this.hidy()?.nativeElement.value;\r\n if (permit) {\r\n this.submitted.emit(permit);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","<mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title>\r\n Приложите пропуск\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <div class=\"permit\"></div>\r\n </mat-card-content>\r\n</mat-card>\r\n<input #hidy class=\"hidy\" type=\"text\" (keydown)=\"onKeydown($event)\"/>","import { Component, inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LoaderService } from '../../../loader';\r\nimport { Authenticate } from '../../models/user';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { LoginFormComponent } from '../login-form/login-form.component';\r\nimport { PermitFormComponent } from '../permit-form/permit-form.component';\r\n\r\n@Component({\r\n selector: 'ngx-uik-login-page',\r\n templateUrl: 'login-page.component.html',\r\n styleUrls: ['login-page.component.scss'],\r\n imports: [LoginFormComponent, PermitFormComponent]\r\n})\r\nexport class LoginPageComponent implements OnInit, OnDestroy {\r\n pending: boolean = false;\r\n error: string = '';\r\n isKiosk: boolean = false;\r\n /** Идентификатор АС */\r\n idCas: number = 0;\r\n /** Подписка на Идентификатор АС */\r\n sub: Subscription;\r\n /** Url страницы, с которой был переход (после входа вернет на неё) */\r\n returnUrl: string = '';\r\n\r\n private readonly authService = inject(AuthService);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly loaderService = inject(LoaderService);\r\n\r\n constructor() {\r\n this.sub = this.route.data.subscribe(data => {\r\n this.idCas = data['idCas'];\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (localStorage.getItem('id_human') || localStorage.getItem('kiosk-keyboard-layout')) {\r\n // this.isKiosk = true;\r\n }\r\n this.route.queryParams.subscribe(params => {\r\n this.returnUrl = params['returnUrl'];\r\n //console.log('constructor this.returnUrl = ', this.returnUrl);\r\n //this.returnUrl = this.returnUrl.slice(this.returnUrl.lastIndexOf('returnUrl=') + 'returnUrl='.length);\r\n //console.log('constructor NEW this.returnUrl = ', this.returnUrl);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n onSubmitError() {\r\n return () => {\r\n this.pending = false;\r\n this.loaderService.hide();\r\n };\r\n }\r\n\r\n onSubmit($event: Authenticate) {\r\n this.loaderService.show();\r\n this.pending = true;\r\n this.authService.login($event.username, $event.password, this.idCas, this.returnUrl, this.onSubmitError());\r\n }\r\n\r\n onSubmitPermit($event: string) {\r\n const permit = $event;\r\n this.authService.loginByPermit(permit, this.idCas, this.returnUrl);\r\n }\r\n}\r\n","@if (!isKiosk) {\r\n <ngx-uik-login-form\r\n (submitted)=\"onSubmit($event)\"\r\n [pending]=\"pending\"\r\n [errorMessage]=\"error\">\r\n </ngx-uik-login-form>\r\n }\r\n @if (isKiosk) {\r\n <ngx-uik-permit-form\r\n (submitted)=\"onSubmitPermit($event)\"\r\n >\r\n </ngx-uik-permit-form>\r\n }","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\r\n\r\nimport { AuthPermission } from '../auth.types';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[ngxUikDisableIfUnauthorized]',\r\n standalone: true\r\n})\r\nexport class DisableIfUnauthorizedDirective {\r\n permission = input<AuthPermission | undefined>(undefined, { alias: 'ngxUikDisableIfUnauthorized' });\r\n\r\n private readonly el = inject(ElementRef);\r\n private readonly authService = inject(AuthService);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.permission() && !this.authService.hasPermission(this.permission()!)) {\r\n this.el.nativeElement.disabled = true;\r\n }\r\n });\r\n }\r\n}\r\n","import { Directive, ElementRef, inject, input, OnInit } from '@angular/core';\r\n\r\nimport { AuthPermission } from '../auth.types';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[ngxUikHideIfUnauthorized]',\r\n standalone: true\r\n})\r\nexport class HideIfUnauthorizedDirective implements OnInit {\r\n permission = input<AuthPermission | undefined>(undefined, { alias: 'ngxUikHideIfUnauthorized' });\r\n\r\n private readonly el = inject(ElementRef);\r\n private readonly authService = inject(AuthService);\r\n\r\n ngOnInit() {\r\n if (this.permission() && !this.authService.hasPermission(this.permission()!)) {\r\n this.el.nativeElement.style.display = 'none';\r\n }\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, inject, input, OnInit, signal } from '@angular/core';\r\n\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[ngxUikDisableIfRole]',\r\n standalone: true\r\n})\r\nexport class DisableIfRoleDirective implements OnInit {\r\n role = input<string>('', { alias: 'ngxUikDisableIfRole' });\r\n\r\n userRoles = signal<string[]>([]);\r\n\r\n private readonly el = inject(ElementRef);\r\n private readonly authService = inject(AuthService);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.authService.hasRole(this.userRoles(), this.role())) {\r\n this.el.nativeElement.disabled = true;\r\n } else {\r\n this.el.nativeElement.disabled = false;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.role()) {\r\n this.authService.roles$.subscribe((userRoles: string[]) => {\r\n this.userRoles.set(userRoles);\r\n });\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, OnInit, effect, inject, input, signal } from '@angular/core';\r\n\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[ngxUikHideIfRoleNot]',\r\n standalone: true\r\n})\r\nexport class HideIfRoleNotDirective implements OnInit {\r\n roles = input<string[]>([], { alias: 'ngxUikHideIfRoleNot' });\r\n\r\n userRoles = signal<string[]>([]);\r\n\r\n private readonly el = inject(ElementRef);\r\n private readonly authService = inject(AuthService);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.userRoles() && this.userRoles().length > 0) {\r\n // Элемент скрывается, если у пользователя нет ни одной роли из перереданных в \"roles\"\r\n // или в списке \"roles\" есть роль \"hideRole\".\r\n const isHide = this.authService.isHideElement(this.roles(), this.userRoles());\r\n if (isHide) {\r\n this.el.nativeElement.style.display = 'none';\r\n } else {\r\n this.el.nativeElement.style.display = 'inherit';\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.roles()) {\r\n this.authService.roles$.subscribe((userRoles) => {\r\n this.userRoles.set(userRoles);\r\n });\r\n }\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nclass AuthGuardService {\r\n\r\n private readonly auth = inject(AuthService);\r\n private readonly router = inject(Router);\r\n\r\n canActivate(route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ) {\r\n const isLogin = this.auth.loggedIn$.value;\r\n if (!isLogin) {\r\n console.log('state.url =', state.url);\r\n\r\n // Если не зарегистрирован вернуть в форму авторизации\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\r\n }\r\n\r\n return isLogin;\r\n }\r\n}\r\n\r\nexport const authGuard: CanActivateFn = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n) => inject(AuthGuardService).canActivate(route, state);\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nclass RoleGuardService {\r\n\r\n public roles: string[] = [];\r\n\r\n private readonly authService = inject(AuthService);\r\n private readonly router = inject(Router);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\r\n this.roles = route.data['roles'] as string[];\r\n return this.authService.roles$.pipe(map((userRoles: string[]) => this.authService.hasRoles(userRoles, this.roles)));\r\n }\r\n}\r\n\r\nexport const roleGuard: CanActivateFn = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n) => inject(RoleGuardService).canActivate(route, state);\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n// Вычисление разрешений на модули по ролям\r\nexport class RoleService {\r\n // Указываем какой сервер использовать\r\n baseRoute = 'mainApi/';\r\n\r\n private readonly http = inject(HttpClient);\r\n\r\n // Получить роли пользователя\r\n getRoles() {\r\n return this.http.get(this.baseRoute + 'jwt/webroles');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class BaseToolbarService {\r\n baseRoute = 'BaseToolbar';\r\n\r\n constructor() {}\r\n\r\n}\r\n","import { Component, inject, input, OnDestroy, OnInit, output } from '@angular/core';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { MatDivider } from '@angular/material/divider';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatToolbar } from '@angular/material/toolbar';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { AuthService } from '../../../auth';\r\nimport { IContextMenuOptions } from '../../../shared/table';\r\nimport { BaseToolbarService } from '../base-toolbar.service';\r\n\r\n@Component({\r\n selector: 'ngx-uik-base-toolbar',\r\n templateUrl: 'base-toolbar.component.html',\r\n styleUrls: ['base-toolbar.component.scss'],\r\n imports: [MatToolbar, MatIconButton, MatTooltip, MatIcon, MatMenu, MatDivider, MatMenuTrigger, MatMenuItem],\r\n providers: [\r\n BaseToolbarService\r\n ]\r\n})\r\nexport class BaseToolbarComponent implements OnInit, OnDestroy {\r\n rolesNewBtn = input<string[]>([]);\r\n rolesEditBtn = input<string[]>([]);\r\n rolesRemoveBtn = input<string[]>([]);\r\n rolesCopyBtn = input<string[]>([]);\r\n rolesExcelBtn = input<string[]>([]);\r\n rolesCsvBtn = input<string[]>([]);\r\n rolesPdfBtn = input<string[]>([]);\r\n rolesPrintBtn = input<string[]>([]);\r\n rolesRefreshBtn = input<string[]>([]);\r\n rolesClearBtn = input<string[]>([]);\r\n\r\n newBtnDisabled = input<boolean>(false);\r\n editBtnDisabled = input<boolean>(false);\r\n removeBtnDisabled = input<boolean>(false);\r\n copyBtnDisabled = input<boolean>(false);\r\n excelBtnDisabled = input<boolean>(false);\r\n csvBtnDisabled = input<boolean>(false);\r\n pdfBtnDisabled = input<boolean>(false);\r\n printBtnDisabled = input<boolean>(false);\r\n refreshBtnDisabled = input<boolean>(false);\r\n clearBtnDisabled = input<boolean>(false);\r\n\r\n newBtnTooltip = input<string>('Добавить');\r\n editBtnTooltip = input<string>('Изменить');\r\n removeBtnTooltip = input<string>('Удалить');\r\n copyBtnTooltip = input<string>('Скопировать');\r\n excelBtnTooltip = input<string>('Экспортировать в Excel');\r\n csvBtnTooltip = input<string>('Экспортировать в Csv');\r\n pdfBtnTooltip = input<string>('Экспортировать в Pdf');\r\n printBtnTooltip = input<string>('Печатать');\r\n refreshBtnTooltip = input<string>('Обновить данные');\r\n clearBtnTooltip = input<string>('Очистить фильтр');\r\n\r\n /** Список элементов контекстного меню. */\r\n newBtnOpt = input<IContextMenuOptions<string>[]>([]);\r\n\r\n clickedNewBtn = output();\r\n clickedEditBtn = output();\r\n clickedRemoveBtn = output();\r\n clickedCopyBtn = output();\r\n clickedExcelBtn = output();\r\n clickedCsvBtn = output();\r\n clickedPdfBtn = output();\r\n clickedPrintBtn = output();\r\n clickedRefreshBtn = output();\r\n clickedClearBtn = output();\r\n\r\n // DI\r\n protected authService = inject(AuthService);\r\n\r\n userRoles: string[] = [];\r\n subscription = new Subscription();\r\n\r\n ngOnInit(): void {\r\n // получить права пользователя\r\n const subs = this.authService.roles$.subscribe((userRoles) => {\r\n this.userRoles = userRoles;\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n isShow(roles: string[]) {\r\n //console.log(roles, this.userRoles);\r\n return !this.authService.isHideElement(roles, this.userRoles);\r\n }\r\n\r\n onNewClick() {\r\n this.clickedNewBtn.emit();\r\n }\r\n\r\n onEditClick() {\r\n this.clickedEditBtn.emit();\r\n }\r\n\r\n onRemoveClick() {\r\n this.clickedRemoveBtn.emit();\r\n }\r\n\r\n onCopyClick() {\r\n this.clickedCopyBtn.emit();\r\n }\r\n\r\n onExcelClick() {\r\n this.clickedExcelBtn.emit();\r\n }\r\n\r\n onCsvClick() {\r\n this.clickedCsvBtn.emit();\r\n }\r\n\r\n onPdfClick() {\r\n this.clickedPdfBtn.emit();\r\n }\r\n\r\n onPrintClick() {\r\n this.clickedPrintBtn.emit();\r\n }\r\n\r\n onRefreshGridClick() {\r\n this.clickedRefreshBtn.emit();\r\n }\r\n\r\n onClearClick() {\r\n this.clickedClearBtn.emit();\r\n }\r\n}\r\n\r\n","<mat-toolbar>\r\n @if (isShow(rolesNewBtn())) {\r\n @if (newBtnOpt() && newBtnOpt().length > 0) {\r\n <button [disabled]=\"newBtnDisabled()\" [matMenuTriggerFor]=\"menuNewBtn\"\r\n mat-icon-button [matTooltip]=\"newBtnTooltip()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <mat-menu #menuNewBtn=\"matMenu\">\r\n @for (menuItem of newBtnOpt(); track menuItem) {\r\n @if (menuItem.title === '-' && !(menuItem.hideFn ? menuItem.hideFn(\"\") : menuItem.hide)) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (menuItem.title !== '-' && !(menuItem.hideFn ? menuItem.hideFn(\"\") : menuItem.hide)) {\r\n <button mat-menu-item\r\n (click)=\"menuItem.onClickFn ? menuItem.onClickFn('') : ''\"\r\n [disabled]=\"menuItem.disabledFn ? menuItem.disabledFn('') : menuItem.disabled\">\r\n @if (menuItem.icon) {\r\n <mat-icon>{{menuItem.icon}}</mat-icon>\r\n }\r\n {{ menuItem.title }}\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n } \r\n @else {\r\n <button [disabled]=\"newBtnDisabled()\" (click)=\"onNewClick()\"\r\n mat-icon-button routerLink=\"new\" routerLinkActive=\"active\" [matTooltip]=\"newBtnTooltip()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n }\r\n }\r\n\r\n @if (isShow(rolesEditBtn())) {\r\n <button [disabled]=\"editBtnDisabled()\" (click)=\"onEditClick()\"\r\n mat-icon-button routerLink=\"edit\" color=\"primary\" routerLinkActive=\"active\" [matTooltip]=\"editBtnTooltip()\">\r\n <mat-icon>edit</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesRemoveBtn())) {\r\n <button [disabled]=\"removeBtnDisabled()\" (click)=\"onRemoveClick()\"\r\n mat-icon-button routerLink=\"delete\" color=\"warn\" routerLinkActive=\"active\" [matTooltip]=\"removeBtnTooltip()\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesCopyBtn())) {\r\n <button [disabled]=\"copyBtnDisabled()\" (click)=\"onCopyClick()\"\r\n mat-icon-button routerLink=\"delete\" routerLinkActive=\"active\" [matTooltip]=\"copyBtnTooltip()\">\r\n <mat-icon>content_copy</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesExcelBtn())) {\r\n <button [disabled]=\"excelBtnDisabled()\" (click)=\"onExcelClick()\"\r\n mat-icon-button routerLink=\"excel\" routerLinkActive=\"active\" [matTooltip]=\"excelBtnTooltip()\">\r\n <mat-icon class=\"material-icons-outlined\">explicit</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesCsvBtn())) {\r\n <button [disabled]=\"csvBtnDisabled()\" (click)=\"onCsvClick()\"\r\n mat-icon-button routerLink=\"csv\" routerLinkActive=\"active\" [matTooltip]=\"csvBtnTooltip()\">\r\n <mat-icon class=\"material-icons-outlined\">download</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesPdfBtn())) {\r\n <button [disabled]=\"pdfBtnDisabled()\" (click)=\"onPdfClick()\"\r\n mat-icon-button routerLink=\"pdf\" routerLinkActive=\"active\" [matTooltip]=\"pdfBtnTooltip()\">\r\n <mat-icon class=\"material-icons-outlined\">picture_as_pdf</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesPrintBtn())) {\r\n <button [disabled]=\"printBtnDisabled()\" (click)=\"onPrintClick()\"\r\n mat-icon-button routerLink=\"print\" routerLinkActive=\"active\" [matTooltip]=\"printBtnTooltip()\">\r\n <mat-icon class=\"material-icons-outlined\">print_outline</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesRefreshBtn())) {\r\n <button [disabled]=\"refreshBtnDisabled()\" (click)=\"onRefreshGridClick()\"\r\n mat-icon-button routerLink=\"refresh\" routerLinkActive=\"active\" [matTooltip]=\"refreshBtnTooltip()\">\r\n <mat-icon>refresh</mat-icon>\r\n </button>\r\n }\r\n @if (isShow(rolesClearBtn())) {\r\n <button [disabled]=\"clearBtnDisabled()\" (click)=\"onClearClick()\"\r\n mat-icon-button routerLink=\"clear\" routerLinkActive=\"active\" [matTooltip]=\"clearBtnTooltip()\">\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n }\r\n</mat-toolbar>\r\n","export interface IEditDialogData<T, K = any> {\r\n action: Action;\r\n entity: T;\r\n extraData?: K;\r\n}\r\n\r\nexport enum Action {\r\n Add = 'Добавление',\r\n Edit = 'Изменение'\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AvatarService {\r\n baseRoute = 'common/human/';\r\n\r\n private readonly http = inject(HttpClient);\r\n\r\n getAvatarById(idHuman: number): Observable<ArrayBuffer> {\r\n return this.http.get(this.baseRoute + idHuman + '/avatar', { responseType: 'arraybuffer' });\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalStorageService {\r\n\r\n constructor() { }\r\n\r\n public saveData(key: string, value: string) {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n public getData(key: string) {\r\n return localStorage.getItem(key)\r\n }\r\n public removeData(key: string) {\r\n localStorage.removeItem(key);\r\n }\r\n\r\n public clearData() {\r\n localStorage.clear();\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n // Экспорт в CSV\r\n exportCSV(data: any, filename = 'data', arrHeader: any, newHeaders: any) {\r\n const csvData = this.convertToCSV(data, arrHeader, newHeaders);\r\n console.log(csvData);\r\n const blob = new Blob(['\\ufeff' + csvData], { type: 'text/csv;charset=utf-8;' });\r\n const dwldLink = document.createElement('a');\r\n const url = URL.createObjectURL(blob);\r\n const isSafariBrowser = navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1;\r\n if (isSafariBrowser) { //if Safari open in new window to save file with random filename.\r\n dwldLink.setAttribute('target', '_blank');\r\n }\r\n dwldLink.setAttribute('href', url);\r\n dwldLink.setAttribute('download', filename + '.csv');\r\n dwldLink.style.visibility = 'hidden';\r\n document.body.appendChild(dwldLink);\r\n dwldLink.click();\r\n document.body.removeChild(dwldLink);\r\n }\r\n\r\n convertToCSV(objArray: any, headerList: any, newHeaders: any) {\r\n const array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;\r\n let str = '';\r\n let row = 'S.No,';\r\n for (const index in newHeaders) {\r\n if (Object.prototype.hasOwnProperty.call(newHeaders, index)) {\r\n row += newHeaders[index] + ',';\r\n }\r\n }\r\n row = row.slice(0, -1);\r\n str += row + '\\r\\n';\r\n for (let i = 0; i < array.length; i++) {\r\n let line = (i + 1) + '';\r\n for (const index in headerList) {\r\n if (Object.prototype.hasOwnProperty.call(newHeaders, index)) {\r\n const head = headerList[index];\r\n line += ',' + array[i][head];\r\n }\r\n }\r\n str += line + '\\r\\n';\r\n }\r\n return str;\r\n }\r\n\r\n // Экспорт в Excel\r\n exportExcel(data: any, heading: any, sheetName = 'sheet1', filename = 'data') {\r\n const wb = XLSX.utils.book_new();\r\n const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet([]);\r\n XLSX.utils.sheet_add_aoa(ws, heading);\r\n XLSX.utils.sheet_add_json(ws, data, { origin: 'A2', skipHeader: true });\r\n XLSX.utils.book_append_sheet(wb, ws, sheetName);\r\n XLSX.writeFile(wb, filename + '.xlsx');\r\n }\r\n\r\n}\r\n","import { Directive, inject, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { MatDialogRef } from \"@angular/material/dialog\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { Action, IEditDialogData } from \"./base-edit-dialog-data\";\r\nimport { LoaderService } from \"../../loader\";\r\nimport { AlertService } from \"../../services\";\r\n\r\n\r\n@Directive()\r\nexport abstract class BaseEditClass<T> implements OnDestroy {\r\n\r\n /** Заголовок. */\r\n public abstract title: string;\r\n /** Данные диалога. */\r\n protected abstract dialogData?: IEditDialogData<T>;\r\n /** Форма. */\r\n public abstract form?: FormGroup;\r\n /** Ссылка на диалог. */\r\n protected abstract dialogRef?: MatDialogRef<any, IEditDialogData<T> | null>;\r\n /** Сервис индиатор загрузки. */\r\n protected loaderService = inject(LoaderService);\r\n /** Сервис уведослений. */\r\n protected alertService = inject(AlertService);\r\n\r\n /** Объект для отписки (вызывается метод unsubscribe при уничтожннии компонента). */\r\n protected subscription = new Subscription();\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onNoClick(event: MouseEvent): void {\r\n this.dialogRef?.close(null);\r\n event.preventDefault(); // иначе сработает onSubmit\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.form) {\r\n if (this.form.valid) {\r\n if (this.dialogData)\r\n Object.keys(this.form.controls).forEach(controlName => this.dialogData!.entity[controlName as keyof T] = this.form?.controls[controlName].value);\r\n this.dialogRef?.close(this.dialogData);\r\n } else {\r\n Object.keys(this.form.controls).forEach(controlName => this.form?.controls[controlName].markAsTouched());\r\n }\r\n }\r\n }\r\n\r\n formActionIsAdd(): boolean {\r\n return this.dialogData?.action === Action.Add;\r\n }\r\n\r\n formActionIsEdit(): boolean {\r\n return this.dialogData?.action === Action.Edit;\r\n }\r\n}","export interface IEntityAction<T> {\r\n action: EntityAction;\r\n entity: T;\r\n}\r\n\r\nexport enum EntityAction {\r\n Init = 'Инициализация',\r\n Add = 'Добавление',\r\n Edit = 'Изменение',\r\n Delete = 'Удаление'\r\n}\r\n","import { Directive, inject, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LoaderService } from '../../loader';\r\nimport { AlertService, LocalStorageService } from '../../services';\r\n\r\n@Directive()\r\nexport class BaseFilterClass implements OnDestroy {\r\n\r\n /** Сервис для работы с LocalStorage. */\r\n protected localStorageService = inject(LocalStorageService);\r\n /** Сервис индиатор загрузки. */\r\n protected loaderService = inject(LoaderService);\r\n /** Сервис уведомлений. */\r\n protected alertService = inject(AlertService);\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultDebounceTime = 500;\r\n /** Объект для отписки (вызывается метод unsubscribe при уничтожннии компонента). */\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","import { Directive, inject, OnDestroy } from \"@angular/core\";\r\nimport { MatMenuTrigger } from \"@angular/material/menu\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\n@Directive()\r\nexport class BaseNavBarMenuClass implements OnDestroy {\r\n\r\n protected subscription = new Subscription();\r\n\r\n protected router = inject(Router);\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n /** Нажата средняя кнопка (открыть ссылку в новой вкладке). */\r\n onMiddleClick(event: MouseEvent, baseUrl: string, menu: MatMenuTrigger) {\r\n // 1 -\tAuxiliary button pressed (usually the middle button)\r\n if (event.button === 1) {\r\n // event.preventDefault();\r\n menu.closeMenu();\r\n const urlTree = this.router.serializeUrl(\r\n this.router.createUrlTree([baseUrl]\r\n )\r\n );\r\n window.open(urlTree, '_blank');\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnimationsService {\r\n private static routeAnimationType: RouteAnimationType = 'ALL';\r\n\r\n constructor() {\r\n AnimationsService.routeAnimationType = 'ALL';\r\n }\r\n\r\n static isRouteAnimationsType(type: RouteAnimationType) {\r\n // console.log('isRouteAnimationsType ', AnimationsService.routeAnimationType, type, AnimationsService.routeAnimationType === type);\r\n return AnimationsService.routeAnimationType === type;\r\n }\r\n\r\n updateRouteAnimationType(\r\n pageAnimations: boolean,\r\n elementsAnimations: boolean\r\n ) {\r\n AnimationsService.routeAnimationType =\r\n pageAnimations && elementsAnimations\r\n ? 'ALL'\r\n : pageAnimations\r\n ? 'PAGE'\r\n : elementsAnimations\r\n ? 'ELEMENTS'\r\n : 'NONE';\r\n }\r\n}\r\n\r\nexport type RouteAnimationType = 'ALL' | 'PAGE' | 'ELEMENTS' | 'NONE';\r\n","import {\r\n animate,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n stagger,\r\n sequence\r\n} from '@angular/animations';\r\nimport { AnimationsService } from './animations.service';\r\n\r\nexport const ROUTE_ANIMATIONS_ELEMENTS = 'route-animations-elements';\r\n\r\nconst STEPS_ALL: any[] = [\r\n // PAGE\r\n query(':enter > *', style({ opacity: 0, position: 'fixed' }), {\r\n optional: true\r\n }),\r\n // ELEMENTS\r\n query(':enter .' + ROUTE_ANIMATIONS_ELEMENTS, style({ opacity: 0 }), {\r\n optional: true\r\n }),\r\n // PAGE\r\n sequence([\r\n query(\r\n ':leave > *',\r\n [\r\n style({ transform: 'translateY(0%)', opacity: 1 }),\r\n animate(\r\n '0.2s ease-in-out',\r\n style({ transform: 'translateY(-3%)', opacity: 0 })\r\n ),\r\n style({ position: 'fixed' })\r\n ],\r\n { optional: true }\r\n ),\r\n query(\r\n ':enter > *',\r\n [\r\n style({\r\n transform: 'translateY(-3%)',\r\n opacity: 0,\r\n position: 'static'\r\n }),\r\n animate(\r\n '0.5s ease-in-out',\r\n style({ transform: 'translateY(0%)', opacity: 1 })\r\n )\r\n ],\r\n { optional: true }\r\n )\r\n ]),\r\n // ELEMENTS\r\n query(\r\n ':enter .' + ROUTE_ANIMATIONS_ELEMENTS,\r\n // eslint-disable-next-line no-magic-numbers\r\n stagger(75, [\r\n style({ transform: 'translateY(10%)', opacity: 0 }),\r\n animate(\r\n '0.5s ease-in-out',\r\n style({ transform: 'translateY(0%)', opacity: 1 })\r\n )\r\n ]),\r\n { optional: true }\r\n )\r\n];\r\nconst STEPS_NONE: any[] = [];\r\nconst STEPS_PAGE = [STEPS_ALL[0], STEPS_ALL[2]];\r\nconst STEPS_ELEMENTS = [STEPS_ALL[1], STEPS_ALL[3]];\r\n\r\nexport const isRouteAnimationsAll = () => AnimationsService.isRouteAnimationsType('ALL');\r\nexport const isRouteAnimationsNone = () => AnimationsService.isRouteAnimationsType('NONE');\r\nexport const isRouteAnimationsPage = () => AnimationsService.isRouteAnimationsType('PAGE');\r\nexport const isRouteAnimationsElements = () => AnimationsService.isRouteAnimationsType('ELEMENTS');\r\n\r\nexport const routeAnimations = trigger('routeAnimations', [\r\n transition(isRouteAnimationsAll, STEPS_ALL),\r\n transition(isRouteAnimationsNone, STEPS_NONE),\r\n transition(isRouteAnimationsPage, STEPS_PAGE),\r\n transition(isRouteAnimationsElements, STEPS_ELEMENTS)\r\n]);\r\n","import { Component, inject } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\n\r\nimport { DialogData } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.css'],\r\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, MatButton, MatDialogClose]\r\n})\r\nexport class DialogComponent {\r\n\r\n readonly data = inject<DialogData>(MAT_DIALOG_DATA);\r\n readonly dialogRef = inject(MatDialogRef<DialogComponent>);\r\n\r\n constructor() {\r\n if (!this.data.title) {\r\n this.data.title = 'Подтверждение';\r\n }\r\n if (!this.data.btnNoTitle) {\r\n this.data.btnNoTitle = 'Нет';\r\n }\r\n if (!this.data.btnYesTitle) {\r\n this.data.btnYesTitle = 'Да';\r\n }\r\n }\r\n\r\n onNoClick(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>\n <div style=\"white-space: pre-line\">{{ data.message }}</div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button mat-raised-button (click)=\"onNoClick()\" cdkFocusInitial>{{ data.btnNoTitle }}</button>\n <button mat-raised-button color=\"warn\" [mat-dialog-close]=\"data.id\">{{ data.btnYesTitle }}</button>\n</div>\n\n","import { Directive, OnDestroy, inject, signal } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { Router } from '@angular/router';\r\nimport { ObservableInput, Subject, Subscription, forkJoin } from 'rxjs';\r\n\r\nimport { ROUTE_ANIMATIONS_ELEMENTS } from '../../core';\r\nimport { LoaderService } from '../../loader';\r\nimport { AlertService } from '../../services';\r\nimport { LocalStorageService } from '../../services/local-storage-service';\r\nimport { DialogComponent } from '../../shared/dialog/dialog.component';\r\nimport { IContextMenuOptions, IPageState, ISortState, ITableState } from '../../shared/table';\r\nimport { ObjectKeys, SortDirection, fnCbType, fnType } from '../../types/types';\r\nimport { Action, IEditDialogData } from './base-edit-dialog-data';\r\n\r\n@Directive()\r\nexport class BasePageClass<T> implements OnDestroy {\r\n\r\n routeAnimationsElements = ROUTE_ANIMATIONS_ELEMENTS;\r\n\r\n /** Данные для табличного компонента. */\r\n data = signal<T[]>([]);\r\n /** Количество записей по фильтру. */\r\n length = signal<number>(0);\r\n\r\n entityService: any;\r\n entityType: any;\r\n entityEditComponent: any;\r\n extraData?: any;\r\n\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultPageIndex = 0;\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultPageSize = 10;\r\n\r\n dialog?: MatDialog;\r\n dialogEditWidth = 'auto';\r\n dialogRemoveWidth = '400px';\r\n\r\n routeAddress: string = '';\r\n\r\n /** Сообщение при удалении записе(й). */\r\n removalMessage: string = '';\r\n /** Заголовок страницы. */\r\n pageTitle: string = '';\r\n\r\n /**\r\n * Создание записи: вызывается перед окрытием диалога.\r\n */\r\n beforeOpenDialogOnNewEvent: fnType<T>;\r\n /**\r\n * Редактирование записи: вызывается перед окрытием диалога.\r\n */\r\n beforeOpenDialogOnEditEvent: fnType<T>;\r\n /**\r\n * Создание записи: вызывается перед сохранением объекта.\r\n */\r\n beforeSaveOnNewEvent: fnType<T>;\r\n /**\r\n * Редактирование записи: вызывается перед сохранением объекта.\r\n */\r\n beforeSaveOnEditEvent: fnType<T>;\r\n /**\r\n * Создание записи: вызывается после сохранения объекта.\r\n */\r\n afterSaveOnNewEvent: fnCbType<T>;\r\n /**\r\n * Редактирование записи: вызывается после сохранения объекта.\r\n */\r\n afterSaveOnEditEvent: fnCbType<T>;\r\n\r\n editorRoles: string[] = [];\r\n executeRoles: string[] = [];\r\n /** Список ролей, для которых скрыть элемент. */\r\n hideRoles: string[] = ['HIDE'];\r\n\r\n /** Загрузка данных. */\r\n loadData$: Subject<null> = new Subject<null>();\r\n /** Загрузка количества записей. */\r\n loadLength$: Subject<null> = new Subject<null>();\r\n /** Очистка фильтра. */\r\n clearFilter$: Subject<null> = new Subject<null>();\r\n\r\n /** Очистка фильтра (для очистки присвоить пустой объект '{}'). */\r\n clearFilter: any = null;\r\n\r\n /** Разрешен выбор нескольких строк. */\r\n allowMultiSelect = false;\r\n /** Выбранные строки в таблице. */\r\n selected: T[] = [];\r\n\r\n /** Состояние сортировки, пагинации. */\r\n tableState: ITableState;\r\n\r\n /** Доступность кнопки \"Изменить\". */\r\n editBtnDisabled = true;\r\n /** Доступность кнопки \"Удалить\". */\r\n removeBtnDisabled = true;\r\n\r\n /** Разрешено ли отправлять событие rowDoubleClicked при двойном щелчке мышью. */\r\n dblClickedEventEnable = true;\r\n\r\n // Список элементов контекстного меню.\r\n opt: IContextMenuOptions<T>[] = [];\r\n\r\n // DI\r\n protected router = inject(Router);\r\n /** Сервис для работы с LocalStorage. */\r\n protected localStorageService = inject(LocalStorageService);\r\n /** Сервис индиатор загрузки. */\r\n protected loaderService = inject(LoaderService);\r\n /** Сервис уведомлений. */\r\n protected alertService = inject(AlertService);\r\n /** Объект для отписки (вызывается метод unsubscribe при уничтожннии компонента). */\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n this.tableState = {\r\n sortActive: this.localStorageService.getData(this.constructor.name + 'SortActive') || '',\r\n sortDirection: (this.localStorageService.getData(this.constructor.name + 'SortDirection') || '') as SortDirection,\r\n pageIndex: Number(this.localStorageService.getData(this.constructor.name + 'PageIndex')) || this.defaultPageIndex,\r\n pageSize: Number(this.localStorageService.getData(this.constructor.name + 'PageSize')) || this.defaultPageSize\r\n };\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onPageChange(pageState: IPageState) {\r\n this.tableState.pageIndex = pageState.pageIndex;\r\n this.tableState.pageSize = pageState.pageSize;\r\n this.localStorageService.saveData(this.constructor.name + 'PageIndex', pageState.pageIndex.toString());\r\n this.localStorageService.saveData(this.constructor.name + 'PageSize', pageState.pageSize.toString());\r\n\r\n this.loadData$.next(null);\r\n this.loadLength$.next(null);\r\n }\r\n\r\n onSortChange(sortState: ISortState) {\r\n this.tableState.sortActive = sortState.sortActive;\r\n this.tableState.sortDirection = sortState.sortDirection;\r\n this.localStorageService.saveData(this.constructor.name + 'SortActive', sortState.sortActive);\r\n this.localStorageService.saveData(this.constructor.name + 'SortDirection', sortState.sortDirection);\r\n\r\n this.loadData$.next(null);\r\n this.loadLength$.next(null);\r\n }\r\n\r\n entityFactory(type: new () => T): T {\r\n return new type();\r\n }\r\n\r\n /** Cобытие изменение выбранных записей. */\r\n onSelectionChange(selected: T[]) {\r\n this.selected = selected;\r\n this.editBtnDisabledUpdate(this.selected);\r\n this.removeBtnDisabledUpdate(this.selected);\r\n }\r\n\r\n /** Обновление доступности кнопки \"Изменить\" - вызывается при изменении выбранных записей. */\r\n editBtnDisabledUpdate(selected: T[]) {\r\n this.editBtnDisabled = !(selected && selected.length === 1);\r\n }\r\n\r\n /** Обновление доступности кнопки \"Удалить\" - вызывается при изменении выбранных записей. */\r\n removeBtnDisabledUpdate(selected: T[]) {\r\n this.removeBtnDisabled = !(selected && selected.length > 0);\r\n }\r\n\r\n /** Cобытие двойной клик. */\r\n onRowDoubleClicked() {\r\n this.editEvent();\r\n }\r\n\r\n /** Cобытие создание. */\r\n newEvent() {\r\n if (this.entityEditComponent) {\r\n const data: IEditDialogData<T> = { action: Action.Add, entity: new this.entityType(null) };\r\n\r\n // Назначить значения полей объекта перед окрытием диалога.\r\n if (this.beforeOpenDialogOnNewEvent) {\r\n this.beforeOpenDialogOnNewEvent(data.entity, data.extraData);\r\n }\r\n\r\n // Открытие окна\r\n const dialogRef = this.openDialog(this.entityEditComponent, data, this.dialog);\r\n\r\n // Обработка закрытия окна\r\n const subs = dialogRef.afterClosed().subscribe((result: IEditDialogData<T>) => {\r\n // Проверка результата\r\n if (result && result.entity && (Object.keys(result.entity).length !== 0)) {\r\n // Дополнительные действия перед сохранением объекта.\r\n if (this.beforeSaveOnNewEvent)\r\n this.beforeSaveOnNewEvent(result.entity, result.extraData);\r\n\r\n const subs = this.entityService.newObject(result.entity)\r\n .subscribe({\r\n next: (obj: any) => {\r\n // Дополнительные действия после сохранения объекта.\r\n if (this.afterSaveOnNewEvent) {\r\n const callback = () => {\r\n this.refreshEvent();\r\n this.alertService.success('Запись добавлена.');\r\n }\r\n this.afterSaveOnNewEvent(callback.bind(this), obj, result.extraData);\r\n } else {\r\n this.refreshEvent();\r\n this.alertService.success('Запись добавлена.');\r\n }\r\n },\r\n error: (error: any) => {\r\n console.log('error', error);\r\n this.alertService.error('Произошла ошибка при добавлении записи: ' + error, 0);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n\r\n // Закрытие окна по нажатию Escape\r\n const subs2 = dialogRef.keydownEvents().subscribe((event: any) => {\r\n if (event.key === 'Escape') {\r\n dialogRef.close(null);\r\n }\r\n });\r\n this.subscription.add(subs2);\r\n } else {\r\n this.alertService.warning('Действие не доступно.');\r\n }\r\n }\r\n\r\n /** Cобытие редактирование. */\r\n editEvent() {\r\n if (this.selected && this.selected.length === 1) {\r\n if (this.entityEditComponent) {\r\n const data: IEditDialogData<T> = { action: Action.Edit, entity: this.selected[0] };\r\n\r\n // Назначить значения полей объекта перед окрытием диалога.\r\n if (this.beforeOpenDialogOnEditEvent) {\r\n this.beforeOpenDialogOnEditEvent(data.entity, data.extraData);\r\n }\r\n\r\n // Открытие окна\r\n const dialogRef = this.openDialog(this.entityEditComponent, data, this.dialog);\r\n\r\n // Обработка закрытия окна\r\n const subs = dialogRef.afterClosed().subscribe((result: IEditDialogData<T>) => {\r\n // Проверка результата\r\n if (result && result.entity && (Object.keys(result.entity).length !== 0)) {\r\n // Дополнительные действия перед сохранением объекта.\r\n if (this.beforeSaveOnEditEvent)\r\n this.beforeSaveOnEditEvent(result.entity, result.extraData);\r\n\r\n const subs = this.entityService.editObject(result.entity)\r\n .subscribe({\r\n next: () => {\r\n // Дополнительные действия после сохранения объекта.\r\n if (this.afterSaveOnEditEvent) {\r\n const callback = () => {\r\n this.refreshEvent();\r\n this.alertService.success('Запись изменена.');\r\n }\r\n this.afterSaveOnEditEvent(callback.bind(this), result.entity, result.extraData);\r\n } else {\r\n this.refreshEvent();\r\n this.alertService.success('Запись изменена.');\r\n }\r\n },\r\n error: (error: any) => {\r\n console.log('error', error);\r\n this.alertService.error('Произошла ошибка при изменении записи: ' + error, 0);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n\r\n // Закрытие окна по нажатию Escape\r\n const subs2 = dialogRef.keydownEvents().subscribe((event: any) => {\r\n if (event.key === 'Escape') {\r\n dialogRef.close(null);\r\n }\r\n });\r\n this.subscription.add(subs2);\r\n } else {\r\n this.alertService.warning('Действие не доступно.');\r\n }\r\n }\r\n }\r\n\r\n\r\n /** Cобытие удаление. */\r\n removeEvent() {\r\n // если вырбана запись(и)\r\n if (this.selected && this.selected.length > 0) {\r\n const dialogRef = this.openDialogRemoveConfirm(this.removalMessage);\r\n if (dialogRef) {\r\n const subs = dialogRef.afterClosed().subscribe((result: any) => {\r\n // при подтверждении возвращается 'delete'\r\n if (result === 'delete') {\r\n // готовим объект с запросами на удаление\r\n type tplotOptions = {\r\n [key: string]: ObservableInput<T>\r\n }\r\n const sourcesObject: ObjectKeys = {};\r\n this.selected.forEach((item, index) => sourcesObject['obj' + index] = this.entityService.deleteObject(item));\r\n // ждем, когда выполнятся все запросы\r\n const subs = forkJoin(sourcesObject)\r\n .subscribe({\r\n next: () => {\r\n this.refreshEvent();\r\n this.alertService.success('Выбранные записи удалены.');\r\n },\r\n error: (error: any) => {\r\n console.log('error', error);\r\n this.alertService.error('Произошла ошибка при удалении записи: ' + error, 0);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n });\r\n this.subscription.add(subs);\r\n\r\n // Закрытие окна по нажатию Escape\r\n const subs2 = dialogRef.keydownEvents().subscribe((event: any) => {\r\n if (event.key === 'Escape') {\r\n dialogRef.close(null);\r\n }\r\n });\r\n this.subscription.add(subs2);\r\n }\r\n }\r\n }\r\n\r\n /** Событие обновления данных. */\r\n refreshEvent() {\r\n this.loadData$.next(null);\r\n this.loadLength$.next(null);\r\n }\r\n\r\n /** Cобытие очистки фильтра. */\r\n clearEvent() {\r\n this.clearFilter$.next(null);\r\n this.clearFilter = {};\r\n }\r\n\r\n /** Изменение сообщения об удалении. */\r\n onRemovalMessageChange(message: string) {\r\n this.removalMessage = message;\r\n }\r\n\r\n /** Изменение заголовка страницы. */\r\n onPageTitleChange(title: string) {\r\n this.pageTitle = title;\r\n }\r\n\r\n openDialog(entityComponent: any, data: IEditDialogData<T>, dialog: any) {\r\n // create dialog config\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.width = this.dialogEditWidth;\r\n dialogConfig.data = data;\r\n dialogConfig.panelClass = this.entityType.name + '-edit-dialog';\r\n // return dialog\r\n return dialog.open(entityComponent, dialogConfig);\r\n }\r\n\r\n openDialogRemoveConfirm(removalMessage: string): MatDialogRef<DialogComponent> | undefined {\r\n let message = 'Вы хотите удалить ';\r\n message += removalMessage ?\r\n removalMessage :\r\n this.allowMultiSelect ? `выбранные записи (${this.selected.length})?` : 'выбранную запись?';\r\n return this.dialog?.open(DialogComponent, {\r\n width: this.dialogRemoveWidth,\r\n data: {\r\n id: 'delete',\r\n title: 'Подтверждение',\r\n message: message,\r\n btnNoTitle: 'Отмена',\r\n btnYesTitle: 'Удалить'\r\n }\r\n });\r\n }\r\n\r\n // contextMenu: Документы потока (в новой вкладке).\r\n protected onMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string) {\r\n return ($event: MouseEvent, item: T, contextMenu: MatMenuTrigger) => {\r\n // Нажата средняя кнопка (в новой вкладке).\r\n // 1 -\tAuxiliary button pressed (usually the middle button)\r\n if ($event.button === 1) {\r\n //$event.preventDefault();\r\n contextMenu.closeMenu();\r\n // Converts the route into a string that can be used\r\n // with the window.open() function\r\n const url = this.router.serializeUrl(\r\n queryParamName && queryParamValue ?\r\n this.router.createUrlTree([baseUrl], { queryParams: { [queryParamName]: item[queryParamValue as keyof T] } })\r\n : this.router.createUrlTree([baseUrl])\r\n );\r\n window.open(url, '_blank');\r\n }\r\n };\r\n }\r\n\r\n protected dateToString(date: string | number | Date) {\r\n return date ? (new Date(date)).toLocaleString('ru-RU', { timeZone: 'Europe/Samara' }) : null; // MSK+01\r\n }\r\n\r\n}\r\n\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseClass } from './base-class';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport abstract class BaseServiceClass<T extends BaseClass> {\r\n abstract baseRoute: string;\r\n abstract entityType: any;\r\n\r\n protected countRoute = 'count';\r\n\r\n protected pageIndexParam = 'page';\r\n protected pageSizeParam = 'limit';\r\n protected sortColumnParam = 'column';\r\n protected directionParam = 'direction';\r\n\r\n protected http = inject(HttpClient);\r\n\r\n getObjects(): Observable<T[]> {\r\n return this.http.get<T[]>(this.baseRoute)\r\n .pipe(map(data => data.map(item => new this.entityType(item).deserialize(item))));\r\n }\r\n\r\n getObject(id: number): any {\r\n return this.http.get<T>(this.baseRoute + id)\r\n .pipe(map(data => new this.entityType(data).deserialize(data)));\r\n }\r\n\r\n getCount(): Observable<number> {\r\n return this.http.get<number>(this.baseRoute + this.countRoute);\r\n }\r\n\r\n getObjectsByPaging(pageIndex: number, pageSize: number, sortColumn: string, direction: string): Observable<T[]> {\r\n const params = this.getParams(pageIndex, pageSize, sortColumn, direction);\r\n return this.http.get<T[]>(this.baseRoute, { params })\r\n .pipe(map(data => data.map(item => new this.entityType(item).deserialize(item))));\r\n }\r\n\r\n newObject(entity: T): any {\r\n return this.http.post(this.baseRoute, entity);\r\n }\r\n\r\n editObject(entity: T): any {\r\n return this.http.put(this.baseRoute + entity.id, entity);\r\n }\r\n\r\n deleteObject(entity: T): any {\r\n return this.http.delete(this.baseRoute + entity.id);\r\n }\r\n\r\n protected getParams(pageIndex: number, pageSize: number, sortColumn: string, direction: string): HttpParams {\r\n let params = new HttpParams();\r\n if (pageIndex)\r\n params = params.append(this.pageIndexParam, pageIndex);\r\n if (pageSize)\r\n params = params.append(this.pageSizeParam, pageSize);\r\n if (sortColumn)\r\n params = params.append(this.sortColumnParam, sortColumn);\r\n if (direction)\r\n params = params.append(this.directionParam, direction);\r\n return params;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RedirectGuard {\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n console.log(route.data['externalUrl']);\r\n\r\n window.location.href = route.data['externalUrl'];\r\n return true;\r\n }\r\n}\r\n","import { Deserializable } from './deserializable.model';\r\nimport { SecUserView } from './sec-user-view.model';\r\n\r\nexport class SecUser implements Deserializable {\r\n id: number = 0;\r\n login: string = '';\r\n fio: string = '';\r\n dept: number = 0;\r\n tabnum: number = 0;\r\n userView: SecUserView | undefined;\r\n\r\n public constructor(init: SecUser) {\r\n if (init) {\r\n Object.assign(this, init);\r\n } else {\r\n this.id = 0;\r\n this.login = '';\r\n this.dept = 0;\r\n this.tabnum = 0;\r\n this.fio = '';\r\n }\r\n }\r\n\r\n deserialize(input: any): this {\r\n Object.assign(this, input);\r\n return this;\r\n }\r\n}\r\n","import { inject, Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safe'\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n\r\n private readonly sanitizer = inject(DomSanitizer);\r\n\r\n transform(url: string) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'time'\n})\nexport class TimePipe implements PipeTransform {\n\n transform(value: number): string {\n // const hour = Math.abs(value) >= 60 ? Math.round(value / 60) + 'ч.' : '';\n // const minute = ' ' + Math.abs(value % 60) + 'м.';\n // return value === 0 ? '0' : hour + ' ' + minute;\n\n const hour = Math.abs(value) >= 60 ? Math.floor(Math.abs(value) / 60).toString().padStart(2,'0') : '00';\n const minute = Math.abs(value % 60).toString().padStart(2,'0');\n const time = hour + ':' + minute;\n return value < 0 ? '-' + time : time;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate'\n})\nexport class TruncatePipe implements PipeTransform {\n // Usage:\n // {{ str | truncate:[20] }} // or\n // {{ str | truncate:[20, '...'] }} // or|\n transform(value: string, args: any[]): string {\n const limit = args.length > 0 ? parseInt(args[0], 10) : 20;\n const trail = args.length > 1 ? args[1] : '...';\n return value.length > limit ? value.substring(0, limit) + trail : value;\n }\n\n}\n","import { COMMA, ENTER } from \"@angular/cdk/keycodes\";\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { Component, effect, ElementRef, input, output, viewChild } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent, MatOption } from \"@angular/material/autocomplete\";\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { Observable, startWith } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\nimport { ChipItem } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-chip-input-autocomplete',\r\n templateUrl: './chip-input-autocomplete.component.html',\r\n styleUrl: './chip-input-autocomplete.component.css',\r\n imports: [MatFormField, AsyncPipe, FormsModule, ReactiveFormsModule, MatAutocompleteModule, MatIcon, MatOption,\r\n MatChipsModule, MatLabel]\r\n})\r\nexport class BaseMatChipComponent {\r\n\r\n // Все элементы\r\n items = input<ChipItem[]>([]);\r\n // Выбранные элементы, ключи (ChipItem.value)\r\n selectedItemsInput = input<string[]>([]);\r\n // Заголовок\r\n title = input<string>('');\r\n // Событие изменения выбранных элементов\r\n selectedItemsChange = output<string[]>();\r\n\r\n readonly input = viewChild<ElementRef<HTMLInputElement>>('input');\r\n\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n inputCtrl = new FormControl();\r\n filteredItems$?: Observable<ChipItem[]>;\r\n selectedItems: ChipItem[] = [];\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.items().length > 0) {\r\n this.filteredItems$ = this.inputCtrl.valueChanges.pipe(\r\n startWith(null),\r\n map(item => (item ? this._filter(item) : this.items().slice())),\r\n );\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (this.selectedItemsInput())\r\n this.selectedItems = this.items().filter(s => this.selectedItemsInput().includes(s.value));\r\n });\r\n }\r\n\r\n remove(value: string): void {\r\n this.selectedItems = [...this.selectedItems];\r\n const index = this.selectedItems.map(i => i.value).indexOf(value);\r\n if (index >= 0) {\r\n this.selectedItems.splice(index, 1);\r\n this.selectedItemsChange.emit(this.selectedItems.map(i => i.value));\r\n }\r\n }\r\n\r\n selected(event: MatAutocompleteSelectedEvent): void {\r\n this.selectedItems = [...this.selectedItems];\r\n const item = this.items().find(s => s.value == event.option.value)\r\n if (item) {\r\n this.selectedItems.push(item);\r\n }\r\n this.selectedItemsChange.emit(this.selectedItems.map(i => i.value));\r\n const inputValue = this.input();\n if (inputValue)\r\n inputValue.nativeElement.value = '';\r\n this.inputCtrl.setValue(null);\r\n }\r\n\r\n private _filter(value: string): ChipItem[] {\r\n const filterValue = value.toLowerCase();\r\n return this.items().filter(item => item.viewValue.toLowerCase().includes(filterValue));\r\n }\r\n\r\n onCloseClick($event: MouseEvent) {\r\n $event.stopPropagation();\r\n this.selectedItemsChange.emit([]);\r\n }\r\n}\r\n","<mat-form-field class=\"chip-list\" appearance=\"fill\">\r\n <mat-label>{{ title() }}</mat-label>\r\n <mat-chip-grid #chipList aria-label=\"'Выбор '+title()\">\r\n @for (item of selectedItems; track item) {\r\n <mat-chip-row color=\"primary\"\r\n (removed)=\"remove(item.value)\">\r\n {{ item.viewValue }}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n </mat-chip-grid>\r\n <input\r\n #input\r\n [placeholder]=\"'Введите '+title()+'...'\"\r\n [formControl]=\"inputCtrl\"\r\n [matAutocomplete]=\"auto\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n >\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\r\n @for (item of filteredItems$ | async; track item) {\r\n <mat-option [value]=\"item.value\"\r\n [disabled]=\"selectedItemsInput()?.includes(item.value)\">\r\n {{ item.viewValue }}\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (selectedItems.length > 0) {\r\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onCloseClick($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n</mat-form-field>\r\n","import moment from \"moment\";\r\n\r\nexport interface DateRange {\r\n begin: string;\r\n end: string;\r\n}\r\n\r\nexport function dateFormat(date: Date): string {\r\n if (date)\r\n return moment(date).format(\"YYYY-MM-DD\")\r\n else\r\n return '';\r\n}\r\n","// See the Moment.js docs for the meaning of these formats:\r\n// https://momentjs.com/docs/#/displaying/format/\r\nexport const MY_FORMATS = {\r\n parse: {\r\n dateInput: 'DD.MM.YYYY',\r\n },\r\n display: {\r\n dateInput: 'DD.MM.YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n };","import { Component, effect, input, OnDestroy, OnInit, output } from '@angular/core';\r\nimport { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatDatepickerToggle, MatDateRangeInput, MatDateRangePicker, MatEndDate, MatStartDate } from '@angular/material/datepicker';\r\nimport { MatError, MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\r\nimport 'moment/locale/ru';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { dateFormat, DateRange, MY_FORMATS } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-date-range-input',\r\n templateUrl: './date-range-input.component.html',\r\n styleUrls: ['./date-range-input.component.scss'],\r\n imports: [MatFormField, MatLabel, MatDateRangeInput, FormsModule, ReactiveFormsModule, MatStartDate, MatEndDate,\r\n MatDatepickerToggle, MatSuffix, MatDateRangePicker, MatError],\r\n providers: [\r\n { provide: MAT_DATE_LOCALE, useValue: 'ru' },\r\n { provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },\r\n ]\r\n})\r\nexport class DateRangeInputComponent implements OnInit, OnDestroy {\r\n label = input<string>('');\r\n dateRange = input<DateRange>(<DateRange>{ begin: '', end: '' });\r\n // eslint-disable-next-line no-magic-numbers\r\n minDate = input<Date>(new Date(2020, 0, 1));\r\n clearInput = input<any>(null);\r\n required = input<boolean>(false);\r\n dateRangeChange = output<DateRange>();\r\n\r\n form = new FormGroup({\r\n begin: new FormControl(),\r\n end: new FormControl(),\r\n });\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.clearInput())\r\n this.form.reset();\r\n });\r\n\r\n effect(() => {\r\n const value = this.dateRange();\r\n if (this.form) {\r\n this.form.controls['begin'].setValue(value.begin ? new Date(value.begin) : null);\r\n this.form.controls['end'].setValue(value.end ? new Date(value.begin) : null);\r\n }\r\n this.dateRangeChange.emit(this.rangeToDateDateRange(this.form.value));\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.required()) {\r\n this.form.controls['begin'].addValidators(Validators.required);\r\n this.form.controls['end'].addValidators(Validators.required);\r\n }\r\n\r\n // подписка на изменение периода\r\n this.form.valueChanges\r\n .pipe(\r\n // eslint-disable-next-line no-magic-numbers\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n )\r\n .subscribe({\r\n next: range => {\r\n if (this.required()) {\r\n if (range.begin && range.end) {\r\n this.dateRangeChange.emit(this.rangeToDateDateRange(range));\r\n }\r\n } else {\r\n this.dateRangeChange.emit(this.rangeToDateDateRange(range));\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private rangeToDateDateRange(range: Partial<{ begin: Date; end: Date }>): DateRange {\r\n return {\r\n begin: range.begin ? dateFormat(range.begin) : '',\r\n end: range.end ? dateFormat(range.end) : ''\r\n };\r\n }\r\n\r\n}\r\n","<mat-form-field appearance=\"fill\">\n <mat-label>{{label()}}</mat-label>\n <mat-date-range-input\n [rangePicker]=\"picker\"\n [formGroup]=\"form\"\n [min]=\"minDate()\">\n <input matStartDate formControlName=\"begin\" placeholder=\"Дата начала\">\n <input matEndDate formControlName=\"end\" placeholder=\"Дата окончания\">\n </mat-date-range-input>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error>Укажите период</mat-error>\n</mat-form-field>\n\n","export enum DialogAction {\r\n Add = 'Добавить',\r\n Edit = 'Изменить',\r\n Delete = 'Удалить',\r\n None = ''\r\n }","import { AsyncPipe } from '@angular/common';\r\nimport { Component, inject } from '@angular/core';\r\nimport { MatAnchor } from '@angular/material/button';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { AuthService, UserService } from '../../auth';\r\nimport { BaseNavBarMenuClass } from '../../base';\r\nimport { SafePipe } from '../../pipes';\r\nimport { AvatarService } from '../../services';\r\nimport { DialogComponent } from '../dialog';\r\n\r\n@Component({\r\n selector: 'ngx-uik-navbar',\r\n templateUrl: 'navbar.html',\r\n styleUrls: ['./navbar.scss'],\r\n imports: [MatAnchor, MatIcon, MatTooltip,\n AsyncPipe, SafePipe]\r\n})\r\nexport class NavBarComponent extends BaseNavBarMenuClass {\r\n loggedIn$: BehaviorSubject<boolean>;\r\n roles$: BehaviorSubject<string[]>;\r\n fioUser = '';\r\n photoURL: string = '';\r\n\r\n private readonly authService = inject(AuthService);\r\n private readonly userService = inject(UserService);\r\n private readonly avatarService = inject(AvatarService);\r\n private readonly dialog = inject(MatDialog);\r\n\r\n constructor() {\r\n super();\r\n this.loggedIn$ = this.authService.loggedIn$;\r\n this.roles$ = this.authService.roles$;\r\n\r\n this.fioUser = '';\r\n\r\n const subs = this.loggedIn$.subscribe({\r\n next: (value: boolean) => {\r\n if (value) {\r\n if (this.userService.userData) {\r\n if (this.userService.userData.lastName && this.userService.userData.firstName) {\r\n this.fioUser = this.userService.userData.lastName + ' ' + this.userService.userData.firstName;\r\n }\r\n if (this.userService.userData.idHuman) {\r\n // Аватар сотрудника.\r\n const subs2 = this.avatarService.getAvatarById(Number(this.userService.userData.idHuman))\r\n .subscribe((image: ArrayBuffer) => {\r\n if (image) {\r\n const blob = new Blob([image], { \"type\": \"image/jpeg\" });\r\n this.photoURL = URL.createObjectURL(blob);\r\n }\r\n });\r\n this.subscription.add(subs2);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n logout() {\r\n this.authService.logout(this.router.url);\r\n }\r\n\r\n openDialog(): void {\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n width: '400px',\r\n data: {\r\n id: 'logout',\r\n title: 'Подтверждение',\r\n message: 'Вы хотите выйти?',\r\n btnNoTitle: 'Отмена',\r\n btnYesTitle: 'Выйти'\r\n }\r\n });\r\n\r\n const subs = dialogRef.afterClosed().subscribe((id: any) => {\r\n if (id) {\r\n this.logout();\r\n }\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n}\r\n","@if (loggedIn$ | async) {\r\n <nav class=\"ngx-uik-navbar-header\">\r\n \r\n <ng-content></ng-content>\r\n\r\n <div class=\"flex-spacer\"></div>\r\n \r\n @if ((loggedIn$ | async) === false || !photoURL) {\r\n <mat-icon [matTooltip]=\"(roles$ | async)?.join(',')||''\">account_circle</mat-icon>\r\n }\r\n @if ((loggedIn$ | async) && photoURL) {\r\n <img\r\n class=\"user-photo\"\r\n [src]=\"photoURL | safe\"\r\n loading=\"lazy\"\r\n [alt]=\"fioUser\"\r\n [matTooltip]=\"(roles$ | async)?.join(',')||''\">\r\n }\r\n\r\n <span class = \"user-name\" [matTooltip]=\"(roles$ | async)?.join(',') || ''\">\r\n {{ fioUser }}\r\n </span>\r\n\r\n <a mat-button class=\"pm-button\" (click)=\"openDialog()\">Выйти <mat-icon>logout</mat-icon></a>\r\n </nav>\r\n}","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ngx-uik-not-found',\r\n templateUrl: './not-found.component.html',\r\n styleUrls: ['./not-found.component.css'],\r\n standalone: true\r\n})\r\nexport class NotFoundComponent {\r\n\r\n}\r\n","<div class=\"center\">\r\n <h3 class=\"mat-display-1\">Страница не найдена</h3>\r\n</div>\r\n","import { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { Component, effect, input, linkedSignal, OnDestroy, OnInit, output } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule, MatOption } from '@angular/material/autocomplete';\r\nimport { MatError, MatFormField, MatHint, MatLabel } from '@angular/material/form-field';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith } from 'rxjs/operators';\r\n\r\nimport { SelectItem } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-select-autocomplete-with-vs',\r\n templateUrl: './select-autocomplete-with-vs.component.html',\r\n styleUrl: './select-autocomplete-with-vs.component.css',\r\n imports: [FormsModule, ReactiveFormsModule, MatAutocompleteModule, MatHint, MatError, MatOption, MatIcon,\r\n MatFormField, ScrollingModule, MatInput, MatLabel]\r\n})\r\nexport class BaseSelectAutocompleteWithVsComponent implements OnInit, OnDestroy {\r\n // https://stackblitz.com/edit/autocomplete-with-virtual-scroll-dc9u2g\r\n\r\n // Все элементы\r\n items = input<SelectItem[]>([]);\r\n // Выбранный элемент (входной параметр)\r\n selectedItemInput = input<SelectItem | undefined>(undefined);\r\n // Заголовок\r\n title = input<string>('');\r\n // Видимость\r\n isVisible = input<boolean>(true);\r\n // Обязательность\r\n isRequired = input<boolean>(false);\r\n // Доступность\r\n isDisabled = input<boolean>(false);\r\n // Доступность\r\n width = input<string>('200');\r\n\r\n // Выбранный элемент\r\n selectedItem = linkedSignal(() => this.selectedItemInput());\r\n // Событие изменения выбранного элемента\r\n selectedItemChange = output<string>();\r\n\r\n public height: string = '200px';\r\n // input элемент\r\n inputCtrl = new FormControl();\r\n // отфильтрованные (отображаемые) элементы\r\n filteredItems: SelectItem[] = [];\r\n\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n effect(() => {\r\n console.log('ITEMS =', this.items());\r\n //this.filteredItems = this.items();\r\n\r\n console.log('selectedItem =', this.selectedItemInput());\r\n if (this.items().length > 0) {\r\n console.log('filteredItems SET');\r\n this.setFileredItems(this.items());\r\n this.inputCtrl.setValue(this.selectedItemInput());\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n // Listen for changes to the input\r\n const subs = this.inputCtrl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n // eslint-disable-next-line no-magic-numbers\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n // Note: If the option value is bound to object, after selecting the option\r\n // Note: the value will change from string to {}. We want to perform search\r\n // Note: only when the type is string (no match)\r\n //filter(q => typeof q === 'string'),\r\n //tap((v) => console.log('v=', v)),\r\n map((value) => {\r\n // Filter the options\r\n console.log('typeof value =', typeof value);\r\n\r\n if (typeof value === 'undefined') {\r\n this.setFileredItems(this.items());\r\n } else {\r\n if (typeof value !== 'object') {\r\n console.log('v1=', value);\r\n this.setFileredItems(this.items()\r\n .filter(option => option.viewValue.toLowerCase().includes(value.toLowerCase())));\r\n } else {\r\n // typeof value === 'object'\r\n console.log('v2=', value);\r\n if (value) {\r\n // this.predmet = value;\r\n this.setFileredItems(this.items()\r\n .filter((option) => option.viewValue.toLowerCase().includes(value.viewValue.toLowerCase())));\r\n console.log('v3=', value);\r\n } else {\r\n this.setFileredItems(this.items());\r\n console.log('v4=', value);\r\n }\r\n }\r\n }\r\n\r\n })\r\n )\r\n .subscribe();\r\n this.subscription.add(subs);\r\n\r\n if (this.isDisabled()) {\r\n this.inputCtrl.disable();\r\n } else {\r\n this.inputCtrl.enable();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onSelectedItemChange(item: any) {\r\n console.log(\"onSelectedItemChange, item=\", item);\r\n this.selectedItem.set(item);\r\n this.selectedItemChange.emit(item);\r\n }\r\n\r\n onClearClick($event: MouseEvent) {\r\n $event.stopPropagation();\r\n this.inputCtrl.setValue('');\r\n }\r\n\r\n displayWithFn(lookup: any) {\r\n return lookup ? lookup.viewValue : null;\r\n }\r\n\r\n private setFileredItems(items: SelectItem[]) {\r\n this.filteredItems = items;\r\n // Recompute how big the viewport should be.\r\n // eslint-disable-next-line no-magic-numbers\r\n if (items.length < 4) {\r\n // eslint-disable-next-line no-magic-numbers\r\n this.height = items.length * 50 + 'px';\r\n } else {\r\n this.height = '200px';\r\n }\r\n console.log('update filteredItems =', this.filteredItems);\r\n }\r\n}\r\n","@if (isVisible()) {\r\n <mat-form-field [style.width.px]=\"width()\">\r\n <mat-label>{{ title() }}</mat-label>\r\n <input type=\"text\"\r\n [placeholder]=title()\r\n aria-label=\"Number\"\r\n matInput\r\n (ngModelChange)=\"onSelectedItemChange($event)\"\r\n [formControl]=\"inputCtrl\"\r\n [matAutocomplete]=\"auto\"\r\n [required]=\"isRequired() ? 'required' : ''\"\r\n >\r\n @if (!isDisabled && selectedItem()) {\r\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearClick($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayWithFn\" showPanel=\"true\">\r\n <cdk-virtual-scroll-viewport class=\"autocomplete-test-viewport\" [style.height]=\"height\" itemSize=\"25\">\r\n <mat-option *cdkVirtualFor=\"let option of filteredItems\" [value]=\"option\" class=\"autocomplete-item\">\r\n {{option.viewValue}}\r\n </mat-option>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n @if (inputCtrl.invalid) {\r\n <mat-error>Введите {{title()}}</mat-error>\r\n }\r\n @if (!inputCtrl.value) {\r\n <mat-hint>Начните вводить ...</mat-hint>\r\n }\r\n </mat-form-field>\r\n}","import { COMMA, ENTER } from \"@angular/cdk/keycodes\";\r\n\r\nimport { Component, effect, input, output } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { MatOptgroup, MatOption } from '@angular/material/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatFormField, MatLabel, MatSelect } from '@angular/material/select';\r\n\r\nimport { SelectGroup } from './models';\r\n\r\n@Component({\r\n selector: 'ngx-uik-select-with-group',\r\n templateUrl: './select-with-group.component.html',\r\n styleUrls: ['./select-with-group.component.css'],\r\n imports: [FormsModule, ReactiveFormsModule, MatIcon, MatOption, MatOptgroup, MatSelect, MatFormField, MatLabel]\r\n})\r\nexport class BaseSelectWithGroupComponent {\r\n\r\n // Все группы\r\n groups = input<SelectGroup[]>([]);\r\n // Выбранные элементы, ключи (BaseSelectItem.value)\r\n selectedItems = input<string[]>([]);\r\n // Заголовок\r\n title = input<string>('');\r\n // Событие изменения выбранных элементов\r\n selectedItemsChange = output<string[]>();\r\n\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n control = new FormControl<number[]>([]);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.groups().length > 0) {\r\n this.control.setValue(this.selectedItems().map(i => Number(i)));\r\n }\r\n });\r\n }\r\n\r\n selectionChange($event: any) {\r\n this.selectedItemsChange.emit($event.value.map((i: number) => i.toString()));\r\n }\r\n\r\n onClearClick($event: MouseEvent) {\r\n $event.stopPropagation();\r\n // this.control.setValue('');\r\n this.selectedItemsChange.emit([]);\r\n }\r\n}\r\n","<mat-form-field class=\"select-with-group\" appearance=\"fill\">\r\n <mat-label>{{ title() }}</mat-label>\r\n <mat-select [formControl]=\"control\" (selectionChange)=\"selectionChange($event)\" multiple>\r\n @for (group of groups(); track group) {\r\n <mat-optgroup [label]=\"group.name\">\r\n @for (item of group.items; track item) {\r\n <mat-option [value]=\"item.value\" >\r\n {{item.viewValue}}\r\n </mat-option>\r\n }\r\n </mat-optgroup>\r\n }\r\n\r\n </mat-select>\r\n @if (control.value && control.value!.length > 0) {\r\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearClick($event)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n</mat-form-field>\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { AfterViewInit, Component, OnDestroy, OnInit, effect, inject, input, linkedSignal, output, viewChild } from '@angular/core';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MatDivider } from '@angular/material/divider';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, MatSortHeader } from '@angular/material/sort';\r\nimport {\r\n MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef,\r\n MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRow, MatRowDef,\r\n MatTable, MatTableDataSource, MatTableModule\r\n} from '@angular/material/table';\r\nimport { RouterLink } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { AuthService } from '../../auth';\r\nimport { IColumnOptions } from './models/column-options.interface';\r\nimport { IContextMenuOptions } from './models/context-menu-options.interface';\r\nimport { IPageState, ISortState, ITableState } from './models/table-state';\r\n\r\n@Component({\r\n selector: 'ngx-uik-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.css'],\r\n imports: [MatTable, MatSort, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCheckbox, MatCellDef, MatCell,\r\n MatSortHeader, MatIcon, RouterLink, MatNoDataRow, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow,\r\n MatMenuTrigger, MatMenu, MatMenuContent, MatDivider, MatMenuItem, MatPaginator, MatFooterRowDef, MatFooterRow,\r\n MatFooterCellDef, MatFooterCell, MatTableModule]\r\n})\r\nexport class TableComponent<T> implements OnInit, AfterViewInit, OnDestroy {\r\n /** Отображаемые данные. */\r\n data = input<T[]>([]);\r\n /** Количество записей. */\r\n length = input<number>(0);\r\n /** Настройки колонок. */\r\n columnOptions = input<IColumnOptions[]>([]);\r\n /** Состояние сортировки, пагинации. */\r\n tableState = input.required<ITableState>();\r\n /** Разрешен выбор нескольких строк. */\r\n allowMultiSelect = input<boolean>(false);\r\n /** Список элементов контекстного меню. */\r\n opt = input<IContextMenuOptions<T>[]>([]);\r\n /** Роли которым разрешено отправлять событие rowDoubleClicked при двойном щелчке мышью. */\r\n rolesDblClickedEvent = input<string[]>([]);\r\n /** Отображать строку с итогом. */\r\n footer = input<boolean>(false);\r\n\r\n /** Изменение страницы. */\r\n pageStateChange = output<IPageState>();\r\n /** Изменение сортировки. */\r\n sortStateChange = output<ISortState>();\r\n /** Изменение выбранных записей. */\r\n selectionChange = output<T[]>();\r\n /** Двойной щелчек ЛКМ*/\r\n rowDoubleClicked = output<T>();\r\n\r\n readonly sort = viewChild(MatSort);\r\n readonly paginator = viewChild(MatPaginator);\r\n readonly contextMenu = viewChild(MatMenuTrigger);\r\n\r\n pageState = linkedSignal<IPageState>(() => {\r\n return { pageIndex: this.tableState().pageIndex, pageSize: this.tableState().pageSize };\r\n });\r\n\r\n sortState = linkedSignal<ISortState>(() => {\r\n return { sortActive: this.tableState().sortActive, sortDirection: this.tableState().sortDirection };\r\n });\r\n\r\n /** Выбранная строка, для которого будет показываться меню при нажатии правой кнопки мыши. */\r\n itemForMenu?: T;\r\n /** Позиция в которой отображается контекстное меню. */\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultPageIndex = 0;\r\n // eslint-disable-next-line no-magic-numbers\r\n defaultPageSize = 10;\r\n\r\n /** Источник данных для отображения. */\r\n dataSource = new MatTableDataSource<T>();\r\n\r\n /** Выбранные записи. */\r\n selection: SelectionModel<T> = new SelectionModel<T>();\r\n\r\n /** Список отображаемых колонок (формируется из @columnOptions). */\r\n displayedColumns?: string[];\r\n\r\n // DI\r\n protected authService = inject(AuthService);\r\n\r\n // Разрешено ли отправлять событие rowDoubleClicked при двойном щелчке мышью.\r\n dblClickedEventEnable = true;\r\n\r\n subscription = new Subscription();\r\n\r\n constructor() {\r\n effect(() => {\r\n this.dataSource.data = this.data();\r\n\r\n // сохранить выделенные строки, если они все еще есть в данных\r\n const selected = this.selection.selected;\r\n this.selection.clear();\r\n this.data().filter(v => selected.map(s => JSON.stringify(s)).includes(JSON.stringify(v))).map(d => {\r\n this.selection.select(d);\r\n });\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n // получить права пользователя\r\n const subs = this.authService.roles$.subscribe((userRoles) => {\r\n this.dblClickedEventEnable = !this.authService.isHideElement(this.rolesDblClickedEvent(), userRoles);\r\n });\r\n this.subscription.add(subs);\r\n\r\n this.displayedColumns = ['select'].concat(this.columnOptions()?.filter(c => !c.hide).map((item) => item.name) || []);\r\n\r\n // пересоздаем, т.к. параметр allowMultiSelect появляется только сейчас\r\n this.selection = new SelectionModel<T>(this.allowMultiSelect());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n // подписи элементов управления пагинатора (MatPaginatorIntl)\r\n const paginator = this.paginator();\n if (paginator) {\r\n paginator._intl.itemsPerPageLabel = 'Записей на странице';\r\n paginator._intl.firstPageLabel = 'Первая страница';\r\n paginator._intl.previousPageLabel = 'Предыдущая страница';\r\n paginator._intl.nextPageLabel = 'Следующая страница';\r\n paginator._intl.lastPageLabel = 'Последняя страница';\r\n\r\n // изменение пагинации\r\n const subs = paginator.page.subscribe(page => {\r\n const pageState = {\r\n pageIndex: page.pageIndex,\r\n pageSize: page.pageSize\r\n } as IPageState;\r\n this.pageState.set(pageState);\r\n this.pageStateChange.emit(pageState);\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n // изменение сортировки\r\n const sortValue = this.sort();\n if (sortValue) {\r\n const subs = sortValue.sortChange\r\n .subscribe(sort => {\r\n const sortState = {\r\n sortActive: sort.active,\r\n sortDirection: sort.direction\r\n } as ISortState;\r\n this.sortState.set(sortState);\r\n this.sortStateChange.emit(sortState);\r\n });\r\n this.subscription.add(subs);\r\n }\r\n\r\n // изменение выбранных записей\r\n if (this.selection) {\r\n const subs = this.selection.changed.subscribe(change => {\r\n this.selectionChange.emit(change.source.selected);\r\n });\r\n this.subscription.add(subs);\r\n }\r\n }\r\n\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n console.log(this.selection.isMultipleSelection());\r\n if (this.isAllSelected()) {\r\n this.selection.clear();\r\n } else {\r\n this.dataSource.data.forEach(row => this.selection.select(row));\r\n }\r\n }\r\n\r\n /** При щелчке по строке. */\r\n onRowClicked(row: T) {\r\n // выделение строки при щелчке по строке\r\n if (this.selection.isSelected(row)) {\r\n this.selection.deselect(row);\r\n } else {\r\n this.selection.select(row);\r\n }\r\n }\r\n\r\n /** При двойном щелчке по строке. */\r\n onRowDblClicked(row: T) {\r\n // выделение строки при двойном щелчке по строке\r\n this.selection.clear();\r\n this.selection.select(row);\r\n if (this.dblClickedEventEnable)\r\n this.rowDoubleClicked.emit(row);\r\n }\r\n\r\n /** При вызове контекстного меню. */\r\n onContextMenu(event: MouseEvent, itemForMenu: T | undefined) {\r\n if (this.opt() && this.opt().length === 0) {\r\n // если нет пунктов меню, то не показываем меню\r\n return;\r\n }\r\n event.preventDefault();\r\n this.itemForMenu = itemForMenu;\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n // как это (menuData) использовать в шаблоне не понятно, поэтому использую this.itemForMenu\r\n // https://www.concretepage.com/angular-material/passing-data-to-mat-menu-angular-material\r\n const contextMenu = this.contextMenu();\n if (contextMenu) {\r\n contextMenu.menuData = { itemForMenu };\r\n contextMenu.menu?.focusFirstItem('mouse');\r\n contextMenu.openMenu();\r\n }\r\n }\r\n\r\n getTotal(columnName: string) {\r\n const arr = this.dataSource.data\r\n .filter(t => typeof t[columnName as keyof T] === 'number')\r\n .map(t => t[columnName as keyof T]);\r\n if (arr.length === 0)\r\n return ''\r\n else\r\n return arr.reduce((acc, value) => acc + <number>value, 0);\r\n }\r\n}\r\n","<div class=\"component-container\">\r\n <div class=\"table-container\">\r\n <table mat-table [dataSource]=\"dataSource\"\r\n matSort\r\n [matSortActive]=\"sortState().sortActive || ''\"\r\n [matSortDirection]=\"sortState().sortDirection\"\r\n matSortDisableClear>\r\n\r\n <!-- Выбор строки Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n @if (allowMultiSelect()) {\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\">\r\n </mat-checkbox>\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n }\r\n </ng-container>\r\n\r\n @for (item of columnOptions(); track item) {\r\n <ng-container matColumnDef={{item.name}}>\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header [disabled]=\"item.titleSortDisable\">{{item.title}}</th>\r\n @if (!item.format) {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n {{element[item.name]}}\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footer) {\r\n <strong>{{ getTotal(item.name) }}</strong>\r\n }\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n } \r\n }\r\n @if (item.format === 'pre-wrap') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\" class=\"pre-wrap\">\r\n {{element[item.name]}}\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'link') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n <a [href]=\"element[item.name]\" target=\"_blank\">{{element[item.name]}}</a>\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'linkIcon') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n @if (element[item.name]) {\r\n <a [href]=\"element[item.name]\" target=\"_blank\">\r\n @if (item.icon) {\r\n <mat-icon>{{item.icon}}</mat-icon>\r\n } \r\n @if (item.symbol) {\r\n <span class=\"material-symbols-outlined-light\">{{item.symbol}}</span>\r\n }\r\n </a>\r\n }\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'routerLink') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n <a [routerLink]=\"[element[item.name]]\">{{element[item.name]}}</a>\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'routerLinkIcon') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n @if (element[item.name]) {\r\n <a [routerLink]=\"[element[item.name]]\">\r\n @if (item.icon) {\r\n <mat-icon>{{item.icon}}</mat-icon>\r\n } \r\n @if (item.symbol) {\r\n <span class=\"material-symbols-outlined-light\">{{item.symbol}}</span>\r\n }\r\n </a>\r\n }\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n @if (item.format === 'checkbox') {\r\n <td mat-cell *matCellDef=\"let element\" (contextmenu)=\"onContextMenu($event, element)\">\r\n <mat-checkbox [checked]=\"element[item.name] === 1\" [disabled]=\"true\"></mat-checkbox>\r\n </td>\r\n @if (footer()) {\r\n <td mat-footer-cell *matFooterCellDef>\r\n @if (item.footerTitle) {\r\n <strong>{{ item.footerTitle }}</strong>\r\n }\r\n </td>\r\n }\r\n }\r\n </ng-container>\r\n }\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" colspan=\"9999\">\r\n Нет данных для отображения\r\n </td>\r\n </tr>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" \r\n (click)=\"onRowClicked(row)\" (dblclick)=\"onRowDblClicked(row)\" \r\n class=\"element-row\" [class.selected-row]=\"selection.isSelected(row)\">\r\n </tr>\r\n @if (footer()) {\r\n <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\r\n }\r\n </table>\r\n <div style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\" #menuTrigger=\"matMenuTrigger\">\r\n </div>\r\n <mat-menu #contextMenu=\"matMenu\">\r\n <ng-template matMenuContent let-id=\"id\">\r\n @for (menuItem of opt(); track menuItem) {\r\n @if (menuItem.title === '-' && !(menuItem.hideFn ? menuItem.hideFn(itemForMenu) : menuItem.hide)) {\r\n <mat-divider></mat-divider>\r\n }\r\n @if (menuItem.title !== '-' && !(menuItem.hideFn ? menuItem.hideFn(itemForMenu) : menuItem.hide)) {\r\n <button mat-menu-item\r\n (click)=\"menuItem.onClickFn ? menuItem.onClickFn(itemForMenu) : ''\"\r\n (mousedown)=\"menuItem.onClickMiddleFn ? menuItem.onClickMiddleFn($event, itemForMenu, menuTrigger) : ''\"\r\n [disabled]=\"menuItem.disabledFn ? menuItem.disabledFn(itemForMenu) : menuItem.disabled\">\r\n @if (menuItem.icon) {\r\n <mat-icon>{{menuItem.icon}}</mat-icon>\r\n }\r\n @if (menuItem.symbol) {\r\n <span class=\"material-symbols-outlined-light\">{{menuItem.symbol}}</span>\r\n }\r\n {{ menuItem.title }}\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n</div>\r\n\r\n\r\n<mat-paginator [length]=\"length()\"\r\n [pageIndex]=\"pageState().pageIndex || defaultPageIndex\"\r\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\r\n [pageSize]=\"pageState().pageSize || defaultPageSize\"\r\n showFirstLastButtons\r\n itemsPerPageLabel=\"\"\r\n></mat-paginator>\r\n</div>\r\n","/*\r\n * Public API Surface of uikit\r\n */\r\n\r\nexport * from './auth';\r\nexport * from './base';\r\nexport * from './core';\r\nexport * from './guards';\r\nexport * from './loader';\r\nexport * from './models';\r\nexport * from './pipes';\r\nexport * from './services';\r\nexport * from './shared';\r\nexport * from './types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["startWith","i4","MatOption","MatFormField","MatLabel"],"mappings":"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"}
|