/
tisit
/
FUXA_SCADA
Обзор
Документация
Войти
/
tisit
/
FUXA_SCADA
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
client/src/app/scripts/script-mode/script-mode.component.ts
69 строк
2 KB
Umberto Nocelli
Upgrade Angular from v16 to v17 (#2113)
08 янв 2026, 21:56
Не верифицирован
08 янв 2026, 21:56
905235d
Код
Авторство
О чём код?
import { Component, Inject, OnInit } from '@angular/core'; import { MatDialogRef as MatDialogRef, MAT_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/dialog'; import { ScriptMode } from '../../_models/script'; import { AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { ProjectService } from '../../_services/project.service'; @Component({ selector: 'app-script-mode', templateUrl: './script-mode.component.html', styleUrls: ['./script-mode.component.css'] }) export class ScriptModeComponent implements OnInit { formGroup: UntypedFormGroup; scriptMode = ScriptMode; existingNames = []; constructor(public dialogRef: MatDialogRef<ScriptModeComponent>, private translateService: TranslateService, private projectService: ProjectService, private fb: UntypedFormBuilder, @Inject(MAT_DIALOG_DATA) public data: ScriptModeType) { } ngOnInit() { this.existingNames = this.projectService.getScripts()?.map(script => script.name); this.formGroup = this.fb.group({ name: [this.data.name], mode: [this.data.mode, Validators.required], }); if (this.data.newScript) { this.formGroup.controls.name.setValidators([Validators.required, this.isValidScriptName()]); } } onNoClick(): void { this.dialogRef.close(); } onOkClick(): void { this.dialogRef.close(this.formGroup.getRawValue()); } isValidScriptName(): ValidatorFn { return (control: AbstractControl): ValidationErrors | null => { const value = control.value?.trim(); if (!value) { return null; } const functionNameRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/; if (!functionNameRegex.test(value)) { return { message: this.translateService.instant('msg.invalid-script-name') }; } if (this.existingNames.includes(value)) { return { message: this.translateService.instant('msg.script-name-exist') }; } return null; }; } } export interface ScriptModeType { name: string; mode: ScriptMode; newScript?: boolean; }