This is an automated email from the ASF dual-hosted git repository. zehnder pushed a commit to branch 4287-migrate-angular-ui-from-constructor-injection-to-inject in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit 45ad9e030c5cc355006f54643e3ff5ae938baefc Author: Philipp Zehnder <[email protected]> AuthorDate: Tue Mar 24 10:05:11 2026 +0100 migrate configuration UI to inject() --- .../extensions-installation.component.ts | 13 +- .../extensions-service-details-dialog.component.ts | 9 +- .../file-rename/file-rename-dialog.component.ts | 8 +- .../file-upload/file-upload-dialog.component.ts | 8 +- .../email-configuration.component.ts | 16 +- .../email-template-configuration.component.ts | 8 +- .../export/data-export-import.component.ts | 16 +- .../configuration/export/data-export.service.ts | 8 +- .../export-dialog/data-export-dialog.component.ts | 11 +- .../import-dialog/data-import-dialog.component.ts | 9 +- .../endpoint-item/endpoint-item.component.ts | 27 ++- .../extensions-installation.component.ts | 18 +- .../extensions-installation.service.ts | 8 +- .../extensions-service-configuration.component.ts | 6 +- .../service-configs-boolean.component.ts | 5 +- .../service-configs-number.component.ts | 5 +- .../service-configs-password.component.ts | 6 +- .../service-configs-text.component.ts | 5 +- .../extensions-service-management.component.ts | 10 +- .../registered-extensions-services.component.ts | 12 +- .../files/file-overview/file-overview.component.ts | 12 +- ui/src/app/configuration/files/files.component.ts | 14 +- .../general-configuration.component.ts | 20 +- .../label-configuration.component.ts | 12 +- .../authentication-configuration.component.ts | 4 +- .../edit-group-dialog.component.ts | 20 +- .../edit-role-dialog/edit-role-dialog.component.ts | 14 +- .../edit-user-dialog/edit-user-dialog.component.ts | 32 +-- .../role-configuration.component.ts | 14 +- .../user-group-configuration.component.ts | 14 +- .../configuration/shared/configuration.service.ts | 226 ++++++++++----------- .../location-features-configuration.component.ts | 14 +- .../site-area-configuration.component.ts | 12 +- 33 files changed, 300 insertions(+), 316 deletions(-) diff --git a/ui/src/app/configuration/dialog/extensions-installation/extensions-installation.component.ts b/ui/src/app/configuration/dialog/extensions-installation/extensions-installation.component.ts index 2913618dc0..efc89cbd58 100644 --- a/ui/src/app/configuration/dialog/extensions-installation/extensions-installation.component.ts +++ b/ui/src/app/configuration/dialog/extensions-installation/extensions-installation.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input } from '@angular/core'; +import { Component, Input, inject } from '@angular/core'; import { DialogRef } from '@streampipes/shared-ui'; import { ExtensionInstallationService, @@ -43,6 +43,11 @@ import { MatButton } from '@angular/material/button'; ], }) export class SpExtensionsInstallationDialogComponent { + private dialogRef = + inject<DialogRef<SpExtensionsInstallationDialogComponent>>(DialogRef); + private extensionInstallationService = inject(ExtensionInstallationService); + private translateService = inject(TranslateService); + endpointItems: ExtensionItemDescription[]; @Input() @@ -61,11 +66,7 @@ export class SpExtensionsInstallationDialogComponent { installAsPublicElement = true; - constructor( - private dialogRef: DialogRef<SpExtensionsInstallationDialogComponent>, - private extensionInstallationService: ExtensionInstallationService, - private translateService: TranslateService, - ) { + constructor() { this.installationStatus = []; this.installationFinished = false; this.page = 'preview'; diff --git a/ui/src/app/configuration/dialog/extensions-service-details/extensions-service-details-dialog.component.ts b/ui/src/app/configuration/dialog/extensions-service-details/extensions-service-details-dialog.component.ts index fef9b789e5..30b9660dee 100644 --- a/ui/src/app/configuration/dialog/extensions-service-details/extensions-service-details-dialog.component.ts +++ b/ui/src/app/configuration/dialog/extensions-service-details/extensions-service-details-dialog.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input } from '@angular/core'; +import { Component, Input, inject } from '@angular/core'; import { DialogRef } from '@streampipes/shared-ui'; import { SpServiceRegistration } from '@streampipes/platform-services'; import { @@ -42,13 +42,12 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class SpExtensionsServiceDetailsDialogComponent { + private dialogRef = + inject<DialogRef<SpExtensionsServiceDetailsDialogComponent>>(DialogRef); + @Input() serviceReg: SpServiceRegistration; - constructor( - private dialogRef: DialogRef<SpExtensionsServiceDetailsDialogComponent>, - ) {} - close() { this.dialogRef.close(); } diff --git a/ui/src/app/configuration/dialog/file-rename/file-rename-dialog.component.ts b/ui/src/app/configuration/dialog/file-rename/file-rename-dialog.component.ts index 5676b720aa..4a43a443f5 100644 --- a/ui/src/app/configuration/dialog/file-rename/file-rename-dialog.component.ts +++ b/ui/src/app/configuration/dialog/file-rename/file-rename-dialog.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Inject } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { DialogRef } from '@angular/cdk/dialog'; import { MAT_DIALOG_DATA, MatDialogClose } from '@angular/material/dialog'; import { @@ -49,10 +49,8 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class FileRenameDialogComponent { - constructor( - private dialogRef: DialogRef<FileRenameDialogComponent>, - @Inject(MAT_DIALOG_DATA) public fileName: string, - ) {} + private dialogRef = inject<DialogRef<FileRenameDialogComponent>>(DialogRef); + fileName = inject(MAT_DIALOG_DATA); cancel() { this.dialogRef.close(); diff --git a/ui/src/app/configuration/dialog/file-upload/file-upload-dialog.component.ts b/ui/src/app/configuration/dialog/file-upload/file-upload-dialog.component.ts index 6555a252c6..de2d8af2cd 100644 --- a/ui/src/app/configuration/dialog/file-upload/file-upload-dialog.component.ts +++ b/ui/src/app/configuration/dialog/file-upload/file-upload-dialog.component.ts @@ -60,6 +60,9 @@ import { MatDivider } from '@angular/material/divider'; ], }) export class FileUploadDialogComponent { + private dialogRef = inject<DialogRef<FileUploadDialogComponent>>(DialogRef); + private filesService = inject(FilesService); + private translateService = inject(TranslateService); inputValue: string; fileNames: string[] = []; @@ -76,11 +79,6 @@ export class FileUploadDialogComponent { uploadError = false; uploadErrorMessage = ''; - constructor( - private dialogRef: DialogRef<FileUploadDialogComponent>, - private filesService: FilesService, - ) {} - handleFileInput(files: FileList) { this.selectedUploadFiles = files; for (let i = 0; i < files.length; i++) { diff --git a/ui/src/app/configuration/email-configuration/email-configuration.component.ts b/ui/src/app/configuration/email-configuration/email-configuration.component.ts index dbda4a3069..4b10c9e5c2 100644 --- a/ui/src/app/configuration/email-configuration/email-configuration.component.ts +++ b/ui/src/app/configuration/email-configuration/email-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { FormsModule, ReactiveFormsModule, @@ -78,6 +78,12 @@ import { MatDivider } from '@angular/material/divider'; ], }) export class EmailConfigurationComponent implements OnInit { + private fb = inject(UntypedFormBuilder); + private mailConfigService = inject(MailConfigService); + private breadcrumbService = inject(SpBreadcrumbService); + private tabService = inject(SpConfigurationTabsService); + private translateService = inject(TranslateService); + tabs: SpNavigationItem[] = []; parentForm: UntypedFormGroup; @@ -91,14 +97,6 @@ export class EmailConfigurationComponent implements OnInit { sendingTestMailSuccess = false; sendingEmailErrorMessage = ''; - constructor( - private fb: UntypedFormBuilder, - private mailConfigService: MailConfigService, - private breadcrumbService: SpBreadcrumbService, - private tabService: SpConfigurationTabsService, - private translateService: TranslateService, - ) {} - ngOnInit(): void { this.tabs = this.tabService.getTabs(); this.breadcrumbService.updateBreadcrumb([ diff --git a/ui/src/app/configuration/email-configuration/email-template-configuration/email-template-configuration.component.ts b/ui/src/app/configuration/email-configuration/email-template-configuration/email-template-configuration.component.ts index 7280a64b67..79e73e0cf4 100644 --- a/ui/src/app/configuration/email-configuration/email-template-configuration/email-template-configuration.component.ts +++ b/ui/src/app/configuration/email-configuration/email-template-configuration/email-template-configuration.component.ts @@ -56,6 +56,9 @@ import type { editor as MonacoEditor } from 'monaco-editor'; ], }) export class SpEmailTemplateConfigurationComponent implements OnInit { + private fb = inject(UntypedFormBuilder); + private mailConfigService = inject(MailConfigService); + template: EmailTemplate; originalTemplate: string; templateLoaded = false; @@ -97,11 +100,6 @@ export class SpEmailTemplateConfigurationComponent implements OnInit { }, ]; - constructor( - private fb: UntypedFormBuilder, - private mailConfigService: MailConfigService, - ) {} - ngOnInit(): void { this.loadTemplate(); } diff --git a/ui/src/app/configuration/export/data-export-import.component.ts b/ui/src/app/configuration/export/data-export-import.component.ts index c78c913f5c..4b979170c0 100644 --- a/ui/src/app/configuration/export/data-export-import.component.ts +++ b/ui/src/app/configuration/export/data-export-import.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { DialogService, PanelType, @@ -58,19 +58,17 @@ import { MatButton } from '@angular/material/button'; ], }) export class SpDataExportImportComponent implements OnInit { + private breadcrumbService = inject(SpBreadcrumbService); + private assetManagementService = inject(AssetManagementService); + private dialogService = inject(DialogService); + private tabService = inject(SpConfigurationTabsService); + private translateService = inject(TranslateService); + tabs: SpNavigationItem[] = []; assets: SpAsset[]; selectedAssets: string[] = []; - constructor( - private breadcrumbService: SpBreadcrumbService, - private assetManagementService: AssetManagementService, - private dialogService: DialogService, - private tabService: SpConfigurationTabsService, - private translateService: TranslateService, - ) {} - ngOnInit(): void { this.tabs = this.tabService.getTabs(); this.breadcrumbService.updateBreadcrumb([ diff --git a/ui/src/app/configuration/export/data-export.service.ts b/ui/src/app/configuration/export/data-export.service.ts index 61082b7612..05501336b7 100644 --- a/ui/src/app/configuration/export/data-export.service.ts +++ b/ui/src/app/configuration/export/data-export.service.ts @@ -16,7 +16,7 @@ * */ -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { AssetExportConfiguration, ExportConfiguration, @@ -33,10 +33,8 @@ import { map } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class DataExportService { - constructor( - private platformServicesCommons: PlatformServicesCommons, - private http: HttpClient, - ) {} + private platformServicesCommons = inject(PlatformServicesCommons); + private http = inject(HttpClient); getExportPreview(assetIds: string[]): Observable<ExportConfiguration> { return this.http diff --git a/ui/src/app/configuration/export/export-dialog/data-export-dialog.component.ts b/ui/src/app/configuration/export/export-dialog/data-export-dialog.component.ts index 3e8d5156f7..55282c7145 100644 --- a/ui/src/app/configuration/export/export-dialog/data-export-dialog.component.ts +++ b/ui/src/app/configuration/export/export-dialog/data-export-dialog.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Input, OnInit, inject } from '@angular/core'; import { DialogRef } from '@streampipes/shared-ui'; import { DataExportService } from '../data-export.service'; import { ExportConfiguration } from '@streampipes/platform-services'; @@ -48,17 +48,16 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class SpDataExportDialogComponent implements OnInit { + private dialogRef = + inject<DialogRef<SpDataExportDialogComponent>>(DialogRef); + private dataExportService = inject(DataExportService); + @Input() selectedAssets: string[]; preview: ExportConfiguration; exportInProgress = false; - constructor( - private dialogRef: DialogRef<SpDataExportDialogComponent>, - private dataExportService: DataExportService, - ) {} - ngOnInit(): void { this.dataExportService .getExportPreview(this.selectedAssets) diff --git a/ui/src/app/configuration/export/import-dialog/data-import-dialog.component.ts b/ui/src/app/configuration/export/import-dialog/data-import-dialog.component.ts index 1011c4f32c..45093e3416 100644 --- a/ui/src/app/configuration/export/import-dialog/data-import-dialog.component.ts +++ b/ui/src/app/configuration/export/import-dialog/data-import-dialog.component.ts @@ -79,6 +79,10 @@ import { MatDivider } from '@angular/material/divider'; ], }) export class SpDataImportDialogComponent { + private dialogRef = + inject<DialogRef<SpDataImportDialogComponent>>(DialogRef); + private dataExportService = inject(DataExportService); + private translateService = inject(TranslateService); currentImportStep = 0; @@ -94,11 +98,6 @@ export class SpDataImportDialogComponent { uploadStatus = 0; uploadError = false; - constructor( - private dialogRef: DialogRef<SpDataImportDialogComponent>, - private dataExportService: DataExportService, - ) {} - handleFileInput(files: any) { this.hasInput = true; this.uploadError = false; diff --git a/ui/src/app/configuration/extensions-installation/endpoint-item/endpoint-item.component.ts b/ui/src/app/configuration/extensions-installation/endpoint-item/endpoint-item.component.ts index 24920fef24..c05a9b9bf1 100644 --- a/ui/src/app/configuration/extensions-installation/endpoint-item/endpoint-item.component.ts +++ b/ui/src/app/configuration/extensions-installation/endpoint-item/endpoint-item.component.ts @@ -16,7 +16,14 @@ * */ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { + Component, + EventEmitter, + Input, + OnInit, + Output, + inject, +} from '@angular/core'; import { MatSnackBar } from '@angular/material/snack-bar'; import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; import { @@ -65,6 +72,14 @@ import { MatIcon } from '@angular/material/icon'; ], }) export class EndpointItemComponent implements OnInit { + private snackBar = inject(MatSnackBar); + private extensionInstallationService = inject(ExtensionInstallationService); + private addService = inject(ExtensionsInstallationService); + private sanitizer = inject(DomSanitizer); + appConstants = inject(AppConstants); + private dialogService = inject(DialogService); + private translateService = inject(TranslateService); + @Input() item: ExtensionItemDescription; @@ -89,16 +104,6 @@ export class EndpointItemComponent implements OnInit { @Output() triggerInstallation: EventEmitter<any> = new EventEmitter<any>(); - constructor( - private snackBar: MatSnackBar, - private extensionInstallationService: ExtensionInstallationService, - private addService: ExtensionsInstallationService, - private sanitizer: DomSanitizer, - public appConstants: AppConstants, - private dialogService: DialogService, - private translateService: TranslateService, - ) {} - ngOnInit(): void { this.findItemTypeTitle(); this.findItemStyle(); diff --git a/ui/src/app/configuration/extensions-installation/extensions-installation.component.ts b/ui/src/app/configuration/extensions-installation/extensions-installation.component.ts index bfd5f1179d..1ec6d98159 100644 --- a/ui/src/app/configuration/extensions-installation/extensions-installation.component.ts +++ b/ui/src/app/configuration/extensions-installation/extensions-installation.component.ts @@ -16,7 +16,7 @@ * */ -import { ChangeDetectorRef, Component, OnInit } from '@angular/core'; +import { ChangeDetectorRef, Component, OnInit, inject } from '@angular/core'; import { DialogRef, DialogService, @@ -85,6 +85,13 @@ import { PipelineElementTypeFilter } from './filter/pipeline-element-type.pipe'; ], }) export class SpExtensionsInstallationComponent implements OnInit { + private addService = inject(ExtensionsInstallationService); + private dialogService = inject(DialogService); + private changeDetectorRef = inject(ChangeDetectorRef); + private breadcrumbService = inject(SpBreadcrumbService); + private tabService = inject(SpConfigurationTabsService); + private translateService = inject(TranslateService); + tabs: SpNavigationItem[] = []; activeLink: string; @@ -101,14 +108,7 @@ export class SpExtensionsInstallationComponent implements OnInit { _filterTerm = ''; _selectedInstallationStatus = 'all'; - constructor( - private addService: ExtensionsInstallationService, - private dialogService: DialogService, - private changeDetectorRef: ChangeDetectorRef, - private breadcrumbService: SpBreadcrumbService, - private tabService: SpConfigurationTabsService, - private translateService: TranslateService, - ) { + constructor() { this.results = []; this.loading = false; this.endpointItems = []; diff --git a/ui/src/app/configuration/extensions-installation/extensions-installation.service.ts b/ui/src/app/configuration/extensions-installation/extensions-installation.service.ts index 4e0109a42f..11698b4714 100644 --- a/ui/src/app/configuration/extensions-installation/extensions-installation.service.ts +++ b/ui/src/app/configuration/extensions-installation/extensions-installation.service.ts @@ -16,7 +16,7 @@ * */ -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { ExtensionItemDescription, @@ -27,10 +27,8 @@ import { map } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class ExtensionsInstallationService { - constructor( - private http: HttpClient, - private platformServicesCommons: PlatformServicesCommons, - ) {} + private http = inject(HttpClient); + private platformServicesCommons = inject(PlatformServicesCommons); getExtensionItems(): Observable<ExtensionItemDescription[]> { return this.http diff --git a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/extensions-service-configuration.component.ts b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/extensions-service-configuration.component.ts index 2f90c334d8..4fda7afd55 100644 --- a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/extensions-service-configuration.component.ts +++ b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/extensions-service-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, inject } from '@angular/core'; import { MatPaginator } from '@angular/material/paginator'; import { MatCell, @@ -90,6 +90,8 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class SpExtensionsServiceConfigurationComponent { + private configurationService = inject(ConfigurationService); + displayedColumns: string[] = ['group', 'name', 'action']; @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator; dataSource = new MatTableDataSource<SpServiceConfiguration>(); @@ -97,7 +99,7 @@ export class SpExtensionsServiceConfigurationComponent { expandedElement: any; serviceConfiguration: SpServiceConfiguration[]; - constructor(private configurationService: ConfigurationService) { + constructor() { this.getConfigurationServices(); } diff --git a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-boolean/service-configs-boolean.component.ts b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-boolean/service-configs-boolean.component.ts index 022bce1b42..5638d6cbbe 100644 --- a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-boolean/service-configs-boolean.component.ts +++ b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-boolean/service-configs-boolean.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input } from '@angular/core'; +import { Component, Input, inject } from '@angular/core'; import { ConfigurationService } from '../../../../shared/configuration.service'; import { ConfigItem } from '@streampipes/platform-services'; import { @@ -44,6 +44,7 @@ import { MatTooltip } from '@angular/material/tooltip'; ], }) export class ServiceConfigsBooleanComponent { + configService = inject(ConfigurationService); + @Input() configuration: ConfigItem; - constructor(public configService: ConfigurationService) {} } diff --git a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-number/service-configs-number.component.ts b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-number/service-configs-number.component.ts index 4883422451..87b16e31ef 100644 --- a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-number/service-configs-number.component.ts +++ b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-number/service-configs-number.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input } from '@angular/core'; +import { Component, Input, inject } from '@angular/core'; import { ConfigurationService } from '../../../../shared/configuration.service'; import { ConfigItem } from '@streampipes/platform-services'; import { MatFormField } from '@angular/material/form-field'; @@ -30,6 +30,7 @@ import { FormsModule } from '@angular/forms'; imports: [MatFormField, FlexDirective, MatInput, FormsModule], }) export class ServiceConfigsNumberComponent { + configService = inject(ConfigurationService); + @Input() configuration: ConfigItem; - constructor(public configService: ConfigurationService) {} } diff --git a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-password/service-configs-password.component.ts b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-password/service-configs-password.component.ts index e567ffcd89..d793747b68 100644 --- a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-password/service-configs-password.component.ts +++ b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-password/service-configs-password.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input } from '@angular/core'; +import { Component, Input, inject } from '@angular/core'; import { ConfigurationService } from '../../../../shared/configuration.service'; import { ConfigItem } from '@streampipes/platform-services'; import { @@ -51,6 +51,8 @@ const hiddenPasswordString = '*****'; ], }) export class ServiceConfigsPasswordComponent { + configService = inject(ConfigurationService); + @Input() configuration: ConfigItem; password: string; @@ -58,7 +60,7 @@ export class ServiceConfigsPasswordComponent { className: string; private hide: boolean; - constructor(public configService: ConfigurationService) { + constructor() { this.password = hiddenPasswordString; this.show = false; this.className = 'hideText'; diff --git a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-text/service-configs-text.component.ts b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-text/service-configs-text.component.ts index 06a701077b..651c9cafa1 100644 --- a/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-text/service-configs-text.component.ts +++ b/ui/src/app/configuration/extensions-service-management/extensions-service-configuration/service-configs/service-configs-text/service-configs-text.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input } from '@angular/core'; +import { Component, Input, inject } from '@angular/core'; import { ConfigurationService } from '../../../../shared/configuration.service'; import { ConfigItem } from '@streampipes/platform-services'; import { MatFormField, MatSuffix } from '@angular/material/form-field'; @@ -41,6 +41,7 @@ import { MatTooltip } from '@angular/material/tooltip'; ], }) export class ServiceConfigsTextComponent { + configService = inject(ConfigurationService); + @Input() configuration: ConfigItem; - constructor(public configService: ConfigurationService) {} } diff --git a/ui/src/app/configuration/extensions-service-management/extensions-service-management.component.ts b/ui/src/app/configuration/extensions-service-management/extensions-service-management.component.ts index 56be884e2a..20a639093d 100644 --- a/ui/src/app/configuration/extensions-service-management/extensions-service-management.component.ts +++ b/ui/src/app/configuration/extensions-service-management/extensions-service-management.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { SpConfigurationTabsService } from '../configuration-tabs.service'; import { SpBasicNavTabsComponent, @@ -51,12 +51,10 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class ExtensionsServiceManagementComponent implements OnInit { - tabs: SpNavigationItem[] = []; + private breadcrumbService = inject(SpBreadcrumbService); + private tabService = inject(SpConfigurationTabsService); - constructor( - private breadcrumbService: SpBreadcrumbService, - private tabService: SpConfigurationTabsService, - ) {} + tabs: SpNavigationItem[] = []; ngOnInit() { this.tabs = this.tabService.getTabs(); diff --git a/ui/src/app/configuration/extensions-service-management/registered-extensions-services/registered-extensions-services.component.ts b/ui/src/app/configuration/extensions-service-management/registered-extensions-services/registered-extensions-services.component.ts index bd1179b48a..9492e12313 100644 --- a/ui/src/app/configuration/extensions-service-management/registered-extensions-services/registered-extensions-services.component.ts +++ b/ui/src/app/configuration/extensions-service-management/registered-extensions-services/registered-extensions-services.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, ViewChild } from '@angular/core'; +import { Component, ViewChild, inject } from '@angular/core'; import { MatPaginator } from '@angular/material/paginator'; import { MatCell, @@ -70,15 +70,15 @@ import { MatTooltip } from '@angular/material/tooltip'; ], }) export class SpRegisteredExtensionsServiceComponent { + private configurationService = inject(ConfigurationService); + private dialogService = inject(DialogService); + private translateService = inject(TranslateService); + displayedColumns: string[] = ['status', 'name', 'group', 'action']; @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator; dataSource = new MatTableDataSource<SpServiceRegistration>(); - constructor( - private configurationService: ConfigurationService, - private dialogService: DialogService, - private translateService: TranslateService, - ) { + constructor() { this.getRegisteredServices(); } diff --git a/ui/src/app/configuration/files/file-overview/file-overview.component.ts b/ui/src/app/configuration/files/file-overview/file-overview.component.ts index 5a9edb947b..99bb8b7809 100644 --- a/ui/src/app/configuration/files/file-overview/file-overview.component.ts +++ b/ui/src/app/configuration/files/file-overview/file-overview.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { FileMetadata, FilesService } from '@streampipes/platform-services'; import { MatCell, @@ -65,6 +65,10 @@ import { DatePipe } from '@angular/common'; ], }) export class FileOverviewComponent implements OnInit { + private filesService = inject(FilesService); + private dialog = inject(MatDialog); + private translateService = inject(TranslateService); + displayedColumns: string[] = ['filename', 'filetype', 'uploaded', 'action']; dataSource: MatTableDataSource<FileMetadata> = new MatTableDataSource(); @@ -72,12 +76,6 @@ export class FileOverviewComponent implements OnInit { private fileTypeColors: { [key: string]: string } = {}; - constructor( - private filesService: FilesService, - private dialog: MatDialog, - private translateService: TranslateService, - ) {} - ngOnInit() { this.refreshFiles(); } diff --git a/ui/src/app/configuration/files/files.component.ts b/ui/src/app/configuration/files/files.component.ts index 6de5567e32..a0d455ace3 100644 --- a/ui/src/app/configuration/files/files.component.ts +++ b/ui/src/app/configuration/files/files.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, inject } from '@angular/core'; import { DialogService, PanelType, @@ -54,17 +54,15 @@ import { FileOverviewComponent } from './file-overview/file-overview.component'; ], }) export class FilesComponent implements OnInit { + private dialogService = inject(DialogService); + private breadcrumbService = inject(SpBreadcrumbService); + private tabService = inject(SpConfigurationTabsService); + private translateService = inject(TranslateService); + tabs: SpNavigationItem[] = []; @ViewChild('fileOverviewComponent') fileOverviewComponent; - constructor( - private dialogService: DialogService, - private breadcrumbService: SpBreadcrumbService, - private tabService: SpConfigurationTabsService, - private translateService: TranslateService, - ) {} - ngOnInit() { this.tabs = this.tabService.getTabs(); this.breadcrumbService.updateBreadcrumb([ diff --git a/ui/src/app/configuration/general-configuration/general-configuration.component.ts b/ui/src/app/configuration/general-configuration/general-configuration.component.ts index 714c5b4c84..44e037561b 100644 --- a/ui/src/app/configuration/general-configuration/general-configuration.component.ts +++ b/ui/src/app/configuration/general-configuration/general-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { FormsModule, ReactiveFormsModule, @@ -99,6 +99,14 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class GeneralConfigurationComponent implements OnInit { + private fb = inject(UntypedFormBuilder); + private generalConfigService = inject(GeneralConfigService); + private mailConfigService = inject(MailConfigService); + private availableRolesService = inject(AvailableRolesService); + private appConstants = inject(AppConstants); + private breadcrumbService = inject(SpBreadcrumbService); + private tabService = inject(SpConfigurationTabsService); + tabs: SpNavigationItem[] = []; parentForm: UntypedFormGroup; @@ -109,16 +117,6 @@ export class GeneralConfigurationComponent implements OnInit { availableRoles$: Observable<Role[]>; - constructor( - private fb: UntypedFormBuilder, - private generalConfigService: GeneralConfigService, - private mailConfigService: MailConfigService, - private availableRolesService: AvailableRolesService, - private appConstants: AppConstants, - private breadcrumbService: SpBreadcrumbService, - private tabService: SpConfigurationTabsService, - ) {} - ngOnInit(): void { this.tabs = this.tabService.getTabs(); this.breadcrumbService.updateBreadcrumb([ diff --git a/ui/src/app/configuration/label-configuration/label-configuration.component.ts b/ui/src/app/configuration/label-configuration/label-configuration.component.ts index 0d8fedede7..1206f7d41e 100644 --- a/ui/src/app/configuration/label-configuration/label-configuration.component.ts +++ b/ui/src/app/configuration/label-configuration/label-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, inject } from '@angular/core'; import { SpConfigurationTabsService } from '../configuration-tabs.service'; import { LabelsService, SpLabel } from '@streampipes/platform-services'; import { SpConfigurationRoutes } from '../configuration.breadcrumb'; @@ -76,6 +76,10 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class SpLabelConfigurationComponent implements OnInit { + private breadcrumbService = inject(SpBreadcrumbService); + private labelsService = inject(LabelsService); + private tabService = inject(SpConfigurationTabsService); + tabs: SpNavigationItem[] = []; allLabels: SpLabel[] = []; @@ -91,12 +95,6 @@ export class SpLabelConfigurationComponent implements OnInit { editedLabels: string[] = []; - constructor( - private breadcrumbService: SpBreadcrumbService, - private labelsService: LabelsService, - private tabService: SpConfigurationTabsService, - ) {} - ngOnInit(): void { this.tabs = this.tabService.getTabs(); this.breadcrumbService.updateBreadcrumb([ diff --git a/ui/src/app/configuration/security-configuration/authentication-configuration/authentication-configuration.component.ts b/ui/src/app/configuration/security-configuration/authentication-configuration/authentication-configuration.component.ts index 90e09e1794..67d7c566ab 100644 --- a/ui/src/app/configuration/security-configuration/authentication-configuration/authentication-configuration.component.ts +++ b/ui/src/app/configuration/security-configuration/authentication-configuration/authentication-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { ConfigurationService } from '../../shared/configuration.service'; import * as FileSaver from 'file-saver'; import { FlexDirective, LayoutDirective } from '@ngbracket/ngx-layout/flex'; @@ -30,7 +30,7 @@ import { TranslatePipe } from '@ngx-translate/core'; imports: [FlexDirective, LayoutDirective, MatButton, TranslatePipe], }) export class SecurityAuthenticationConfigurationComponent { - constructor(private configurationService: ConfigurationService) {} + private configurationService = inject(ConfigurationService); generateKeyPair() { this.configurationService.generateKeyPair().subscribe(result => { diff --git a/ui/src/app/configuration/security-configuration/edit-group-dialog/edit-group-dialog.component.ts b/ui/src/app/configuration/security-configuration/edit-group-dialog/edit-group-dialog.component.ts index 63b15c7801..6704dbd0e9 100644 --- a/ui/src/app/configuration/security-configuration/edit-group-dialog/edit-group-dialog.component.ts +++ b/ui/src/app/configuration/security-configuration/edit-group-dialog/edit-group-dialog.component.ts @@ -16,7 +16,13 @@ * */ -import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core'; +import { + Component, + Input, + OnInit, + ViewEncapsulation, + inject, +} from '@angular/core'; import { Group, Role, UserGroupService } from '@streampipes/platform-services'; import { FormsModule, @@ -67,6 +73,11 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class EditGroupDialogComponent implements OnInit { + private fb = inject(UntypedFormBuilder); + private availableRolesService = inject(AvailableRolesService); + private dialogRef = inject<DialogRef<EditGroupDialogComponent>>(DialogRef); + private userGroupService = inject(UserGroupService); + @Input() group: Group; @@ -77,13 +88,6 @@ export class EditGroupDialogComponent implements OnInit { availableRoles$: Observable<Role[]>; clonedGroup: Group; - constructor( - private fb: UntypedFormBuilder, - private availableRolesService: AvailableRolesService, - private dialogRef: DialogRef<EditGroupDialogComponent>, - private userGroupService: UserGroupService, - ) {} - ngOnInit(): void { this.availableRoles$ = this.availableRolesService .getAvailableRoles() diff --git a/ui/src/app/configuration/security-configuration/edit-role-dialog/edit-role-dialog.component.ts b/ui/src/app/configuration/security-configuration/edit-role-dialog/edit-role-dialog.component.ts index 833519985d..6a1de2a870 100644 --- a/ui/src/app/configuration/security-configuration/edit-role-dialog/edit-role-dialog.component.ts +++ b/ui/src/app/configuration/security-configuration/edit-role-dialog/edit-role-dialog.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Input, OnInit, inject } from '@angular/core'; import { Privilege, PrivilegeService, @@ -75,6 +75,11 @@ import { TranslatePipe } from '@ngx-translate/core'; ], }) export class EditRoleDialogComponent implements OnInit { + private fb = inject(FormBuilder); + private privilegeService = inject(PrivilegeService); + private dialogRef = inject<DialogRef<EditRoleDialogComponent>>(DialogRef); + private roleService = inject(RoleService); + @Input() role: Role; @@ -86,13 +91,6 @@ export class EditRoleDialogComponent implements OnInit { selectedPrivileges: Privilege[] = []; clonedRole: Role; - constructor( - private fb: FormBuilder, - private privilegeService: PrivilegeService, - private dialogRef: DialogRef<EditRoleDialogComponent>, - private roleService: RoleService, - ) {} - ngOnInit() { this.privilegeService.findAll().subscribe(privileges => { this.selectedPrivileges = privileges.filter( diff --git a/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.ts b/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.ts index 7fab1f3791..4eb0782587 100644 --- a/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.ts +++ b/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.ts @@ -16,7 +16,13 @@ * */ -import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core'; +import { + Component, + Input, + OnInit, + ViewEncapsulation, + inject, +} from '@angular/core'; import { CurrentUserService, DialogRef, @@ -83,6 +89,17 @@ import { AsyncPipe } from '@angular/common'; ], }) export class EditUserDialogComponent implements OnInit { + private dialogRef = inject<DialogRef<EditUserDialogComponent>>(DialogRef); + private availableRolesService = inject(AvailableRolesService); + private fb = inject(UntypedFormBuilder); + private userService = inject(UserService); + private userGroupService = inject(UserGroupService); + private currentUserService = inject(CurrentUserService); + private authService = inject(AuthService); + private router = inject(Router); + private mailConfigService = inject(MailConfigService); + private translateService = inject(TranslateService); + @Input() user: any; @@ -105,19 +122,6 @@ export class EditUserDialogComponent implements OnInit { emailConfigured = false; formAvailable = false; - constructor( - private dialogRef: DialogRef<EditUserDialogComponent>, - private availableRolesService: AvailableRolesService, - private fb: UntypedFormBuilder, - private userService: UserService, - private userGroupService: UserGroupService, - private currentUserService: CurrentUserService, - private authService: AuthService, - private router: Router, - private mailConfigService: MailConfigService, - private translateService: TranslateService, - ) {} - ngOnInit(): void { this.initRoleFilter(); this.loadInitialData(); diff --git a/ui/src/app/configuration/security-configuration/role-configuration/role-configuration.component.ts b/ui/src/app/configuration/security-configuration/role-configuration/role-configuration.component.ts index 2369f77921..ec413f3158 100644 --- a/ui/src/app/configuration/security-configuration/role-configuration/role-configuration.component.ts +++ b/ui/src/app/configuration/security-configuration/role-configuration/role-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { Component, OnInit, ViewChild, inject } from '@angular/core'; import { Role, RoleService } from '@streampipes/platform-services'; import { MatPaginator } from '@angular/material/paginator'; import { MatSort, MatSortHeader } from '@angular/material/sort'; @@ -71,6 +71,11 @@ import { MatTooltip } from '@angular/material/tooltip'; ], }) export class SecurityRoleConfigComponent implements OnInit { + private roleService = inject(RoleService); + private dialogService = inject(DialogService); + private dialog = inject(MatDialog); + private translateService = inject(TranslateService); + private static readonly ASSET_USER_ROLE = 'ROLE_ASSET_USER'; @ViewChild(MatPaginator) paginator: MatPaginator; @@ -81,13 +86,6 @@ export class SecurityRoleConfigComponent implements OnInit { displayedColumns: string[] = ['roleName', 'roleType', 'edit']; - constructor( - private roleService: RoleService, - private dialogService: DialogService, - private dialog: MatDialog, - private translateService: TranslateService, - ) {} - ngOnInit(): void { this.loadRoles(); } diff --git a/ui/src/app/configuration/security-configuration/user-group-configuration/user-group-configuration.component.ts b/ui/src/app/configuration/security-configuration/user-group-configuration/user-group-configuration.component.ts index 1e622f8648..fd4ee78e7d 100644 --- a/ui/src/app/configuration/security-configuration/user-group-configuration/user-group-configuration.component.ts +++ b/ui/src/app/configuration/security-configuration/user-group-configuration/user-group-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { Group, UserGroupService } from '@streampipes/platform-services'; import { MatCell, @@ -68,17 +68,15 @@ import { MatTooltip } from '@angular/material/tooltip'; ], }) export class SecurityUserGroupConfigComponent implements OnInit { + private userGroupService = inject(UserGroupService); + private dialogService = inject(DialogService); + private dialog = inject(MatDialog); + private translateService = inject(TranslateService); + dataSource: MatTableDataSource<Group>; displayedColumns: string[] = ['groupName', 'groupId', 'edit']; - constructor( - private userGroupService: UserGroupService, - private dialogService: DialogService, - private dialog: MatDialog, - private translateService: TranslateService, - ) {} - ngOnInit(): void { this.loadAllGroups(); } diff --git a/ui/src/app/configuration/shared/configuration.service.ts b/ui/src/app/configuration/shared/configuration.service.ts index e827ff944e..474d5d8a30 100644 --- a/ui/src/app/configuration/shared/configuration.service.ts +++ b/ui/src/app/configuration/shared/configuration.service.ts @@ -1,113 +1,113 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import { MultipartUtils } from './multipart-utils'; -import { - MessagingSettings, - SpServiceConfiguration, - SpServiceRegistration, -} from '@streampipes/platform-services'; - -@Injectable({ providedIn: 'root' }) -export class ConfigurationService { - constructor(private http: HttpClient) {} - - getServerUrl() { - return '/streampipes-backend'; - } - - generateKeyPair(): Observable<string[]> { - return this.http - .get(this.getServerUrl() + '/api/v2/admin/general-config/keys', { - responseType: 'text', - observe: 'response', - }) - .pipe( - map(response => { - return new MultipartUtils().extractMultipartPlainTextContent( - response, - ); - }), - ); - } - - getMessagingSettings(): Observable<MessagingSettings> { - return this.http.get(this.getServerUrl() + '/api/v2/messaging').pipe( - map(response => { - return response as MessagingSettings; - }), - ); - } - - getRegisteredExtensionsServices(): Observable<SpServiceRegistration[]> { - return this.http - .get(this.getServerUrl() + '/api/v2/extensions-services') - .pipe( - map(response => { - return response as SpServiceRegistration[]; - }), - ); - } - - getExtensionsServiceConfigs(): Observable<SpServiceConfiguration[]> { - return this.http - .get( - this.getServerUrl() + - '/api/v2/extensions-services-configurations', - ) - .pipe( - map(response => { - return response as SpServiceConfiguration[]; - }), - ); - } - - updateExtensionsServiceConfigs( - config: SpServiceConfiguration, - ): Observable<object> { - return this.http.put( - this.getServerUrl() + - `/api/v2/extensions-services-configurations/${config.serviceGroup}`, - config, - ); - } - - updateMessagingSettings( - messagingSettings: MessagingSettings, - ): Observable<object> { - return this.http.post( - this.getServerUrl() + '/api/v2/messaging', - messagingSettings, - ); - } - - adjustConfigurationKey(key) { - const removedKey = key.substr(key.lastIndexOf('/') + 1, key.length); - - let str1 = removedKey.replace(/SP/g, ''); - str1 = str1.replace(/_/g, ' '); - if (str1.startsWith(' ')) { - str1 = str1.slice(1, str1.length); - } - return str1; - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import { Injectable, inject } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { MultipartUtils } from './multipart-utils'; +import { + MessagingSettings, + SpServiceConfiguration, + SpServiceRegistration, +} from '@streampipes/platform-services'; + +@Injectable({ providedIn: 'root' }) +export class ConfigurationService { + private http = inject(HttpClient); + + getServerUrl() { + return '/streampipes-backend'; + } + + generateKeyPair(): Observable<string[]> { + return this.http + .get(this.getServerUrl() + '/api/v2/admin/general-config/keys', { + responseType: 'text', + observe: 'response', + }) + .pipe( + map(response => { + return new MultipartUtils().extractMultipartPlainTextContent( + response, + ); + }), + ); + } + + getMessagingSettings(): Observable<MessagingSettings> { + return this.http.get(this.getServerUrl() + '/api/v2/messaging').pipe( + map(response => { + return response as MessagingSettings; + }), + ); + } + + getRegisteredExtensionsServices(): Observable<SpServiceRegistration[]> { + return this.http + .get(this.getServerUrl() + '/api/v2/extensions-services') + .pipe( + map(response => { + return response as SpServiceRegistration[]; + }), + ); + } + + getExtensionsServiceConfigs(): Observable<SpServiceConfiguration[]> { + return this.http + .get( + this.getServerUrl() + + '/api/v2/extensions-services-configurations', + ) + .pipe( + map(response => { + return response as SpServiceConfiguration[]; + }), + ); + } + + updateExtensionsServiceConfigs( + config: SpServiceConfiguration, + ): Observable<object> { + return this.http.put( + this.getServerUrl() + + `/api/v2/extensions-services-configurations/${config.serviceGroup}`, + config, + ); + } + + updateMessagingSettings( + messagingSettings: MessagingSettings, + ): Observable<object> { + return this.http.post( + this.getServerUrl() + '/api/v2/messaging', + messagingSettings, + ); + } + + adjustConfigurationKey(key) { + const removedKey = key.substr(key.lastIndexOf('/') + 1, key.length); + + let str1 = removedKey.replace(/SP/g, ''); + str1 = str1.replace(/_/g, ' '); + if (str1.startsWith(' ')) { + str1 = str1.slice(1, str1.length); + } + return str1; + } +} diff --git a/ui/src/app/configuration/sites-configuration/location-features-configuration/location-features-configuration.component.ts b/ui/src/app/configuration/sites-configuration/location-features-configuration/location-features-configuration.component.ts index 64471e01c0..556544ebc0 100644 --- a/ui/src/app/configuration/sites-configuration/location-features-configuration/location-features-configuration.component.ts +++ b/ui/src/app/configuration/sites-configuration/location-features-configuration/location-features-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input, OnDestroy, OnInit } from '@angular/core'; +import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core'; import { FormsModule, ReactiveFormsModule, @@ -67,6 +67,11 @@ import { MatIcon } from '@angular/material/icon'; export class LocationFeaturesConfigurationComponent implements OnInit, OnDestroy { + private fb = inject(UntypedFormBuilder); + private snackBar = inject(MatSnackBar); + private locationConfigService = inject(LocationConfigService); + private translateService = inject(TranslateService); + @Input() locationConfig: LocationConfig; @@ -74,13 +79,6 @@ export class LocationFeaturesConfigurationComponent formSubscription: Subscription; showLocationDetails = false; - constructor( - private fb: UntypedFormBuilder, - private snackBar: MatSnackBar, - private locationConfigService: LocationConfigService, - private translateService: TranslateService, - ) {} - ngOnInit(): void { this.locationForm = this.fb.group({}); this.showLocationDetails = this.locationConfig.locationEnabled; diff --git a/ui/src/app/configuration/sites-configuration/site-area-configuration/site-area-configuration.component.ts b/ui/src/app/configuration/sites-configuration/site-area-configuration/site-area-configuration.component.ts index 559c25299a..0b9e86dbbc 100644 --- a/ui/src/app/configuration/sites-configuration/site-area-configuration/site-area-configuration.component.ts +++ b/ui/src/app/configuration/sites-configuration/site-area-configuration/site-area-configuration.component.ts @@ -16,7 +16,7 @@ * */ -import { Component, Input, OnInit, ViewChild } from '@angular/core'; +import { Component, Input, OnInit, ViewChild, inject } from '@angular/core'; import { AssetConstants, AssetSiteDesc, @@ -71,6 +71,10 @@ import { MatTooltip } from '@angular/material/tooltip'; ], }) export class SiteAreaConfigurationComponent implements OnInit { + private genericStorageService = inject(GenericStorageService); + private dialogService = inject(DialogService); + private translateService = inject(TranslateService); + @Input() locationConfig: LocationConfig; @@ -84,12 +88,6 @@ export class SiteAreaConfigurationComponent implements OnInit { sort: MatSort; displayedColumns = ['name', 'areas', 'actions']; - constructor( - private genericStorageService: GenericStorageService, - private dialogService: DialogService, - private translateService: TranslateService, - ) {} - ngOnInit() { this.loadSites(); this.dataSource.sortingDataAccessor = (site, column) => {
