/
tisit
/
FUXA_SCADA
Обзор
Документация
Войти
/
tisit
/
FUXA_SCADA
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
client/src/app/scripts/script-permission/script-permission.component.ts
82 строки
3 KB
Umberto Nocelli
Upgrade Angular from v16 to v17 (#2113)
08 янв 2026, 21:56
Не верифицирован
08 янв 2026, 21:56
905235d
Код
Авторство
О чём код?
import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { SelOptionType, SelOptionsComponent } from '../../gui-helpers/sel-options/sel-options.component'; import { Role, UserGroups } from '../../_models/user'; import { SettingsService } from '../../_services/settings.service'; import { UserService } from '../../_services/user.service'; import { Subject, map, takeUntil } from 'rxjs'; import { UserInfo } from '../../users/user-edit/user-edit.component'; import { MatDialogRef as MatDialogRef, MAT_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/dialog'; @Component({ selector: 'app-script-permission', templateUrl: './script-permission.component.html', styleUrls: ['./script-permission.component.css'] }) export class ScriptPermissionComponent implements OnInit, OnDestroy { userInfo: UserInfo; selected = []; options = []; @ViewChild(SelOptionsComponent, {static: false}) seloptions: SelOptionsComponent; private destroy$ = new Subject<void>(); constructor(public dialogRef: MatDialogRef<ScriptPermissionComponent>, @Inject(MAT_DIALOG_DATA) public data: ScriptPermissionData, private cdr: ChangeDetectorRef, private userService: UserService, private settingsService: SettingsService) { } ngOnInit() { if (this.isRolePermission()) { this.userService.getRoles().pipe( map(roles => roles.sort((a, b) => a.index - b.index)), takeUntil(this.destroy$) ).subscribe((roles: Role[]) => { this.options = roles?.map(role => <SelOptionType>{ id: role.id, label: role.name }); this.selected = this.options.filter(role => this.data.permissionRoles?.enabled?.includes(role.id)); }, err => { console.error('get Roles err: ' + err); }); } else { this.selected = UserGroups.ValueToGroups(this.data.permission); this.options = UserGroups.Groups; } this.cdr.detectChanges(); } ngOnDestroy() { this.destroy$.next(null); this.destroy$.complete(); } onNoClick(): void { this.dialogRef.close(); } onOkClick(): void { let result = <ScriptPermissionData>{ permission: null, permissionRoles: { enabled: null } }; if (this.seloptions) { if (this.isRolePermission()) { result.permissionRoles.enabled = this.seloptions.selected?.map(role => role.id); } else { result.permission = UserGroups.GroupsToValue(this.seloptions.selected); } } this.dialogRef.close(result); } isRolePermission() { return this.settingsService.getSettings()?.userRole; } } export interface ScriptPermissionData { permission: number; permissionRoles: { enabled: string[]; }; }