diff --git a/CHANGELOG.md b/CHANGELOG.md index a5533440c..f2dd5da8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added typed forms for all application ### Changed - Added an `required` option for input parameters +- Replaced the constructor with `inject` function for all components and services ## [0.25.1] -2024-08-22 ## Added diff --git a/src/app/account/account.component.ts b/src/app/account/account.component.ts index 958e4eba4..e01b5f8ce 100644 --- a/src/app/account/account.component.ts +++ b/src/app/account/account.component.ts @@ -1,6 +1,6 @@ import ProjectLinks from "src/app/project-links"; import { BaseComponent } from "src/app/common/base.component"; -import { ChangeDetectionStrategy, Component, ElementRef, OnInit, ViewChild } from "@angular/core"; +import { ChangeDetectionStrategy, Component, ElementRef, inject, OnInit, ViewChild } from "@angular/core"; import { AccountFragment } from "src/app/api/kamu.graphql.interface"; import { AccountTabs } from "./account.constants"; import { ActivatedRoute, Params } from "@angular/router"; @@ -24,9 +24,7 @@ import { LoggedUserService } from "../auth/logged-user.service"; }) export class AccountComponent extends BaseComponent implements OnInit { public readonly AccountTabs = AccountTabs; - public isDropdownMenu = false; - public user$: Observable; public datasetsAccount$: Observable; public activeTab$: Observable; @@ -34,14 +32,10 @@ export class AccountComponent extends BaseComponent implements OnInit { @ViewChild("containerMenu") containerMenu: ElementRef; @ViewChild("dropdownMenu") dropdownMenu: ElementRef; - constructor( - private route: ActivatedRoute, - private modalService: ModalService, - private accountService: AccountService, - private loggedUserService: LoggedUserService, - ) { - super(); - } + private route = inject(ActivatedRoute); + private modalService = inject(ModalService); + private accountService = inject(AccountService); + private loggedUserService = inject(LoggedUserService); public ngOnInit(): void { const accountName$ = this.route.params.pipe( diff --git a/src/app/account/additional-components/account-flows-tab/account-flows-tab.component.ts b/src/app/account/additional-components/account-flows-tab/account-flows-tab.component.ts index fec468835..037bb3021 100644 --- a/src/app/account/additional-components/account-flows-tab/account-flows-tab.component.ts +++ b/src/app/account/additional-components/account-flows-tab/account-flows-tab.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { combineLatest, map, of, switchMap, timer } from "rxjs"; import { MaybeNull } from "src/app/common/app.types"; import { @@ -27,9 +27,7 @@ export class AccountFlowsTabComponent extends FlowsTableProcessingBaseComponent public searchByDataset: DatasetListFlowsDataFragment[] = []; public readonly DISPLAY_COLUMNS = ["description", "information", "creator", "dataset", "options"]; - constructor(private accountService: AccountService) { - super(); - } + private accountService = inject(AccountService); ngOnInit(): void { this.getPageFromUrl(); diff --git a/src/app/account/additional-components/datasets-tab/datasets-tab.component.ts b/src/app/account/additional-components/datasets-tab/datasets-tab.component.ts index b21b64711..05b858318 100644 --- a/src/app/account/additional-components/datasets-tab/datasets-tab.component.ts +++ b/src/app/account/additional-components/datasets-tab/datasets-tab.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Input } from "@angular/core"; +import { ChangeDetectionStrategy, inject, Input } from "@angular/core"; import { Component } from "@angular/core"; import { DatasetSearchOverviewFragment, PageBasedInfo } from "src/app/api/kamu.graphql.interface"; import { AccountTabs } from "../../account.constants"; @@ -16,7 +16,7 @@ export class DatasetsTabComponent { @Input({ required: true }) public pageInfo: PageBasedInfo; public isClickableRow = true; - constructor(private navigationService: NavigationService) {} + private navigationService = inject(NavigationService); public get currentPage(): number { return this.pageInfo.currentPage + 1; diff --git a/src/app/api/access-token.api.ts b/src/app/api/access-token.api.ts index 36cab319a..8e10b0600 100644 --- a/src/app/api/access-token.api.ts +++ b/src/app/api/access-token.api.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { Observable, first, map } from "rxjs"; import { CreateAccessTokenGQL, @@ -17,11 +17,9 @@ import { noCacheFetchPolicy } from "../common/data.helpers"; providedIn: "root", }) export class AccessTokenApi { - constructor( - private listAccessTokensGQL: ListAccessTokensGQL, - private createAccessTokenGQL: CreateAccessTokenGQL, - private revokeAccessTokenGQL: RevokeAccessTokenGQL, - ) {} + private listAccessTokensGQL = inject(ListAccessTokensGQL); + private createAccessTokenGQL = inject(CreateAccessTokenGQL); + private revokeAccessTokenGQL = inject(RevokeAccessTokenGQL); public listAccessTokens(params: { accountId: string; diff --git a/src/app/api/account.api.ts b/src/app/api/account.api.ts index 656ab77d0..f37261e9b 100644 --- a/src/app/api/account.api.ts +++ b/src/app/api/account.api.ts @@ -1,5 +1,5 @@ import { Observable, first, map } from "rxjs"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { AccountByNameGQL, AccountByNameQuery, @@ -24,14 +24,12 @@ import { DatasetOperationError } from "../common/errors"; @Injectable({ providedIn: "root" }) export class AccountApi { - constructor( - private accountByNameGql: AccountByNameGQL, - private accountListFlowsGql: AccountListFlowsGQL, - private accountListDatasetsWithFlowsGql: AccountListDatasetsWithFlowsGQL, - private accountDatasetFlowsPausedGql: AccountDatasetFlowsPausedGQL, - private accountPauseFlowsGql: AccountPauseFlowsGQL, - private accountResumeFlowsGql: AccountResumeFlowsGQL, - ) {} + private accountByNameGql = inject(AccountByNameGQL); + private accountListFlowsGql = inject(AccountListFlowsGQL); + private accountListDatasetsWithFlowsGql = inject(AccountListDatasetsWithFlowsGQL); + private accountDatasetFlowsPausedGql = inject(AccountDatasetFlowsPausedGQL); + private accountPauseFlowsGql = inject(AccountPauseFlowsGQL); + private accountResumeFlowsGql = inject(AccountResumeFlowsGQL); public fetchAccountByName(accountName: string): Observable> { return this.accountByNameGql diff --git a/src/app/api/auth.api.ts b/src/app/api/auth.api.ts index 1cae8ee51..d96cc2862 100644 --- a/src/app/api/auth.api.ts +++ b/src/app/api/auth.api.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { catchError, first, map } from "rxjs/operators"; import { Observable, throwError } from "rxjs"; import { @@ -21,11 +21,9 @@ import { ApolloQueryResult } from "@apollo/client"; providedIn: "root", }) export class AuthApi { - constructor( - private getEnabledLoginMethodsGQL: GetEnabledLoginMethodsGQL, - private loginGQL: LoginGQL, - private fetchAccountDetailsGQL: FetchAccountDetailsGQL, - ) {} + private getEnabledLoginMethodsGQL = inject(GetEnabledLoginMethodsGQL); + private loginGQL = inject(LoginGQL); + private fetchAccountDetailsGQL = inject(FetchAccountDetailsGQL); public readEnabledLoginMethods(): Observable { return this.getEnabledLoginMethodsGQL.watch().valueChanges.pipe( diff --git a/src/app/api/dataset-flow.api.ts b/src/app/api/dataset-flow.api.ts index 36367243c..9b7bd5a25 100644 --- a/src/app/api/dataset-flow.api.ts +++ b/src/app/api/dataset-flow.api.ts @@ -1,5 +1,5 @@ import { MutationResult } from "apollo-angular"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { CancelScheduledTasksGQL, CancelScheduledTasksMutation, @@ -39,20 +39,18 @@ import { noCacheFetchPolicy } from "../common/data.helpers"; @Injectable({ providedIn: "root" }) export class DatasetFlowApi { - constructor( - private getDatasetFlowConfigsGQL: GetDatasetFlowConfigsGQL, - private datasetFlowScheduleGQL: DatasetFlowScheduleGQL, - private datasetFlowBatchingGQL: DatasetFlowBatchingGQL, - private getDatasetListFlowsGQL: GetDatasetListFlowsGQL, - private datasetPauseFlowsGQL: DatasetPauseFlowsGQL, - private datasetResumeFlowsGQL: DatasetResumeFlowsGQL, - private datasetAllFlowsPausedGQL: DatasetAllFlowsPausedGQL, - private datasetTriggerFlowGQL: DatasetTriggerFlowGQL, - private datasetFlowByIdGQL: GetFlowByIdGQL, - private cancelScheduledTasksGQL: CancelScheduledTasksGQL, - private datasetFlowCompactionGQL: DatasetFlowCompactionGQL, - private datasetFlowsInitiatorsGQL: DatasetFlowsInitiatorsGQL, - ) {} + private getDatasetFlowConfigsGQL = inject(GetDatasetFlowConfigsGQL); + private datasetFlowScheduleGQL = inject(DatasetFlowScheduleGQL); + private datasetFlowBatchingGQL = inject(DatasetFlowBatchingGQL); + private getDatasetListFlowsGQL = inject(GetDatasetListFlowsGQL); + private datasetPauseFlowsGQL = inject(DatasetPauseFlowsGQL); + private datasetResumeFlowsGQL = inject(DatasetResumeFlowsGQL); + private datasetAllFlowsPausedGQL = inject(DatasetAllFlowsPausedGQL); + private datasetTriggerFlowGQL = inject(DatasetTriggerFlowGQL); + private datasetFlowByIdGQL = inject(GetFlowByIdGQL); + private cancelScheduledTasksGQL = inject(CancelScheduledTasksGQL); + private datasetFlowCompactionGQL = inject(DatasetFlowCompactionGQL); + private datasetFlowsInitiatorsGQL = inject(DatasetFlowsInitiatorsGQL); public datasetTriggerFlow(params: { datasetId: string; diff --git a/src/app/api/dataset.api.ts b/src/app/api/dataset.api.ts index 6a165fbbd..61680ff76 100644 --- a/src/app/api/dataset.api.ts +++ b/src/app/api/dataset.api.ts @@ -37,7 +37,7 @@ import { } from "src/app/api/kamu.graphql.interface"; import AppValues from "src/app/common/app.values"; import { ApolloQueryResult } from "@apollo/client/core"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { map, first } from "rxjs/operators"; import { Observable } from "rxjs"; import { MutationResult } from "apollo-angular"; @@ -49,25 +49,23 @@ import { updateCacheHelper } from "../apollo-cache.helper"; @Injectable({ providedIn: "root" }) export class DatasetApi { - constructor( - private datasetMainDataGQL: GetDatasetMainDataGQL, - private datasetBasicsWithPermissionGQL: GetDatasetBasicsWithPermissionsGQL, - private datasetDataSqlRunGQL: GetDatasetDataSqlRunGQL, - private datasetHistoryGQL: GetDatasetHistoryGQL, - private datasetsByAccountNameGQL: DatasetsByAccountNameGQL, - private metadataBlockGQL: GetMetadataBlockGQL, - private datasetByIdGQL: DatasetByIdGQL, - private datasetByAccountAndDatasetNameGQL: DatasetByAccountAndDatasetNameGQL, - private createEmptyDatasetGQL: CreateEmptyDatasetGQL, - private createDatasetFromSnapshotGQL: CreateDatasetFromSnapshotGQL, - private commitEventToDatasetGQL: CommitEventToDatasetGQL, - private datasetSchemaGQL: GetDatasetSchemaGQL, - private updateReadmeGQL: UpdateReadmeGQL, - private deleteDatasetGQL: DeleteDatasetGQL, - private renameDatasetGQL: RenameDatasetGQL, - private datasetLineageGQL: GetDatasetLineageGQL, - private updateWatermarkGQL: UpdateWatermarkGQL, - ) {} + private datasetMainDataGQL = inject(GetDatasetMainDataGQL); + private datasetBasicsWithPermissionGQL = inject(GetDatasetBasicsWithPermissionsGQL); + private datasetDataSqlRunGQL = inject(GetDatasetDataSqlRunGQL); + private datasetHistoryGQL = inject(GetDatasetHistoryGQL); + private datasetsByAccountNameGQL = inject(DatasetsByAccountNameGQL); + private metadataBlockGQL = inject(GetMetadataBlockGQL); + private datasetByIdGQL = inject(DatasetByIdGQL); + private datasetByAccountAndDatasetNameGQL = inject(DatasetByAccountAndDatasetNameGQL); + private createEmptyDatasetGQL = inject(CreateEmptyDatasetGQL); + private createDatasetFromSnapshotGQL = inject(CreateDatasetFromSnapshotGQL); + private commitEventToDatasetGQL = inject(CommitEventToDatasetGQL); + private datasetSchemaGQL = inject(GetDatasetSchemaGQL); + private updateReadmeGQL = inject(UpdateReadmeGQL); + private deleteDatasetGQL = inject(DeleteDatasetGQL); + private renameDatasetGQL = inject(RenameDatasetGQL); + private datasetLineageGQL = inject(GetDatasetLineageGQL); + private updateWatermarkGQL = inject(UpdateWatermarkGQL); public getDatasetMainData(params: { accountName: string; diff --git a/src/app/api/engine.api.ts b/src/app/api/engine.api.ts index 6efc13454..deb40b3ec 100644 --- a/src/app/api/engine.api.ts +++ b/src/app/api/engine.api.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { EnginesGQL, EnginesQuery } from "./kamu.graphql.interface"; import { ApolloQueryResult } from "@apollo/client"; import { Observable } from "rxjs"; @@ -8,7 +8,7 @@ import { first, map } from "rxjs/operators"; providedIn: "root", }) export class EngineApi { - constructor(private enginesGQL: EnginesGQL) {} + private enginesGQL = inject(EnginesGQL); public getEngines(): Observable { return this.enginesGQL.watch().valueChanges.pipe( diff --git a/src/app/api/environment-variables.api.ts b/src/app/api/environment-variables.api.ts index e636c155e..c869f225a 100644 --- a/src/app/api/environment-variables.api.ts +++ b/src/app/api/environment-variables.api.ts @@ -11,7 +11,7 @@ import { SaveEnvVariableGQL, SaveEnvVariableMutation, } from "./kamu.graphql.interface"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { noCacheFetchPolicy } from "../common/data.helpers"; import { ApolloQueryResult } from "@apollo/client"; import { DatasetOperationError } from "../common/errors"; @@ -22,13 +22,11 @@ import { updateCacheHelper } from "../apollo-cache.helper"; providedIn: "root", }) export class EnvironmentVariablesApi { - constructor( - private listEnvVariablesGQL: ListEnvVariablesGQL, - private saveEnvVariableGQL: SaveEnvVariableGQL, - private modifyEnvVariableGQL: ModifyEnvVariableGQL, - private deleteEnvVariableGQL: DeleteEnvVariableGQL, - private exposedEnvVariableValueGQL: ExposedEnvVariableValueGQL, - ) {} + private listEnvVariablesGQL = inject(ListEnvVariablesGQL); + private saveEnvVariableGQL = inject(SaveEnvVariableGQL); + private modifyEnvVariableGQL = inject(ModifyEnvVariableGQL); + private deleteEnvVariableGQL = inject(DeleteEnvVariableGQL); + private exposedEnvVariableValueGQL = inject(ExposedEnvVariableValueGQL); public listEnvironmentVariables(params: { accountName: string; diff --git a/src/app/api/protocols.api.ts b/src/app/api/protocols.api.ts index 994a2d4f3..6c76289ab 100644 --- a/src/app/api/protocols.api.ts +++ b/src/app/api/protocols.api.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { Observable, first, map } from "rxjs"; import { DatasetProtocolsGQL, DatasetProtocolsQuery } from "./kamu.graphql.interface"; import { DatasetInfo } from "../interface/navigation.interface"; @@ -8,7 +8,7 @@ import { ApolloQueryResult } from "@apollo/client"; providedIn: "root", }) export class ProtocolsApi { - constructor(private protocolsGQL: DatasetProtocolsGQL) {} + private protocolsGQL = inject(DatasetProtocolsGQL); public getProtocols(datasetInfo: DatasetInfo): Observable { return this.protocolsGQL.watch({ ...datasetInfo }).valueChanges.pipe( diff --git a/src/app/api/search.api.ts b/src/app/api/search.api.ts index 19e1d4129..a273159a8 100644 --- a/src/app/api/search.api.ts +++ b/src/app/api/search.api.ts @@ -1,5 +1,5 @@ import { ApolloQueryResult } from "@apollo/client/core"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { map, first } from "rxjs/operators"; import { Observable, of } from "rxjs"; @@ -18,10 +18,8 @@ export const SEARCH_RESULTS_PER_PAGE = 10; @Injectable({ providedIn: "root" }) export class SearchApi { - constructor( - private searchDatasetsAutocompleteGQL: SearchDatasetsAutocompleteGQL, - private searchDatasetsOverviewGQL: SearchDatasetsOverviewGQL, - ) {} + private searchDatasetsAutocompleteGQL = inject(SearchDatasetsAutocompleteGQL); + private searchDatasetsOverviewGQL = inject(SearchDatasetsOverviewGQL); // Search query that returns high-level dataset information for displaying the dataset badge public overviewDatasetSearch( diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 3317abb70..63a4ab189 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,7 +1,7 @@ import { AuthenticationError } from "./common/errors"; import { throwError } from "rxjs"; import { NavigationService } from "./services/navigation.service"; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, inject, OnInit } from "@angular/core"; import AppValues from "./common/app.values"; import { filter, map } from "rxjs/operators"; import { NavigationEnd, Router, RouterEvent } from "@angular/router"; @@ -60,26 +60,21 @@ export class AppComponent extends BaseComponent implements OnInit { this.checkView(); } - constructor( - private router: Router, - private loginService: LoginService, - private modalService: ModalService, - private navigationService: NavigationService, - private appConfigService: AppConfigService, - private cdr: ChangeDetectorRef, - private loggedUserService: LoggedUserService, - private localStorageService: LocalStorageService, - ) { - super(); - // apollo client error messages + private router = inject(Router); + private loginService = inject(LoginService); + private modalService = inject(ModalService); + private navigationService = inject(NavigationService); + private appConfigService = inject(AppConfigService); + private cdr = inject(ChangeDetectorRef); + private loggedUserService = inject(LoggedUserService); + private localStorageService = inject(LocalStorageService); + + public ngOnInit(): void { if (isDevMode()) { loadErrorMessages(); } this.outputAppVersion(); this.setMomentOptions(); - } - - public ngOnInit(): void { this.readConfiguration(); this.checkView(); diff --git a/src/app/auth/github-callback/github.callback.ts b/src/app/auth/github-callback/github.callback.ts index 3a088bc2e..2d225f468 100644 --- a/src/app/auth/github-callback/github.callback.ts +++ b/src/app/auth/github-callback/github.callback.ts @@ -1,5 +1,5 @@ import { NavigationService } from "../../services/navigation.service"; -import { ChangeDetectionStrategy, Component, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, OnInit } from "@angular/core"; import { ActivatedRoute, Params } from "@angular/router"; import { BaseComponent } from "src/app/common/base.component"; import { LoginService } from "../login/login.service"; @@ -11,13 +11,9 @@ import { GithubLoginCredentials } from "src/app/api/auth.api.model"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class GithubCallbackComponent extends BaseComponent implements OnInit { - public constructor( - private route: ActivatedRoute, - private navigationService: NavigationService, - private loginService: LoginService, - ) { - super(); - } + private route = inject(ActivatedRoute); + private navigationService = inject(NavigationService); + private loginService = inject(LoginService); public ngOnInit() { if (!this.searchString.includes("?code=")) { diff --git a/src/app/auth/guards/admin.guard.ts b/src/app/auth/guards/admin.guard.ts index c4eae208b..7d0d1a580 100644 --- a/src/app/auth/guards/admin.guard.ts +++ b/src/app/auth/guards/admin.guard.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { NavigationService } from "src/app/services/navigation.service"; import { LoggedUserService } from "../logged-user.service"; @@ -6,10 +6,8 @@ import { LoggedUserService } from "../logged-user.service"; providedIn: "root", }) export class AdminGuard { - constructor( - private navigationService: NavigationService, - private loggedUserService: LoggedUserService, - ) {} + private navigationService = inject(NavigationService); + private loggedUserService = inject(LoggedUserService); public canActivate(): boolean { if (!this.isAdmin()) { diff --git a/src/app/auth/guards/authenticated.guard.ts b/src/app/auth/guards/authenticated.guard.ts index 3a60dfb28..d41a9486f 100644 --- a/src/app/auth/guards/authenticated.guard.ts +++ b/src/app/auth/guards/authenticated.guard.ts @@ -1,15 +1,13 @@ import { NavigationService } from "src/app/services/navigation.service"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { LoggedUserService } from "src/app/auth/logged-user.service"; @Injectable({ providedIn: "root", }) export class AuthenticatedGuard { - constructor( - private navigationService: NavigationService, - private loggedUserService: LoggedUserService, - ) {} + private navigationService = inject(NavigationService); + private loggedUserService = inject(LoggedUserService); public canActivate(): boolean { if (!this.loggedUserService.isAuthenticated) { diff --git a/src/app/auth/guards/login.guard.ts b/src/app/auth/guards/login.guard.ts index 16b1dbf1d..6094e7528 100644 --- a/src/app/auth/guards/login.guard.ts +++ b/src/app/auth/guards/login.guard.ts @@ -1,5 +1,5 @@ import { NavigationService } from "src/app/services/navigation.service"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { ActivatedRouteSnapshot, RouterStateSnapshot } from "@angular/router"; import ProjectLinks from "src/app/project-links"; import { LoggedUserService } from "../logged-user.service"; @@ -9,11 +9,9 @@ import { LoginService } from "../login/login.service"; providedIn: "root", }) export class LoginGuard { - constructor( - private navigationService: NavigationService, - private loginService: LoginService, - private loggedUserService: LoggedUserService, - ) {} + private navigationService = inject(NavigationService); + private loginService = inject(LoginService); + private loggedUserService = inject(LoggedUserService); public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { // URLs start from / diff --git a/src/app/auth/logged-user.service.ts b/src/app/auth/logged-user.service.ts index e2c842545..24b415090 100644 --- a/src/app/auth/logged-user.service.ts +++ b/src/app/auth/logged-user.service.ts @@ -18,7 +18,6 @@ import { LocalStorageService } from "../services/local-storage.service"; }) export class LoggedUserService extends UnsubscribeOnDestroyAdapter { private loggedInUser: MaybeNull = null; - private loggedInUser$: Subject> = new ReplaySubject>(1); constructor( @@ -29,7 +28,6 @@ export class LoggedUserService extends UnsubscribeOnDestroyAdapter { private apollo: Apollo, ) { super(); - this.trackSubscriptions( this.loginService.accessTokenChanges.subscribe((token: string) => this.saveAccessToken(token)), this.loginService.accountChanges.subscribe((user: AccountFragment) => this.changeUser(user)), diff --git a/src/app/auth/login/login.component.ts b/src/app/auth/login/login.component.ts index 24e07f16c..8569b4c02 100644 --- a/src/app/auth/login/login.component.ts +++ b/src/app/auth/login/login.component.ts @@ -23,28 +23,21 @@ export class LoginComponent extends BaseComponent implements OnInit { "LoginComponent requires at least 1 login method in configuration"; private localStorageService = inject(LocalStorageService); + private route = inject(ActivatedRoute); + private fb = inject(FormBuilder); + private loginService = inject(LoginService); public readonly APP_LOGO = `/${AppValues.APP_LOGO}`; public readonly LoginMethod = LoginMethod; public selectedLoginMethod?: LoginMethod = undefined; - public passwordLoginForm: FormGroup; + public passwordLoginForm: FormGroup = this.fb.group({ + login: ["", [Validators.required]], + password: ["", [Validators.required]], + }); public passwordLoginError$: Observable = this.loginService.passwordLoginErrorOccurrences.pipe(shareReplay()); - public constructor( - private route: ActivatedRoute, - private fb: FormBuilder, - private loginService: LoginService, - ) { - super(); - - this.passwordLoginForm = this.fb.group({ - login: ["", [Validators.required]], - password: ["", [Validators.required]], - }); - } - public ngOnInit(): void { const loginMethods: LoginMethod[] = this.loginService.loginMethods; if (loginMethods.length === 1) { diff --git a/src/app/auth/login/login.service.ts b/src/app/auth/login/login.service.ts index 1dae82051..a4d252889 100644 --- a/src/app/auth/login/login.service.ts +++ b/src/app/auth/login/login.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { Observable, ReplaySubject, Subject, map } from "rxjs"; import { AuthApi } from "src/app/api/auth.api"; import { GithubLoginCredentials, PasswordLoginCredentials } from "src/app/api/auth.api.model"; @@ -16,13 +16,11 @@ import { LocalStorageService } from "src/app/services/local-storage.service"; providedIn: "root", }) export class LoginService { - public constructor( - private authApi: AuthApi, - private navigationService: NavigationService, - private appConfigService: AppConfigService, - private localStorageService: LocalStorageService, - private httpClient: HttpClient, - ) {} + private authApi = inject(AuthApi); + private navigationService = inject(NavigationService); + private appConfigService = inject(AppConfigService); + private localStorageService = inject(LocalStorageService); + private httpClient = inject(HttpClient); private accessToken$: Subject = new ReplaySubject(1); private account$: Subject = new ReplaySubject(1); diff --git a/src/app/auth/settings/account-settings.component.ts b/src/app/auth/settings/account-settings.component.ts index 5b87dffc1..a039eebd6 100644 --- a/src/app/auth/settings/account-settings.component.ts +++ b/src/app/auth/settings/account-settings.component.ts @@ -1,7 +1,7 @@ import ProjectLinks from "src/app/project-links"; import { AccountFragment } from "src/app/api/kamu.graphql.interface"; import { AccountSettingsTabs } from "./account-settings.constants"; -import { ChangeDetectionStrategy, Component, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, OnInit } from "@angular/core"; import { ActivatedRoute, NavigationEnd, Router } from "@angular/router"; import { filter } from "rxjs/operators"; import { BaseComponent } from "src/app/common/base.component"; @@ -23,13 +23,9 @@ export class AccountSettingsComponent extends BaseComponent implements OnInit { public activeTab: AccountSettingsTabs = AccountSettingsTabs.PROFILE; public user$: Observable>; - constructor( - private router: Router, - private route: ActivatedRoute, - private loggedUserService: LoggedUserService, - ) { - super(); - } + private router = inject(Router); + private route = inject(ActivatedRoute); + private loggedUserService = inject(LoggedUserService); public ngOnInit(): void { this.trackSubscription( diff --git a/src/app/auth/settings/tabs/access-tokens-tab/access-tokens-tab.component.ts b/src/app/auth/settings/tabs/access-tokens-tab/access-tokens-tab.component.ts index f6eac5eb7..a5e47c2ce 100644 --- a/src/app/auth/settings/tabs/access-tokens-tab/access-tokens-tab.component.ts +++ b/src/app/auth/settings/tabs/access-tokens-tab/access-tokens-tab.component.ts @@ -7,7 +7,7 @@ import { PageBasedInfo, ViewAccessToken, } from "src/app/api/kamu.graphql.interface"; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, ViewChild } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, OnInit, ViewChild } from "@angular/core"; import { MatSort } from "@angular/material/sort"; import { MatTableDataSource } from "@angular/material/table"; import { AccountSettingsTabs, TokenCreateStep } from "../../account-settings.constants"; @@ -28,6 +28,13 @@ import { CreateTokenFormType } from "./access-tokens-tab.types"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class AccessTokensTabComponent extends BaseComponent implements OnInit { + private fb = inject(FormBuilder); + private modalService = inject(ModalService); + private clipboard = inject(Clipboard); + private accessTokenService = inject(AccessTokenService); + private navigationService = inject(NavigationService); + private cdr = inject(ChangeDetectorRef); + @Input({ required: true }) public account: AccountFragment; @ViewChild(MatSort) sort: MatSort; public searchTokenName: string = ""; @@ -45,17 +52,6 @@ export class AccessTokensTabComponent extends BaseComponent implements OnInit { public readonly PER_PAGE = 15; public readonly DATE_FORMAT = AppValues.DISPLAY_FLOW_DATE_FORMAT; - constructor( - private fb: FormBuilder, - private modalService: ModalService, - private clipboard: Clipboard, - private accessTokenService: AccessTokenService, - private navigationService: NavigationService, - private cdr: ChangeDetectorRef, - ) { - super(); - } - ngOnInit(): void { this.getPageFromUrl(); this.updateTable(this.currentPage); diff --git a/src/app/common/components/flows-table/flows-table.component.ts b/src/app/common/components/flows-table/flows-table.component.ts index fb9daf2a3..85de636a5 100644 --- a/src/app/common/components/flows-table/flows-table.component.ts +++ b/src/app/common/components/flows-table/flows-table.component.ts @@ -4,6 +4,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, + inject, Input, OnChanges, OnInit, @@ -82,14 +83,10 @@ export class FlowsTableComponent extends BaseComponent implements OnInit, OnChan public dropdownStatustList: FilterStatusType[] = []; public selectedStatusItems: FilterStatusType[] = []; - constructor( - private navigationService: NavigationService, - private modalService: ModalService, - private datasetFlowsService: DatasetFlowsService, - private toastrService: ToastrService, - ) { - super(); - } + private navigationService = inject(NavigationService); + private modalService = inject(ModalService); + private datasetFlowsService = inject(DatasetFlowsService); + private toastrService = inject(ToastrService); ngOnChanges(changes: SimpleChanges): void { const nodes: SimpleChange = changes.nodes; diff --git a/src/app/common/pipes/safe-html.pipe.ts b/src/app/common/pipes/safe-html.pipe.ts index 983819f48..5a7244816 100644 --- a/src/app/common/pipes/safe-html.pipe.ts +++ b/src/app/common/pipes/safe-html.pipe.ts @@ -1,11 +1,11 @@ -import { Pipe, PipeTransform } from "@angular/core"; +import { inject, Pipe, PipeTransform } from "@angular/core"; import { DomSanitizer, SafeHtml } from "@angular/platform-browser"; @Pipe({ name: "safeHtml", }) export class SafeHtmlPipe implements PipeTransform { - constructor(private sanitizer: DomSanitizer) {} + private sanitizer = inject(DomSanitizer); transform(html: string): SafeHtml { return this.sanitizer.bypassSecurityTrustHtml(html); diff --git a/src/app/components/app-header/app-header.component.ts b/src/app/components/app-header/app-header.component.ts index b521f0373..bf2bf58f7 100644 --- a/src/app/components/app-header/app-header.component.ts +++ b/src/app/components/app-header/app-header.component.ts @@ -6,6 +6,7 @@ import { Component, ElementRef, EventEmitter, + inject, Input, OnInit, Output, @@ -63,15 +64,11 @@ export class AppHeaderComponent extends BaseComponent implements OnInit { public searchQuery = ""; public searching = false; - public constructor( - private appSearchAPI: SearchApi, - private route: ActivatedRoute, - private router: Router, - private cdr: ChangeDetectorRef, - private navigationService: NavigationService, - ) { - super(); - } + private appSearchAPI = inject(SearchApi); + private route = inject(ActivatedRoute); + private router = inject(Router); + private cdr = inject(ChangeDetectorRef); + private navigationService = inject(NavigationService); public ngOnInit(): void { this.trackSubscriptions( diff --git a/src/app/components/custom-pagination-component/custom-pagination.component.ts b/src/app/components/custom-pagination-component/custom-pagination.component.ts index 3fb14486e..847b5437b 100644 --- a/src/app/components/custom-pagination-component/custom-pagination.component.ts +++ b/src/app/components/custom-pagination-component/custom-pagination.component.ts @@ -13,15 +13,9 @@ export class CustomPaginationComponent implements OnChanges { @Input({ required: true }) limit: number; // record per page @Input({ required: true }) total: number; // total records @Input() range = 5; - @Output() pageChange: EventEmitter; - totalPageNo: number[]; - totalSizeOfPages: number; - - constructor() { - this.totalSizeOfPages = 0; - this.totalPageNo = []; - this.pageChange = new EventEmitter(); - } + @Output() pageChange: EventEmitter = new EventEmitter(); + public totalPageNo: number[] = []; + public totalSizeOfPages: number = 0; public ngOnChanges() { this.totalSizeOfPages = this.total / this.limit; diff --git a/src/app/components/data-access-panel/data-access-panel.component.ts b/src/app/components/data-access-panel/data-access-panel.component.ts index 44d1b596c..30d5537f2 100644 --- a/src/app/components/data-access-panel/data-access-panel.component.ts +++ b/src/app/components/data-access-panel/data-access-panel.component.ts @@ -1,6 +1,6 @@ import { MaybeUndefined } from "./../../common/app.types"; import { ProtocolsService } from "./../../services/protocols.service"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { DatasetBasicsFragment, DatasetEndpoints } from "src/app/api/kamu.graphql.interface"; import AppValues from "src/app/common/app.values"; import { Clipboard } from "@angular/cdk/clipboard"; @@ -16,10 +16,8 @@ export class DataAccessPanelComponent implements OnInit { @Input({ required: true }) datasetBasics: DatasetBasicsFragment; public protocols$: Observable>; - constructor( - private clipboard: Clipboard, - private protocolsService: ProtocolsService, - ) {} + private clipboard = inject(Clipboard); + private protocolsService = inject(ProtocolsService); ngOnInit(): void { this.initClipboardHints(); diff --git a/src/app/components/dataset-list-item/dataset-list-item.component.ts b/src/app/components/dataset-list-item/dataset-list-item.component.ts index 4a36a7ce2..50399f762 100644 --- a/src/app/components/dataset-list-item/dataset-list-item.component.ts +++ b/src/app/components/dataset-list-item/dataset-list-item.component.ts @@ -1,6 +1,6 @@ import { ModalService } from "../modal/modal.service"; import { DatasetSearchOverviewFragment } from "../../api/kamu.graphql.interface"; -import { Component, EventEmitter, Input, Output } from "@angular/core"; +import { Component, EventEmitter, inject, Input, Output } from "@angular/core"; import { promiseWithCatch } from "src/app/common/app.helpers"; import { NavigationService } from "src/app/services/navigation.service"; @@ -15,10 +15,8 @@ export class DatasetListItemComponent { @Input({ required: true }) public rowIndex: number; @Output() public selectDatasetEmit = new EventEmitter(); - public constructor( - private modalService: ModalService, - private navigationService: NavigationService, - ) {} + private modalService = inject(ModalService); + private navigationService = inject(NavigationService); public selectTopic(topicName: string): void { promiseWithCatch( diff --git a/src/app/components/display-hash/display-hash.component.ts b/src/app/components/display-hash/display-hash.component.ts index 981d48463..17f89c9e0 100644 --- a/src/app/components/display-hash/display-hash.component.ts +++ b/src/app/components/display-hash/display-hash.component.ts @@ -1,6 +1,6 @@ import { DatasetInfo } from "../../interface/navigation.interface"; import { NavigationService } from "../../services/navigation.service"; -import { Component, Input } from "@angular/core"; +import { Component, inject, Input } from "@angular/core"; import { Clipboard } from "@angular/cdk/clipboard"; import { ToastrService } from "ngx-toastr"; @@ -15,11 +15,9 @@ export class DisplayHashComponent { @Input() public showCopyButton = false; @Input() public class = "mr-1 hashBlock"; - constructor( - private navigationService: NavigationService, - private clipboard: Clipboard, - private toastr: ToastrService, - ) {} + private navigationService = inject(NavigationService); + private clipboard = inject(Clipboard); + private toastr = inject(ToastrService); public navigateToMetadataBlock(accountName: string, datasetName: string, blockHash: string): void { this.navigationService.navigateToMetadataBlock({ diff --git a/src/app/components/lineage-graph/lineage-graph.component.ts b/src/app/components/lineage-graph/lineage-graph.component.ts index 4af738521..773152674 100644 --- a/src/app/components/lineage-graph/lineage-graph.component.ts +++ b/src/app/components/lineage-graph/lineage-graph.component.ts @@ -5,6 +5,7 @@ import { ElementRef, EventEmitter, HostListener, + inject, Input, OnChanges, OnInit, @@ -46,10 +47,8 @@ export class LineageGraphComponent implements OnInit, OnChanges { this.changeLineageGraphView(); } - constructor( - private sessionStorageService: SessionStorageService, - private widgetHeightService: WidgetHeightService, - ) {} + private sessionStorageService = inject(SessionStorageService); + private widgetHeightService = inject(WidgetHeightService); public ngOnInit(): void { this.view = [this.INITIAL_GRAPH_VIEW_WIDTH, this.lineageGraphHeight()]; diff --git a/src/app/components/modal/modal.component.ts b/src/app/components/modal/modal.component.ts index fa3109585..6e711658d 100755 --- a/src/app/components/modal/modal.component.ts +++ b/src/app/components/modal/modal.component.ts @@ -6,6 +6,7 @@ import { ComponentFactoryResolver, ComponentRef, ChangeDetectorRef, + inject, } from "@angular/core"; import { DynamicComponent } from "./dynamic.component"; @@ -38,14 +39,10 @@ export class ModalComponent extends BaseComponent implements OnInit { spinner: ModalSpinnerComponent, }; - constructor( - private componentFactoryResolver: ComponentFactoryResolver, - private modalService: ModalService, - private cdr: ChangeDetectorRef, - private location: Location, - ) { - super(); - } + private componentFactoryResolver = inject(ComponentFactoryResolver); + private modalService = inject(ModalService); + private cdr = inject(ChangeDetectorRef); + private location = inject(Location); ngOnInit() { this.trackSubscription( diff --git a/src/app/components/overview-history-summary-header/overview-history-summary-header.component.ts b/src/app/components/overview-history-summary-header/overview-history-summary-header.component.ts index 5ca6b7348..da660a59d 100644 --- a/src/app/components/overview-history-summary-header/overview-history-summary-header.component.ts +++ b/src/app/components/overview-history-summary-header/overview-history-summary-header.component.ts @@ -1,6 +1,6 @@ import { MaybeUndefined } from "src/app/common/app.types"; import { NavigationService } from "../../services/navigation.service"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { AccountExtendedFragment, MetadataBlockFragment } from "src/app/api/kamu.graphql.interface"; import AppValues from "src/app/common/app.values"; import { DataHelpers } from "src/app/common/data.helpers"; @@ -19,7 +19,7 @@ export class OverviewHistorySummaryHeaderComponent { public readonly DEFAULT_AVATAR_URL = AppValues.DEFAULT_AVATAR_URL; - constructor(private navigationService: NavigationService) {} + private navigationService = inject(NavigationService); get systemTime(): string { return this.metadataBlockFragment ? this.metadataBlockFragment.systemTime : ""; diff --git a/src/app/components/page-not-found/page-not-found.component.ts b/src/app/components/page-not-found/page-not-found.component.ts index 15c0b5bd6..5879fa039 100644 --- a/src/app/components/page-not-found/page-not-found.component.ts +++ b/src/app/components/page-not-found/page-not-found.component.ts @@ -1,5 +1,5 @@ import { NavigationService } from "src/app/services/navigation.service"; -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject } from "@angular/core"; import AppValues from "src/app/common/app.values"; @Component({ @@ -11,7 +11,7 @@ import AppValues from "src/app/common/app.values"; export class PageNotFoundComponent { public readonly APP_LOGO = `/${AppValues.APP_LOGO}`; - constructor(private navigationService: NavigationService) {} + private navigationService = inject(NavigationService); public navigateToHome(): void { this.navigationService.navigateToHome(); diff --git a/src/app/components/spinner/spinner.interceptor.ts b/src/app/components/spinner/spinner.interceptor.ts index 7a6ccad4d..66f2d7be4 100644 --- a/src/app/components/spinner/spinner.interceptor.ts +++ b/src/app/components/spinner/spinner.interceptor.ts @@ -4,9 +4,10 @@ import { Observable } from "rxjs"; import { finalize } from "rxjs/operators"; import { environment } from "../../../environments/environment"; import AppValues from "src/app/common/app.values"; +import { inject } from "@angular/core"; export class SpinnerInterceptor implements HttpInterceptor { - constructor(private spinnerService: SpinnerService) {} + private spinnerService = inject(SpinnerService); timer: NodeJS.Timer; intercept(req: HttpRequest, next: HttpHandler): Observable> { const skipGlobalLoader = Boolean(req.headers.get(AppValues.HEADERS_SKIP_LOADING_KEY)); diff --git a/src/app/components/spinner/spinner/spinner.component.ts b/src/app/components/spinner/spinner/spinner.component.ts index f64a9a957..1fe5e5edc 100644 --- a/src/app/components/spinner/spinner/spinner.component.ts +++ b/src/app/components/spinner/spinner/spinner.component.ts @@ -1,5 +1,5 @@ import { SpinnerService } from "../spinner.service"; -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject } from "@angular/core"; @Component({ selector: "app-spinner", @@ -8,6 +8,6 @@ import { ChangeDetectionStrategy, Component } from "@angular/core"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class SpinnerComponent { - constructor(private spinnerService: SpinnerService) {} - isLoading$ = this.spinnerService.isLoadingChanges; + private spinnerService = inject(SpinnerService); + public isLoading$ = this.spinnerService.isLoadingChanges; } diff --git a/src/app/components/timeline-component/timeline.component.ts b/src/app/components/timeline-component/timeline.component.ts index 951e1e6a5..7b03b0059 100644 --- a/src/app/components/timeline-component/timeline.component.ts +++ b/src/app/components/timeline-component/timeline.component.ts @@ -1,5 +1,5 @@ import { NavigationService } from "src/app/services/navigation.service"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { MetadataBlockFragment, PageBasedInfo } from "src/app/api/kamu.graphql.interface"; import { DataHelpers } from "src/app/common/data.helpers"; import AppValues from "src/app/common/app.values"; @@ -16,7 +16,7 @@ export class TimelineComponent { @Input({ required: true }) public datasetName: string; public DEFAULT_AVATAR_URL = AppValues.DEFAULT_AVATAR_URL; - constructor(private navigationService: NavigationService) {} + private navigationService = inject(NavigationService); public navigateToOwnerView(ownerName: string): void { this.navigationService.navigateToOwnerView(ownerName); diff --git a/src/app/dataset-block/metadata-block/block.service.ts b/src/app/dataset-block/metadata-block/block.service.ts index 184869345..a26a8208b 100644 --- a/src/app/dataset-block/metadata-block/block.service.ts +++ b/src/app/dataset-block/metadata-block/block.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { Subject, Observable } from "rxjs"; import { map } from "rxjs/operators"; import { DatasetApi } from "src/app/api/dataset.api"; @@ -10,7 +10,7 @@ import { DatasetInfo } from "src/app/interface/navigation.interface"; providedIn: "root", }) export class BlockService { - constructor(private datasetApi: DatasetApi) {} + private datasetApi = inject(DatasetApi); public currentBlock: MetadataBlockFragment; diff --git a/src/app/dataset-block/metadata-block/components/block-header/block-header.component.ts b/src/app/dataset-block/metadata-block/components/block-header/block-header.component.ts index 33e09193b..07148ddb9 100644 --- a/src/app/dataset-block/metadata-block/components/block-header/block-header.component.ts +++ b/src/app/dataset-block/metadata-block/components/block-header/block-header.component.ts @@ -1,6 +1,6 @@ import { BaseComponent } from "src/app/common/base.component"; import { MetadataBlockFragment } from "../../../../api/kamu.graphql.interface"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { Observable } from "rxjs"; import { DatasetInfo } from "src/app/interface/navigation.interface"; import { BlockService } from "../../block.service"; @@ -16,9 +16,7 @@ export class BlockHeaderComponent extends BaseComponent implements OnInit { @Input({ required: true }) public blockHash: string; @Input({ required: true }) public datasetInfo: DatasetInfo; - constructor(private blockService: BlockService) { - super(); - } + private blockService = inject(BlockService); ngOnInit(): void { this.block$ = this.blockService.metadataBlockChanges; diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/base-dynamic-event/base-dynamic-event.component.ts b/src/app/dataset-block/metadata-block/components/event-details/components/base-dynamic-event/base-dynamic-event.component.ts index b050d1209..ddfe91b3e 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/base-dynamic-event/base-dynamic-event.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/base-dynamic-event/base-dynamic-event.component.ts @@ -8,6 +8,7 @@ import { ChangeDetectorRef, ComponentRef, AfterViewChecked, + inject, } from "@angular/core"; import { EventRow, EventSection } from "../../dynamic-events/dynamic-events.model"; import { BasePropertyComponent } from "../common/base-property/base-property.component"; @@ -24,9 +25,7 @@ export class BaseDynamicEventComponent extends BaseCompon container: QueryList; public eventSections: EventSection[]; - public constructor(protected cdr: ChangeDetectorRef) { - super(); - } + protected cdr = inject(ChangeDetectorRef); ngAfterViewChecked(): void { let componentRef: ComponentRef; diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/block-interval-property/block-interval-property.component.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/block-interval-property/block-interval-property.component.ts index 69245b16e..8bf8d086f 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/block-interval-property/block-interval-property.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/block-interval-property/block-interval-property.component.ts @@ -1,7 +1,7 @@ import { DatasetInfo } from "../../../../../../../interface/navigation.interface"; import { DatasetByIdQuery } from "../../../../../../../api/kamu.graphql.interface"; import { BasePropertyComponent } from "src/app/dataset-block/metadata-block/components/event-details/components/common/base-property/base-property.component"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { DatasetService } from "src/app/dataset-view/dataset.service"; @Component({ @@ -14,9 +14,7 @@ export class BlockIntervalPropertyComponent extends BasePropertyComponent implem @Input({ required: true }) public data: { prevBlockHash: string; newBlockHash: string; datasetId: string }; public datasetInfo: DatasetInfo = { accountName: "", datasetName: "" }; - constructor(private datasetService: DatasetService) { - super(); - } + private datasetService = inject(DatasetService); ngOnInit(): void { this.trackSubscription( diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-by-id-property/dataset-name-by-id-property.component.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-by-id-property/dataset-name-by-id-property.component.ts index a6c66b7b9..d82c10a61 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-by-id-property/dataset-name-by-id-property.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-by-id-property/dataset-name-by-id-property.component.ts @@ -1,5 +1,5 @@ import { BasePropertyComponent } from "src/app/dataset-block/metadata-block/components/event-details/components/common/base-property/base-property.component"; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, OnInit } from "@angular/core"; import { DatasetService } from "src/app/dataset-view/dataset.service"; import { DatasetByIdQuery } from "src/app/api/kamu.graphql.interface"; import { DatasetInfo } from "src/app/interface/navigation.interface"; @@ -16,13 +16,9 @@ export class DatasetNameByIdPropertyComponent extends BasePropertyComponent impl @Input({ required: true }) public data: string; public datasetInfo: DatasetInfo = { accountName: "", datasetName: "" }; - constructor( - private datasetService: DatasetService, - private navigationService: NavigationService, - private cdr: ChangeDetectorRef, - ) { - super(); - } + private datasetService = inject(DatasetService); + private navigationService = inject(NavigationService); + private cdr = inject(ChangeDetectorRef); ngOnInit(): void { this.trackSubscription( diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-property/dataset-name-property.component.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-property/dataset-name-property.component.ts index 625d15e89..00c01995b 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-property/dataset-name-property.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/dataset-name-property/dataset-name-property.component.ts @@ -1,5 +1,5 @@ import { NavigationService } from "../../../../../../../services/navigation.service"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { BasePropertyComponent } from "../base-property/base-property.component"; import { DatasetViewTypeEnum } from "src/app/dataset-view/dataset-view.interface"; @@ -12,9 +12,7 @@ import { DatasetViewTypeEnum } from "src/app/dataset-view/dataset-view.interface export class DatasetNamePropertyComponent extends BasePropertyComponent { @Input({ required: true }) public data: { datasetName: string; ownerAccountName: string }; - public constructor(private navigationService: NavigationService) { - super(); - } + private navigationService = inject(NavigationService); public navigateToDatasetView(): void { this.navigationService.navigateToDatasetView({ diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.ts index 3f3b3706d..3b2f4a193 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/offset-interval-property/offset-interval-property.component.ts @@ -1,7 +1,7 @@ import { DatasetByIdQuery } from "../../../../../../../api/kamu.graphql.interface"; import { NavigationService } from "../../../../../../../services/navigation.service"; import { BasePropertyComponent } from "src/app/dataset-block/metadata-block/components/event-details/components/common/base-property/base-property.component"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { OffsetInterval } from "src/app/api/kamu.graphql.interface"; import { DatasetInfo } from "src/app/interface/navigation.interface"; import { DatasetViewTypeEnum } from "src/app/dataset-view/dataset-view.interface"; @@ -20,12 +20,9 @@ export class OffsetIntervalPropertyComponent extends BasePropertyComponent imple datasetId: MaybeNull; }; private datasetInfo: DatasetInfo = { accountName: "", datasetName: "" }; - constructor( - private navigationService: NavigationService, - private datasetService: DatasetService, - ) { - super(); - } + private navigationService = inject(NavigationService); + private datasetService = inject(DatasetService); + ngOnInit(): void { if (this.data.datasetId) { this.trackSubscription( diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/common/owner-property/owner-property.component.ts b/src/app/dataset-block/metadata-block/components/event-details/components/common/owner-property/owner-property.component.ts index 66c264355..3b8cc4cd7 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/common/owner-property/owner-property.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/common/owner-property/owner-property.component.ts @@ -1,6 +1,6 @@ import { NavigationService } from "../../../../../../../services/navigation.service"; import { AccountBasicsFragment } from "../../../../../../../api/kamu.graphql.interface"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { BasePropertyComponent } from "../base-property/base-property.component"; @Component({ @@ -12,9 +12,7 @@ import { BasePropertyComponent } from "../base-property/base-property.component" export class OwnerPropertyComponent extends BasePropertyComponent { @Input({ required: true }) public data: AccountBasicsFragment; - constructor(private navigationService: NavigationService) { - super(); - } + private navigationService = inject(NavigationService); public showOwner(): void { this.navigationService.navigateToOwnerView(this.data.accountName); diff --git a/src/app/dataset-block/metadata-block/components/event-details/components/seed-event/seed-event.component.ts b/src/app/dataset-block/metadata-block/components/event-details/components/seed-event/seed-event.component.ts index 470e4d03b..21d1ea6d8 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/components/seed-event/seed-event.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/components/seed-event/seed-event.component.ts @@ -1,5 +1,5 @@ import { ToastrService } from "ngx-toastr"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { Seed } from "src/app/api/kamu.graphql.interface"; import { Clipboard } from "@angular/cdk/clipboard"; import { BaseComponent } from "src/app/common/base.component"; @@ -12,12 +12,8 @@ import { BaseComponent } from "src/app/common/base.component"; export class SeedEventComponent extends BaseComponent { @Input({ required: true }) public event: Seed; - constructor( - private clipboard: Clipboard, - private toastService: ToastrService, - ) { - super(); - } + private clipboard = inject(Clipboard); + private toastService = inject(ToastrService); public copyToClipboard(text: string): void { this.clipboard.copy(text); diff --git a/src/app/dataset-block/metadata-block/components/event-details/event-details.component.ts b/src/app/dataset-block/metadata-block/components/event-details/event-details.component.ts index 842e80e60..964d6bd9b 100644 --- a/src/app/dataset-block/metadata-block/components/event-details/event-details.component.ts +++ b/src/app/dataset-block/metadata-block/components/event-details/event-details.component.ts @@ -5,6 +5,7 @@ import { AfterViewInit, ChangeDetectionStrategy, Component, + inject, Input, Type, ViewChild, @@ -33,16 +34,13 @@ import { SetLicenseEventComponent } from "./components/set-license-event/set-lic changeDetection: ChangeDetectionStrategy.OnPush, }) export class EventDetailsComponent extends BaseComponent implements AfterViewInit { + private blockService = inject(BlockService); + public block$: Observable = this.blockService.metadataBlockChanges; @Input({ required: true }) public datasetInfo: DatasetInfo; - @ViewChild("dynamicContainer", { read: ViewContainerRef }) public dynamicContainer: MaybeNull; - constructor(private blockService: BlockService) { - super(); - } - ngAfterViewInit(): void { this.trackSubscription( this.blockService.metadataBlockChanges.subscribe((block: MetadataBlockFragment) => { diff --git a/src/app/dataset-block/metadata-block/components/yaml-view-section/yaml-view-section.component.ts b/src/app/dataset-block/metadata-block/components/yaml-view-section/yaml-view-section.component.ts index 0227cfcf6..df4e85e7d 100644 --- a/src/app/dataset-block/metadata-block/components/yaml-view-section/yaml-view-section.component.ts +++ b/src/app/dataset-block/metadata-block/components/yaml-view-section/yaml-view-section.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, OnInit } from "@angular/core"; import { MetadataBlockFragment } from "src/app/api/kamu.graphql.interface"; import { BlockService } from "../../block.service"; import { SupportedEvents } from "../event-details/supported.events"; @@ -10,10 +10,11 @@ import { eventsWithYamlView } from "./yaml-view-section.types"; templateUrl: "./yaml-view-section.component.html", changeDetection: ChangeDetectionStrategy.OnPush, }) -export class YamlViewSectionComponent { +export class YamlViewSectionComponent implements OnInit { + private blockService = inject(BlockService); public yamlEventText$: Observable; - constructor(private blockService: BlockService) { + ngOnInit(): void { this.yamlEventText$ = this.blockService.metadataBlockAsYamlChanges; } diff --git a/src/app/dataset-block/metadata-block/metadata-block.component.ts b/src/app/dataset-block/metadata-block/metadata-block.component.ts index 1539b8a55..5002c4685 100644 --- a/src/app/dataset-block/metadata-block/metadata-block.component.ts +++ b/src/app/dataset-block/metadata-block/metadata-block.component.ts @@ -2,7 +2,7 @@ import { DatasetHistoryUpdate } from "../../dataset-view/dataset.subscriptions.i import { Observable, Subscription, combineLatest } from "rxjs"; import ProjectLinks from "src/app/project-links"; import { DatasetViewTypeEnum } from "../../dataset-view/dataset-view.interface"; -import { ChangeDetectionStrategy, Component, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, OnInit } from "@angular/core"; import { DatasetInfo } from "src/app/interface/navigation.interface"; import { map } from "rxjs/operators"; import { Params } from "@angular/router"; @@ -23,9 +23,7 @@ export class MetadataBlockComponent extends BaseDatasetDataComponent implements public blockHash$: Observable; public datasetHistoryUpdate$: Observable>; - constructor(private blockService: BlockService) { - super(); - } + private blockService = inject(BlockService); public ngOnInit(): void { this.datasetBasics$ = this.datasetService.datasetChanges; diff --git a/src/app/dataset-create/dataset-create.component.ts b/src/app/dataset-create/dataset-create.component.ts index d96355d7f..3a98a5b90 100644 --- a/src/app/dataset-create/dataset-create.component.ts +++ b/src/app/dataset-create/dataset-create.component.ts @@ -1,7 +1,7 @@ import { BaseComponent } from "src/app/common/base.component"; import { DatasetKind } from "src/app/api/kamu.graphql.interface"; import { MaybeNull } from "../common/app.types"; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject } from "@angular/core"; import { FormBuilder, FormGroup, Validators } from "@angular/forms"; import { DatasetCreateService } from "./dataset-create.service"; import { Observable } from "rxjs"; @@ -14,12 +14,16 @@ import { LoggedUserService } from "../auth/logged-user.service"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class DatasetCreateComponent extends BaseComponent { + private cdr = inject(ChangeDetectorRef); + private fb = inject(FormBuilder); + private datasetCreateService = inject(DatasetCreateService); + private loggedUserService = inject(LoggedUserService); + private readonly kindMapper: Record = { root: DatasetKind.Root, derivative: DatasetKind.Derivative, }; private static readonly INITIAL_YAML_HINT = "# You can edit this file\n"; - public yamlTemplate = ""; public showMonacoEditor = false; public errorMessage$: Observable; @@ -33,22 +37,13 @@ export class DatasetCreateComponent extends BaseComponent { kind: ["root", [Validators.required]], }); - public constructor( - private cdr: ChangeDetectorRef, - private fb: FormBuilder, - private datasetCreateService: DatasetCreateService, - private loggedUserService: LoggedUserService, - ) { - super(); - this.errorMessage$ = this.datasetCreateService.errorMessageChanges; - } - public ngOnInit(): void { const currentUser = this.loggedUserService.maybeCurrentlyLoggedInUser; if (currentUser) { this.owners = [currentUser.accountName]; this.createDatasetForm.controls.owner.setValue(currentUser.accountName); } + this.errorMessage$ = this.datasetCreateService.errorMessageChanges; } public get datasetName() { diff --git a/src/app/dataset-create/dataset-create.service.ts b/src/app/dataset-create/dataset-create.service.ts index 1bd13bbfc..e3ea3e193 100644 --- a/src/app/dataset-create/dataset-create.service.ts +++ b/src/app/dataset-create/dataset-create.service.ts @@ -5,7 +5,7 @@ import { } from "../api/kamu.graphql.interface"; import { Observable, Subject } from "rxjs"; import { DatasetApi } from "src/app/api/dataset.api"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { DatasetKind } from "../api/kamu.graphql.interface"; import { map } from "rxjs/operators"; import { NavigationService } from "../services/navigation.service"; @@ -28,11 +28,9 @@ export class DatasetCreateService { return this.errorMessage$.asObservable(); } - public constructor( - private datasetApi: DatasetApi, - private loggedUserService: LoggedUserService, - private navigationService: NavigationService, - ) {} + private datasetApi = inject(DatasetApi); + private loggedUserService = inject(LoggedUserService); + private navigationService = inject(NavigationService); public createEmptyDataset(datasetKind: DatasetKind, datasetName: string): Observable { const loggedUser: MaybeNull = this.loggedUserService.maybeCurrentlyLoggedInUser; diff --git a/src/app/dataset-flow/dataset-flow-details/dataset-flow-details.component.ts b/src/app/dataset-flow/dataset-flow-details/dataset-flow-details.component.ts index 933fba98f..b4995f1b1 100644 --- a/src/app/dataset-flow/dataset-flow-details/dataset-flow-details.component.ts +++ b/src/app/dataset-flow/dataset-flow-details/dataset-flow-details.component.ts @@ -1,5 +1,5 @@ import { FlowStatus } from "./../../api/kamu.graphql.interface"; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from "@angular/core"; import { DatasetFlowByIdResponse, FlowDetailsTabs, ViewMenuData } from "./dataset-flow-details.types"; import { DatasetViewTypeEnum } from "src/app/dataset-view/dataset-view.interface"; import { @@ -39,14 +39,10 @@ export class DatasetFlowDetailsComponent extends BaseDatasetDataComponent implem public datasetFlowDetails$: Observable>; public readonly TIMEOUT_REFRESH_FLOW = 800; - constructor( - private router: Router, - private route: ActivatedRoute, - private datasetFlowsService: DatasetFlowsService, - private cdr: ChangeDetectorRef, - ) { - super(); - } + private router = inject(Router); + private route = inject(ActivatedRoute); + private datasetFlowsService = inject(DatasetFlowsService); + private cdr = inject(ChangeDetectorRef); ngOnInit(): void { this.datasetBasics$ = this.datasetService.datasetChanges.pipe(shareReplay()); diff --git a/src/app/dataset-view/additional-components/data-component/data.component.ts b/src/app/dataset-view/additional-components/data-component/data.component.ts index a711f6265..d78ff960f 100644 --- a/src/app/dataset-view/additional-components/data-component/data.component.ts +++ b/src/app/dataset-view/additional-components/data-component/data.component.ts @@ -3,6 +3,7 @@ import { ChangeDetectorRef, Component, EventEmitter, + inject, Input, OnInit, Output, @@ -49,16 +50,12 @@ export class DataComponent extends BaseComponent implements OnInit { public dataUpdate$: Observable; public overviewUpdate$: Observable; - constructor( - private datasetSubsService: DatasetSubscriptionsService, - private location: Location, - private ngbModalService: NgbModal, - private datasetFlowsService: DatasetFlowsService, - private navigationService: NavigationService, - private cdr: ChangeDetectorRef, - ) { - super(); - } + private datasetSubsService = inject(DatasetSubscriptionsService); + private location = inject(Location); + private ngbModalService = inject(NgbModal); + private datasetFlowsService = inject(DatasetFlowsService); + private navigationService = inject(NavigationService); + private cdr = inject(ChangeDetectorRef); public ngOnInit(): void { this.overviewUpdate$ = this.datasetSubsService.overviewChanges; diff --git a/src/app/dataset-view/additional-components/data-component/request-timer/request-timer.component.ts b/src/app/dataset-view/additional-components/data-component/request-timer/request-timer.component.ts index 4419cb4b2..6673108a5 100644 --- a/src/app/dataset-view/additional-components/data-component/request-timer/request-timer.component.ts +++ b/src/app/dataset-view/additional-components/data-component/request-timer/request-timer.component.ts @@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, + inject, Input, OnChanges, OnDestroy, @@ -14,7 +15,7 @@ import { changeDetection: ChangeDetectionStrategy.OnPush, }) export class RequestTimerComponent implements OnChanges, OnDestroy { - constructor(private cdr: ChangeDetectorRef) {} + private cdr = inject(ChangeDetectorRef); ngOnDestroy(): void { this.stopTimer(); diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/dataset-settings.component.ts b/src/app/dataset-view/additional-components/dataset-settings-component/dataset-settings.component.ts index 5913acaf0..1c20d0a8b 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/dataset-settings.component.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/dataset-settings.component.ts @@ -1,5 +1,5 @@ import { MaybeNull } from "./../../../common/app.types"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { DatasetBasicsFragment, DatasetKind, @@ -31,13 +31,9 @@ export class DatasetSettingsComponent extends BaseComponent implements OnInit { public sidePanelData: DatasetSettingsSidePanelItem[] = datasetSettingsSidePanelData; public overview: MaybeNull; - constructor( - private appConfigService: AppConfigService, - private navigationService: NavigationService, - private datasetSubsService: DatasetSubscriptionsService, - ) { - super(); - } + private appConfigService = inject(AppConfigService); + private navigationService = inject(NavigationService); + private datasetSubsService = inject(DatasetSubscriptionsService); public get isSchedulingAvailable(): boolean { return ( diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-compaction.service.ts b/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-compaction.service.ts index ba9736982..d1c934713 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-compaction.service.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-compaction.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { ToastrService } from "ngx-toastr"; import { Observable, map, of, switchMap } from "rxjs"; import { DatasetFlowApi } from "src/app/api/dataset-flow.api"; @@ -15,11 +15,9 @@ import { DatasetFlowsService } from "../../flows-component/services/dataset-flow providedIn: "root", }) export class DatasetCompactionService { - constructor( - private datasetFlowApi: DatasetFlowApi, - private toastrService: ToastrService, - private flowsService: DatasetFlowsService, - ) {} + private datasetFlowApi = inject(DatasetFlowApi); + private toastrService = inject(ToastrService); + private flowsService = inject(DatasetFlowsService); public runHardCompaction(params: { datasetId: string; diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-scheduling.service.ts b/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-scheduling.service.ts index d8b2c61db..a5e0e9e2e 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-scheduling.service.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-scheduling.service.ts @@ -1,5 +1,5 @@ import { NavigationService } from "./../../../../services/navigation.service"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { ToastrService } from "ngx-toastr"; import { Observable, map } from "rxjs"; import { DatasetFlowApi } from "src/app/api/dataset-flow.api"; @@ -19,11 +19,9 @@ import { DatasetInfo } from "src/app/interface/navigation.interface"; providedIn: "root", }) export class DatasetSchedulingService { - constructor( - private datasetFlowApi: DatasetFlowApi, - private toastrService: ToastrService, - private navigationService: NavigationService, - ) {} + private datasetFlowApi = inject(DatasetFlowApi); + private toastrService = inject(ToastrService); + private navigationService = inject(NavigationService); public fetchDatasetFlowConfigs( datasetId: string, diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-settings.service.ts b/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-settings.service.ts index 2adee5194..aa193be71 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-settings.service.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/services/dataset-settings.service.ts @@ -1,6 +1,6 @@ import { Observable, Subject } from "rxjs"; import { NavigationService } from "src/app/services/navigation.service"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { DatasetApi } from "src/app/api/dataset.api"; import { map } from "rxjs/operators"; import { DeleteDatasetMutation, RenameDatasetMutation } from "src/app/api/kamu.graphql.interface"; @@ -25,12 +25,10 @@ export class DatasetSettingsService { return this.renameDatasetError$.asObservable(); } - constructor( - private datasetApi: DatasetApi, - private navigationService: NavigationService, - private loggedUserService: LoggedUserService, - private datasetService: DatasetService, - ) {} + private datasetApi = inject(DatasetApi); + private navigationService = inject(NavigationService); + private loggedUserService = inject(LoggedUserService); + private datasetService = inject(DatasetService); public deleteDataset(accountId: string, datasetId: string): Observable { if (this.loggedUserService.isAuthenticated) { diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/compacting/dataset-settings-compacting-tab.component.ts b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/compacting/dataset-settings-compacting-tab.component.ts index 3200ef7b2..0711e0bfa 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/compacting/dataset-settings-compacting-tab.component.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/compacting/dataset-settings-compacting-tab.component.ts @@ -1,5 +1,5 @@ import { NavigationService } from "./../../../../../services/navigation.service"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { AbstractControl, FormBuilder, Validators } from "@angular/forms"; import { RxwebValidators } from "@rxweb/reactive-form-validators"; import { @@ -27,6 +27,12 @@ import { sliceSizeMapperReverse } from "src/app/common/data.helpers"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class DatasetSettingsCompactingTabComponent extends BaseComponent implements OnInit { + public modalService = inject(ModalService); + private fb = inject(FormBuilder); + private datasetCompactionService = inject(DatasetCompactionService); + private navigationService = inject(NavigationService); + private datasetSchedulingService = inject(DatasetSchedulingService); + @Input({ required: true }) public datasetBasics: DatasetBasicsFragment; public hardCompactionForm = this.fb.group({ sliceUnit: [SliceUnit.MB, [Validators.required]], @@ -40,16 +46,6 @@ export class DatasetSettingsCompactingTabComponent extends BaseComponent impleme public readonly RECURSIVE_TOOLTIP = CompactionTooltipsTexts.HARD_COMPACTION_RECURSIVE; public readonly MIN_VALUE_ERROR_TEXT = "The value must be positive"; - constructor( - public modalService: ModalService, - private fb: FormBuilder, - private datasetCompactionService: DatasetCompactionService, - private navigationService: NavigationService, - private datasetSchedulingService: DatasetSchedulingService, - ) { - super(); - } - ngOnInit(): void { this.patchCompactionForm(); } diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/general/dataset-settings-general-tab.component.ts b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/general/dataset-settings-general-tab.component.ts index e1ec38774..f33a9236a 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/general/dataset-settings-general-tab.component.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/general/dataset-settings-general-tab.component.ts @@ -1,5 +1,5 @@ import { DatasetFlowsService } from "./../../../flows-component/services/dataset-flows.service"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from "@angular/forms"; import { BaseComponent } from "../../../../../common/base.component"; import { promiseWithCatch } from "../../../../../common/app.helpers"; @@ -38,15 +38,15 @@ export class DatasetSettingsGeneralTabComponent extends BaseComponent implements public readonly SEED_TOOLTIP = CompactionTooltipsTexts.RESET_TO_SEED; public readonly RECURSIVE_TOOLTIP = CompactionTooltipsTexts.RESET_BLOCK_RECURSIVE; public readonly DatasetResetMode: typeof DatasetResetMode = DatasetResetMode; - constructor( - private datasetSettingsService: DatasetSettingsService, - private fb: FormBuilder, - private modalService: ModalService, - private datasetCompactionService: DatasetCompactionService, - private flowsService: DatasetFlowsService, - private navigationService: NavigationService, - ) { - super(); + + private datasetSettingsService = inject(DatasetSettingsService); + private fb = inject(FormBuilder); + private modalService = inject(ModalService); + private datasetCompactionService = inject(DatasetCompactionService); + private flowsService = inject(DatasetFlowsService); + private navigationService = inject(NavigationService); + + public ngOnInit(): void { this.renameError$ = this.datasetSettingsService.renameDatasetErrorOccurrences.pipe(shareReplay()); this.renameDatasetForm = this.fb.nonNullable.group({ datasetName: [ @@ -59,9 +59,7 @@ export class DatasetSettingsGeneralTabComponent extends BaseComponent implements mode: [DatasetResetMode.RESET_TO_SEED], recursive: [false], }); - } - public ngOnInit(): void { if (!this.datasetPermissions.permissions.canRename) { this.renameDatasetForm.disable(); } diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/scheduling/dataset-settings-scheduling-tab.component.ts b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/scheduling/dataset-settings-scheduling-tab.component.ts index 668cede8d..af3eae953 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/scheduling/dataset-settings-scheduling-tab.component.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/scheduling/dataset-settings-scheduling-tab.component.ts @@ -1,5 +1,5 @@ import { MaybeNull } from "../../../../../common/app.types"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { AbstractControl, FormControl, FormGroup, ValidatorFn, Validators } from "@angular/forms"; import { BaseComponent } from "../../../../../common/base.component"; import { PollingGroupEnum, ThrottlingGroupEnum } from "../../dataset-settings.model"; @@ -60,9 +60,7 @@ export class DatasetSettingsSchedulingTabComponent extends BaseComponent impleme ]), }); - constructor(private datasetSchedulingService: DatasetSchedulingService) { - super(); - } + private datasetSchedulingService = inject(DatasetSchedulingService); public get pollingGroup(): FormGroup { return this.pollingForm.get("pollingGroup") as FormGroup; diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/variables-and-secrets/components/edit-key-value-modal/edit-key-value-modal.component.ts b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/variables-and-secrets/components/edit-key-value-modal/edit-key-value-modal.component.ts index c451b54cb..63f0d0af5 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/variables-and-secrets/components/edit-key-value-modal/edit-key-value-modal.component.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/variables-and-secrets/components/edit-key-value-modal/edit-key-value-modal.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { AbstractControl, FormBuilder, FormGroup, Validators } from "@angular/forms"; import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap"; import { DatasetBasicsFragment, ViewDatasetEnvVar } from "src/app/api/kamu.graphql.interface"; @@ -15,6 +15,10 @@ import { EnvAndSecretsFormType } from "./edit-key-value-modal.types"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class EditKeyValueModalComponent extends BaseComponent implements OnInit { + public activeModal = inject(NgbActiveModal); + private fb = inject(FormBuilder); + private evnironmentVariablesService = inject(DatasetEvnironmentVariablesService); + @Input({ required: true }) public row: MaybeNull; @Input({ required: true }) public datasetBasics: DatasetBasicsFragment; public readonly KEY_MAX_LENGTH = 200; @@ -30,14 +34,6 @@ export class EditKeyValueModalComponent extends BaseComponent implements OnInit public isShowExposedValue: boolean = false; public readonly STUB_VALUE = "stub-value"; - constructor( - public activeModal: NgbActiveModal, - private fb: FormBuilder, - private evnironmentVariablesService: DatasetEvnironmentVariablesService, - ) { - super(); - } - ngOnInit(): void { this.fetchExposedValue(); this.setInitialFormValue(); diff --git a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/variables-and-secrets/dataset-settings-secrets-manager-tab.component.ts b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/variables-and-secrets/dataset-settings-secrets-manager-tab.component.ts index 49ee899e1..86cf9a2d2 100644 --- a/src/app/dataset-view/additional-components/dataset-settings-component/tabs/variables-and-secrets/dataset-settings-secrets-manager-tab.component.ts +++ b/src/app/dataset-view/additional-components/dataset-settings-component/tabs/variables-and-secrets/dataset-settings-secrets-manager-tab.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input, OnInit, ViewChild } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit, ViewChild } from "@angular/core"; import { MatSort } from "@angular/material/sort"; import { MatTableDataSource } from "@angular/material/table"; import { EditKeyValueModalComponent } from "./components/edit-key-value-modal/edit-key-value-modal.component"; @@ -41,14 +41,10 @@ export class DatasetSettingsSecretsManagerTabComponent extends BaseComponent imp public readonly PER_PAGE = 15; public searchByKey = ""; - constructor( - private ngbModalService: NgbModal, - private modalService: ModalService, - private evnironmentVariablesService: DatasetEvnironmentVariablesService, - private navigationService: NavigationService, - ) { - super(); - } + private ngbModalService = inject(NgbModal); + private modalService = inject(ModalService); + private evnironmentVariablesService = inject(DatasetEvnironmentVariablesService); + private navigationService = inject(NavigationService); public ngOnInit(): void { this.getPageFromUrl(); diff --git a/src/app/dataset-view/additional-components/flows-component/flows.component.ts b/src/app/dataset-view/additional-components/flows-component/flows.component.ts index 72f99916a..af7a62ebf 100644 --- a/src/app/dataset-view/additional-components/flows-component/flows.component.ts +++ b/src/app/dataset-view/additional-components/flows-component/flows.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { DatasetBasicsFragment, DatasetFlowType, @@ -29,9 +29,7 @@ export class FlowsComponent extends FlowsTableProcessingBaseComponent implements public overview: DatasetOverviewFragment; public readonly DISPLAY_COLUMNS: string[] = ["description", "information", "creator", "options"]; //1 - constructor(private datasetSubsService: DatasetSubscriptionsService) { - super(); - } + private datasetSubsService = inject(DatasetSubscriptionsService); ngOnInit(): void { this.getPageFromUrl(); diff --git a/src/app/dataset-view/additional-components/flows-component/services/dataset-flows.service.ts b/src/app/dataset-view/additional-components/flows-component/services/dataset-flows.service.ts index b27942d40..b3c7aa007 100644 --- a/src/app/dataset-view/additional-components/flows-component/services/dataset-flows.service.ts +++ b/src/app/dataset-view/additional-components/flows-component/services/dataset-flows.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { ToastrService } from "ngx-toastr"; import { Observable, map } from "rxjs"; import { DatasetFlowApi } from "src/app/api/dataset-flow.api"; @@ -26,10 +26,8 @@ import { DatasetFlowByIdResponse } from "src/app/dataset-flow/dataset-flow-detai providedIn: "root", }) export class DatasetFlowsService { - constructor( - private datasetFlowApi: DatasetFlowApi, - private toastrService: ToastrService, - ) {} + private datasetFlowApi = inject(DatasetFlowApi); + private toastrService = inject(ToastrService); public datasetTriggerFlow(params: { datasetId: string; diff --git a/src/app/dataset-view/additional-components/history-component/history.component.ts b/src/app/dataset-view/additional-components/history-component/history.component.ts index eb902dd98..e2880fd34 100644 --- a/src/app/dataset-view/additional-components/history-component/history.component.ts +++ b/src/app/dataset-view/additional-components/history-component/history.component.ts @@ -1,5 +1,5 @@ import { Observable } from "rxjs"; -import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from "@angular/core"; +import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from "@angular/core"; import { BaseComponent } from "src/app/common/base.component"; import { DatasetHistoryUpdate } from "../../dataset.subscriptions.interface"; import { DatasetSubscriptionsService } from "../../dataset.subscriptions.service"; @@ -11,14 +11,12 @@ import { MaybeNull } from "src/app/common/app.types"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class HistoryComponent extends BaseComponent { + private datasetSubsService = inject(DatasetSubscriptionsService); + @Input({ required: true }) public datasetName: string; @Output() onPageChangeEmit = new EventEmitter(); public historyUpdate$: Observable> = this.datasetSubsService.historyChanges; - constructor(private datasetSubsService: DatasetSubscriptionsService) { - super(); - } - public onPageChange(currentPage: number): void { this.onPageChangeEmit.emit(currentPage); } diff --git a/src/app/dataset-view/additional-components/lineage-component/lineage.component.ts b/src/app/dataset-view/additional-components/lineage-component/lineage.component.ts index 5382b911e..91c1bc76d 100644 --- a/src/app/dataset-view/additional-components/lineage-component/lineage.component.ts +++ b/src/app/dataset-view/additional-components/lineage-component/lineage.component.ts @@ -1,5 +1,5 @@ import { Observable } from "rxjs"; -import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output } from "@angular/core"; +import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, inject } from "@angular/core"; import { Node } from "@swimlane/ngx-graph"; import { BaseComponent } from "src/app/common/base.component"; import { LineageGraphBuilderService } from "./services/lineage-graph-builder.service"; @@ -14,9 +14,7 @@ export class LineageComponent extends BaseComponent implements OnInit { @Output() onClickNodeEmit = new EventEmitter(); public lineageGraphUpdate$: Observable>; - constructor(private lineageGraphBuilderService: LineageGraphBuilderService) { - super(); - } + private lineageGraphBuilderService = inject(LineageGraphBuilderService); public onClickNode(node: Node): void { this.onClickNodeEmit.emit(node); diff --git a/src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.ts b/src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.ts index 864eac519..72ad903b6 100644 --- a/src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.ts +++ b/src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { Injectable, inject } from "@angular/core"; import { Observable, map } from "rxjs"; import { DatasetLineageBasicsFragment, DatasetKind, FetchStep } from "src/app/api/kamu.graphql.interface"; import { LineageUpdate } from "src/app/dataset-view/dataset.subscriptions.interface"; @@ -18,7 +18,7 @@ import { MaybeNull } from "src/app/common/app.types"; providedIn: "root", }) export class LineageGraphBuilderService { - constructor(private datasetSubsService: DatasetSubscriptionsService) {} + private datasetSubsService = inject(DatasetSubscriptionsService); public buildGraph(): Observable> { return this.datasetSubsService.lineageChanges.pipe( diff --git a/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.ts index 5505b176c..c09c5b2d4 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.ts @@ -1,5 +1,5 @@ import { BaseComponent } from "src/app/common/base.component"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap"; import { DatasetInfo } from "src/app/interface/navigation.interface"; import { DatasetCommitService } from "../../../overview-component/services/dataset-commit.service"; @@ -15,13 +15,9 @@ export class FinalYamlModalComponent extends BaseComponent { @Input({ required: true }) public datasetInfo: DatasetInfo; @Input({ required: true }) public enabledSaveBtn = true; - constructor( - public activeModal: NgbActiveModal, - private datasetCommitService: DatasetCommitService, - private loggedUserService: LoggedUserService, - ) { - super(); - } + public activeModal = inject(NgbActiveModal); + private datasetCommitService = inject(DatasetCommitService); + private loggedUserService = inject(LoggedUserService); public saveEvent(): void { this.trackSubscription( diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/array-keys-field/array-keys-field.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/array-keys-field/array-keys-field.component.ts index f6281917d..6599e7a14 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/array-keys-field/array-keys-field.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/array-keys-field/array-keys-field.component.ts @@ -1,5 +1,5 @@ import { FormArray, FormBuilder, Validators } from "@angular/forms"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { BaseField } from "../base-field"; @Component({ @@ -12,9 +12,7 @@ export class ArrayKeysFieldComponent extends BaseField { @Input({ required: true }) public buttonText: string; @Input({ required: true }) public placeholder: string; - constructor(private fb: FormBuilder) { - super(); - } + private fb = inject(FormBuilder); public get items(): FormArray { return this.form.get(this.controlName) as FormArray; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/cache-field/cache-field.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/cache-field/cache-field.component.ts index 9eae63072..fd27a59e1 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/cache-field/cache-field.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/cache-field/cache-field.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject } from "@angular/core"; import { FormBuilder } from "@angular/forms"; import { BaseField } from "../base-field"; @@ -8,9 +8,7 @@ import { BaseField } from "../base-field"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class CacheFieldComponent extends BaseField { - constructor(private fb: FormBuilder) { - super(); - } + private fb = inject(FormBuilder); public onCheckedCache(event: Event) { const input = event.target as HTMLInputElement; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/key-value-field/key-value-field.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/key-value-field/key-value-field.component.ts index 7ec5512f6..c630bd74b 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/key-value-field/key-value-field.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/key-value-field/key-value-field.component.ts @@ -1,5 +1,5 @@ import { FormArray, FormBuilder, FormGroup } from "@angular/forms"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { BaseField } from "../base-field"; import { KeyValueForm } from "./key-value-field.types"; @@ -12,9 +12,7 @@ import { KeyValueForm } from "./key-value-field.types"; export class KeyValueFieldComponent extends BaseField { @Input({ required: true }) public buttonText: string; - constructor(private fb: FormBuilder) { - super(); - } + private fb = inject(FormBuilder); public get items(): FormArray { return this.form.get(this.controlName) as FormArray; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/select-date-format-field/select-date-format-field.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/select-date-format-field/select-date-format-field.component.ts index 8f74ad71f..526919541 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/select-date-format-field/select-date-format-field.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/select-date-format-field/select-date-format-field.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { BaseField } from "../base-field"; import { EventTimeSourceKind } from "../../source-events/add-polling-source/add-polling-source-form.types"; import { FormBuilder, FormGroup } from "@angular/forms"; @@ -27,9 +27,7 @@ export class SelectDateFormatFieldComponent extends BaseField implements OnInit "YYYY-M-D", ]; - constructor(private fb: FormBuilder) { - super(); - } + private fb = inject(FormBuilder); ngOnInit(): void { this.chooseEventTimeSource(); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/form-components/topics-field/topics-field.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/form-components/topics-field/topics-field.component.ts index c89e66dd7..55f5fec08 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/form-components/topics-field/topics-field.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/form-components/topics-field/topics-field.component.ts @@ -1,5 +1,5 @@ import { RxwebValidators } from "@rxweb/reactive-form-validators"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { FormBuilder, FormArray, FormGroup } from "@angular/forms"; import { BaseField } from "../base-field"; import { MqttQos } from "src/app/api/kamu.graphql.interface"; @@ -16,9 +16,7 @@ export class TopicsFieldComponent extends BaseField { @Input() public requiredField?: boolean; public readonly MqttQos: typeof MqttQos = MqttQos; - constructor(private fb: FormBuilder) { - super(); - } + private fb = inject(FormBuilder); public get items(): FormArray { return this.form.get(this.controlName) as FormArray; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/components/engine-select/engine-select.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/components/engine-select/engine-select.component.ts index 56451f668..0547afa98 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/components/engine-select/engine-select.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/components/engine-select/engine-select.component.ts @@ -4,6 +4,7 @@ import { ElementRef, EventEmitter, HostListener, + inject, Input, OnInit, Output, @@ -31,7 +32,7 @@ export class EngineSelectComponent implements OnInit { @Input({ required: true }) engine: string; @Output() selectedEngineEmitter = new EventEmitter(); - constructor(private render: Renderer2) {} + private render = inject(Renderer2); @HostListener("document:click", ["$event"]) clickOut(event: Event) { diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts index 496e4a14a..63595adf7 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/engine-section/engine-section.component.ts @@ -3,6 +3,7 @@ import { ChangeDetectorRef, Component, EventEmitter, + inject, Input, OnInit, Output, @@ -25,12 +26,8 @@ export class EngineSectionComponent extends BaseComponent implements OnInit { @Output() public onEmitSelectedEngine: EventEmitter = new EventEmitter(); public selectedImage: string; - constructor( - private cdr: ChangeDetectorRef, - private engineService: EngineService, - ) { - super(); - } + private cdr = inject(ChangeDetectorRef); + private engineService = inject(EngineService); public ngOnInit(): void { this.initEngineSection(); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.ts index b749cba21..124c64797 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/queries-section/queries-section.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, Input, inject } from "@angular/core"; import { SqlQueryStep } from "src/app/api/kamu.graphql.interface"; import { ViewportScroller } from "@angular/common"; @@ -11,7 +11,7 @@ import { ViewportScroller } from "@angular/common"; export class QueriesSectionComponent { @Input({ required: true }) public queries: Omit[]; - constructor(private scroll: ViewportScroller) {} + private scroll = inject(ViewportScroller); public isLastQuery(index: number): boolean { return index === this.queries.length - 1; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/search-section/search-section.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/search-section/search-section.component.ts index dc6deafda..32a11bd55 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/search-section/search-section.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/components/search-section/search-section.component.ts @@ -1,5 +1,5 @@ import { NestedTreeControl } from "@angular/cdk/tree"; -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { MatTreeNestedDataSource } from "@angular/material/tree"; import { NgbTypeaheadSelectItemEvent } from "@ng-bootstrap/ng-bootstrap"; import { OperatorFunction, Observable } from "rxjs"; @@ -30,13 +30,10 @@ export class SearchSectionComponent extends BaseComponent { public treeControl = new NestedTreeControl((node) => node.children); @Input({ required: true }) public dataSource: MatTreeNestedDataSource; @Input({ required: true }) public TREE_DATA: DatasetNode[]; - constructor( - private appSearchAPI: SearchApi, - private datasetService: DatasetService, - private navigationService: NavigationService, - ) { - super(); - } + + private appSearchAPI = inject(SearchApi); + private datasetService = inject(DatasetService); + private navigationService = inject(NavigationService); public search: OperatorFunction = (text$: Observable) => { return text$.pipe( diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.ts index 4a0c084e5..4eb9d127b 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.ts @@ -1,5 +1,5 @@ import { DatasetBasicsFragment, DatasetKind, TransformInput } from "../../../../../api/kamu.graphql.interface"; -import { ChangeDetectionStrategy, Component, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, OnInit } from "@angular/core"; import { NgbModalRef } from "@ng-bootstrap/ng-bootstrap"; import { MatTreeNestedDataSource } from "@angular/material/tree"; import { MaybeNull, MaybeNullOrUndefined } from "src/app/common/app.types"; @@ -27,9 +27,7 @@ export class SetTransformComponent extends BaseMainEventComponent implements OnI public dataSource = new MatTreeNestedDataSource(); public TREE_DATA: DatasetNode[] = []; - constructor(private editService: EditSetTransformService) { - super(); - } + private editService = inject(EditSetTransformService); public ngOnInit(): void { this.checkDatasetEditability(DatasetKind.Derivative); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/add-polling-source.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/add-polling-source.component.ts index 61cb54126..7b81c836a 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/add-polling-source.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/add-polling-source.component.ts @@ -1,5 +1,5 @@ import { FetchKind } from "./add-polling-source-form.types"; -import { ChangeDetectionStrategy, Component, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, OnInit } from "@angular/core"; import { FormArray, FormGroup } from "@angular/forms"; import { SetPollingSourceSection } from "src/app/shared/shared.types"; import { FETCH_STEP_RADIO_CONTROLS } from "./form-control.source"; @@ -60,9 +60,7 @@ export class AddPollingSourceComponent extends BaseSourceEventComponent implemen return this.pollingSourceForm.get(SetPollingSourceSection.MERGE) as FormGroup; } - constructor(private editService: EditPollingSourceService) { - super(); - } + private editService = inject(EditPollingSourceService); public ngOnInit(): void { super.ngOnInit(); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/edit-polling-source.service.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/edit-polling-source.service.ts index 3b7bc1c73..6bf7ac081 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/edit-polling-source.service.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/edit-polling-source.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { Injectable, inject } from "@angular/core"; import { parse } from "yaml"; import { EditFormParseType, @@ -23,9 +23,7 @@ export class EditPollingSourceService extends BaseYamlEventService { private readonly TIMESTAMP_FORMAT_CONTROL = "timestampFormat"; private readonly READ_JSON_SUB_PATH_CONTROL = "subPath"; - constructor(private fb: FormBuilder) { - super(); - } + private fb = inject(FormBuilder); public parseEventFromYaml(event: string): AddPollingSourceEditFormType { const editFormParseValue = parse(event) as EditFormParseType; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-push-source/add-push-source.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-push-source/add-push-source.component.ts index ce52f2786..a32a00089 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-push-source/add-push-source.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-push-source/add-push-source.component.ts @@ -2,7 +2,7 @@ import { AddPushSource, MetadataBlockFragment } from "../../../../../../api/kamu import { SupportedEvents } from "../../../../../../dataset-block/metadata-block/components/event-details/supported.events"; import ProjectLinks from "src/app/project-links"; import { MaybeNull, MaybeNullOrUndefined } from "../../../../../../common/app.types"; -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject } from "@angular/core"; import { FormGroup } from "@angular/forms"; import { AddPushSourceSection } from "src/app/shared/shared.types"; import { RxwebValidators } from "@rxweb/reactive-form-validators"; @@ -22,9 +22,7 @@ export class AddPushSourceComponent extends BaseSourceEventComponent { public currentStep: AddPushSourceSection = AddPushSourceSection.READ; public steps: typeof AddPushSourceSection = AddPushSourceSection; - constructor(private editService: EditAddPushSourceService) { - super(); - } + private editService = inject(EditAddPushSourceService); public ngOnInit(): void { super.ngOnInit(); diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/base-step/base-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/base-step/base-step.component.ts index af5e90e4b..0e1770231 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/base-step/base-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/base-step/base-step.component.ts @@ -8,7 +8,7 @@ import { import { RadioControlType } from "../../add-polling-source/form-control.source"; import { FormBuilder } from "@angular/forms"; import { ControlContainer, FormGroupDirective } from "@angular/forms"; -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, OnInit } from "@angular/core"; import { FormGroup } from "@angular/forms"; import { JsonFormControl } from "../../add-polling-source/add-polling-source-form.types"; import { getValidators } from "src/app/common/data.helpers"; @@ -38,14 +38,10 @@ export class BaseStepComponent extends BaseComponent implements OnInit { private readonly EVENT_TIME_CONTROL = "eventTime"; private readonly JSON_KIND_CONTROL = "jsonKind"; - constructor( - private rootFormGroupDirective: FormGroupDirective, - private fb: FormBuilder, - private cdr: ChangeDetectorRef, - private editService: EditPollingSourceService, - ) { - super(); - } + private rootFormGroupDirective = inject(FormGroupDirective); + private fb = inject(FormBuilder); + private cdr = inject(ChangeDetectorRef); + private editService = inject(EditPollingSourceService); public get sectionForm(): FormGroup { return this.parentForm.get(this.sectionName) as FormGroup; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/prepare-step/prepare-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/prepare-step/prepare-step.component.ts index 738c5426a..bbc7605e0 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/prepare-step/prepare-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/prepare-step/prepare-step.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { ControlContainer, FormArray, FormBuilder, FormGroup, FormGroupDirective, Validators } from "@angular/forms"; import { MaybeNull } from "src/app/common/app.types"; import { BaseComponent } from "src/app/common/base.component"; @@ -24,13 +24,9 @@ export class PrepareStepComponent extends BaseComponent implements OnInit { public setPollingSourceEvent: MaybeNull = null; public readonly prepareKind: typeof PrepareKind = PrepareKind; - constructor( - private rootFormGroupDirective: FormGroupDirective, - private fb: FormBuilder, - private editService: EditPollingSourceService, - ) { - super(); - } + private rootFormGroupDirective = inject(FormGroupDirective); + private fb = inject(FormBuilder); + private editService = inject(EditPollingSourceService); ngOnInit(): void { this.parentForm = this.rootFormGroupDirective.form; diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/preprocess-step/preprocess-step.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/preprocess-step/preprocess-step.component.ts index 1cc25ed6d..4236c4442 100644 --- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/preprocess-step/preprocess-step.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/steps/preprocess-step/preprocess-step.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnInit, Output } from "@angular/core"; import { AddPollingSourceEditFormType, PreprocessStepValue, @@ -20,9 +20,7 @@ export class PreprocessStepComponent extends BaseComponent implements OnInit { @Output() public showPreprocessStepEmitter = new EventEmitter(); public setPollingSourceEvent: MaybeNull = null; - constructor(private editService: EditPollingSourceService) { - super(); - } + private editService = inject(EditPollingSourceService); ngOnInit(): void { if (this.eventYamlByHash) { diff --git a/src/app/dataset-view/additional-components/metadata-component/metadata.component.ts b/src/app/dataset-view/additional-components/metadata-component/metadata.component.ts index afbba6e9a..efe729c67 100644 --- a/src/app/dataset-view/additional-components/metadata-component/metadata.component.ts +++ b/src/app/dataset-view/additional-components/metadata-component/metadata.component.ts @@ -6,7 +6,7 @@ import { LicenseFragment, SetPollingSourceEventFragment, } from "../../../api/kamu.graphql.interface"; -import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, inject } from "@angular/core"; import { DatasetSchema } from "../../../interface/dataset.interface"; import AppValues from "../../../common/app.values"; import { DatasetSubscriptionsService } from "../../dataset.subscriptions.service"; @@ -49,13 +49,9 @@ export class MetadataComponent extends BaseComponent implements OnInit { pageInfo: PageBasedInfo; }; - constructor( - private datasetSubsService: DatasetSubscriptionsService, - private navigationService: NavigationService, - private modalService: ModalService, - ) { - super(); - } + private datasetSubsService = inject(DatasetSubscriptionsService); + private navigationService = inject(NavigationService); + private modalService = inject(ModalService); public ngOnInit() { this.trackSubscription( diff --git a/src/app/dataset-view/additional-components/overview-component/components/add-data-modal/add-data-modal.component.ts b/src/app/dataset-view/additional-components/overview-component/components/add-data-modal/add-data-modal.component.ts index c30e8ece4..3da7e08dc 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/add-data-modal/add-data-modal.component.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/add-data-modal/add-data-modal.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core"; import { NgbActiveModal, NgbModal } from "@ng-bootstrap/ng-bootstrap"; import { BaseComponent } from "src/app/common/base.component"; import { FileFromUrlModalComponent } from "../file-from-url-modal/file-from-url-modal.component"; @@ -19,15 +19,11 @@ export class AddDataModalComponent extends BaseComponent { @Input({ required: true }) public datasetBasics: DatasetBasicsFragment; @Input() public overview?: OverviewUpdate; - constructor( - public ngbActiveModal: NgbActiveModal, - private ngbModalService: NgbModal, - private fileUploadService: FileUploadService, - private configService: AppConfigService, - private modalService: ModalService, - ) { - super(); - } + public ngbActiveModal = inject(NgbActiveModal); + private ngbModalService = inject(NgbModal); + private fileUploadService = inject(FileUploadService); + private configService = inject(AppConfigService); + private modalService = inject(ModalService); public get hasPollingSource(): boolean { return Boolean(this.overview?.overview.metadata.currentPollingSource); diff --git a/src/app/dataset-view/additional-components/overview-component/components/edit-details-modal/edit-details-modal.component.ts b/src/app/dataset-view/additional-components/overview-component/components/edit-details-modal/edit-details-modal.component.ts index b81600a1e..20a373dab 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/edit-details-modal/edit-details-modal.component.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/edit-details-modal/edit-details-modal.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from "@angular/core"; +import { Component, inject, Input, OnInit } from "@angular/core"; import { MatChipInputEvent } from "@angular/material/chips"; import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap"; import { isEqual } from "lodash"; @@ -31,14 +31,11 @@ export class EditDetailsModalComponent extends BaseComponent implements OnInit { public description = ""; public initialDescription = ""; public initialKeywords: string[] = []; - constructor( - private datasetCommitService: DatasetCommitService, - private yamlEventService: TemplatesYamlEventsService, - public activeModal: NgbActiveModal, - private loggedUserService: LoggedUserService, - ) { - super(); - } + + private datasetCommitService = inject(DatasetCommitService); + private yamlEventService = inject(TemplatesYamlEventsService); + public activeModal = inject(NgbActiveModal); + private loggedUserService = inject(LoggedUserService); public get keywords(): string[] { return Array.from(this.keywordsSet); diff --git a/src/app/dataset-view/additional-components/overview-component/components/edit-license-modal/edit-license-modal.component.ts b/src/app/dataset-view/additional-components/overview-component/components/edit-license-modal/edit-license-modal.component.ts index 13832224a..8b600b286 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/edit-license-modal/edit-license-modal.component.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/edit-license-modal/edit-license-modal.component.ts @@ -1,6 +1,6 @@ import { BaseComponent } from "src/app/common/base.component"; import AppValues from "src/app/common/app.values"; -import { Component, Input, OnInit } from "@angular/core"; +import { Component, inject, Input, OnInit } from "@angular/core"; import { FormBuilder, FormGroup, Validators } from "@angular/forms"; import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap"; import { @@ -22,6 +22,12 @@ import { LicenseFormType } from "./edit-license-modal.types"; templateUrl: "./edit-license-modal.component.html", }) export class EditLicenseModalComponent extends BaseComponent implements OnInit { + public activeModal = inject(NgbActiveModal); + private fb = inject(FormBuilder); + private datasetCommitService = inject(DatasetCommitService); + private yamlEventService = inject(TemplatesYamlEventsService); + private loggedUserService = inject(LoggedUserService); + @Input({ required: true }) public datasetBasics: DatasetBasicsFragment; @Input({ required: true }) public currentState?: { schema: MaybeNull; @@ -29,23 +35,12 @@ export class EditLicenseModalComponent extends BaseComponent implements OnInit { overview: DatasetOverviewFragment; size: DatasetDataSizeFragment; }; - public licenseForm: FormGroup; - - constructor( - public activeModal: NgbActiveModal, - private fb: FormBuilder, - private datasetCommitService: DatasetCommitService, - private yamlEventService: TemplatesYamlEventsService, - private loggedUserService: LoggedUserService, - ) { - super(); - this.licenseForm = this.fb.group({ - name: ["", [Validators.required]], - shortName: ["", [Validators.required]], - websiteUrl: ["", [Validators.required, Validators.pattern(AppValues.URL_PATTERN)]], - spdxId: [""], - }); - } + public licenseForm: FormGroup = this.fb.group({ + name: ["", [Validators.required]], + shortName: ["", [Validators.required]], + websiteUrl: ["", [Validators.required, Validators.pattern(AppValues.URL_PATTERN)]], + spdxId: [""], + }); ngOnInit(): void { if (this.currentState?.overview.metadata.currentLicense) { diff --git a/src/app/dataset-view/additional-components/overview-component/components/edit-watermark-modal/edit-watermark-modal.component.ts b/src/app/dataset-view/additional-components/overview-component/components/edit-watermark-modal/edit-watermark-modal.component.ts index a6b2de9b7..908388158 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/edit-watermark-modal/edit-watermark-modal.component.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/edit-watermark-modal/edit-watermark-modal.component.ts @@ -1,5 +1,5 @@ import { MaybeNullOrUndefined } from "../../../../../common/app.types"; -import { ChangeDetectionStrategy, Component, Input, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core"; import { OWL_DATE_TIME_FORMATS } from "@danielmoncada/angular-datetime-picker"; import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap"; import moment from "moment-timezone"; @@ -23,13 +23,10 @@ export class EditWatermarkModalComponent extends BaseComponent implements OnInit public date: Date; public timeZone = this.currentTimeZone; - constructor( - public activeModal: NgbActiveModal, - private datasetCommitService: DatasetCommitService, - private loggedUserService: LoggedUserService, - ) { - super(); - } + public activeModal = inject(NgbActiveModal); + private datasetCommitService = inject(DatasetCommitService); + private loggedUserService = inject(LoggedUserService); + ngOnInit(): void { this.date = new Date(); } diff --git a/src/app/dataset-view/additional-components/overview-component/components/file-from-url-modal/file-from-url-modal.component.ts b/src/app/dataset-view/additional-components/overview-component/components/file-from-url-modal/file-from-url-modal.component.ts index 309c2eebe..f74257045 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/file-from-url-modal/file-from-url-modal.component.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/file-from-url-modal/file-from-url-modal.component.ts @@ -1,5 +1,5 @@ import { BaseComponent } from "src/app/common/base.component"; -import { ChangeDetectionStrategy, Component } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject } from "@angular/core"; import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap"; import { FormBuilder, FormGroup, Validators } from "@angular/forms"; import { FileUrlFormType } from "./file-from-url-modal.types"; @@ -10,15 +10,10 @@ import { FileUrlFormType } from "./file-from-url-modal.types"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class FileFromUrlModalComponent extends BaseComponent { - public fileUrlForm: FormGroup; + public activeModal = inject(NgbActiveModal); + private fb = inject(FormBuilder); - constructor( - public activeModal: NgbActiveModal, - private fb: FormBuilder, - ) { - super(); - this.fileUrlForm = this.fb.group({ - fileUrl: ["", [Validators.required]], - }); - } + public fileUrlForm: FormGroup = this.fb.group({ + fileUrl: ["", [Validators.required]], + }); } diff --git a/src/app/dataset-view/additional-components/overview-component/components/readme-section/readme-section.component.ts b/src/app/dataset-view/additional-components/overview-component/components/readme-section/readme-section.component.ts index d2cb67dcc..6192ca6e7 100644 --- a/src/app/dataset-view/additional-components/overview-component/components/readme-section/readme-section.component.ts +++ b/src/app/dataset-view/additional-components/overview-component/components/readme-section/readme-section.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnInit, Output } from "@angular/core"; import { DatasetBasicsFragment } from "src/app/api/kamu.graphql.interface"; import { MaybeNull } from "src/app/common/app.types"; import { BaseComponent } from "src/app/common/base.component"; @@ -27,12 +27,8 @@ export class ReadmeSectionComponent extends BaseComponent implements OnInit { return this.currentReadme !== this.readmeState; } - constructor( - private datasetCommitService: DatasetCommitService, - private loggedUserService: LoggedUserService, - ) { - super(); - } + private datasetCommitService = inject(DatasetCommitService); + private loggedUserService = inject(LoggedUserService); public ngOnInit(): void { if (this.currentReadme) { diff --git a/src/app/dataset-view/additional-components/overview-component/overview.component.ts b/src/app/dataset-view/additional-components/overview-component/overview.component.ts index 0bc8b7f3f..534559afc 100644 --- a/src/app/dataset-view/additional-components/overview-component/overview.component.ts +++ b/src/app/dataset-view/additional-components/overview-component/overview.component.ts @@ -6,7 +6,7 @@ import { DatasetKind, DatasetPermissionsFragment, } from "../../../api/kamu.graphql.interface"; -import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnInit, Output } from "@angular/core"; import { BaseComponent } from "src/app/common/base.component"; import { NavigationService } from "src/app/services/navigation.service"; import { @@ -57,18 +57,14 @@ export class OverviewComponent extends BaseComponent implements OnInit { size: DatasetDataSizeFragment; }; - constructor( - private datasetSubsService: DatasetSubscriptionsService, - private navigationService: NavigationService, - private ngbModalService: NgbModal, - private datasetFlowsService: DatasetFlowsService, - private fileUploadService: FileUploadService, - private configService: AppConfigService, - private modalService: ModalService, - private loggedUserService: LoggedUserService, - ) { - super(); - } + private datasetSubsService = inject(DatasetSubscriptionsService); + private navigationService = inject(NavigationService); + private ngbModalService = inject(NgbModal); + private datasetFlowsService = inject(DatasetFlowsService); + private fileUploadService = inject(FileUploadService); + private configService = inject(AppConfigService); + private modalService = inject(ModalService); + private loggedUserService = inject(LoggedUserService); public ngOnInit(): void { this.uploadFileLoading$ = this.fileUploadService.isUploadFile; diff --git a/src/app/dataset-view/additional-components/overview-component/services/dataset-commit.service.ts b/src/app/dataset-view/additional-components/overview-component/services/dataset-commit.service.ts index 3a8e4c24d..39adc39e4 100644 --- a/src/app/dataset-view/additional-components/overview-component/services/dataset-commit.service.ts +++ b/src/app/dataset-view/additional-components/overview-component/services/dataset-commit.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { Observable, Subject, of } from "rxjs"; import { switchMap, map } from "rxjs/operators"; import { DatasetApi } from "src/app/api/dataset.api"; @@ -34,12 +34,10 @@ export class DatasetCommitService { private datasetIdsByAccountDatasetName = new Map(); - constructor( - private datasetApi: DatasetApi, - private navigationService: NavigationService, - private datasetService: DatasetService, - private loggedUserService: LoggedUserService, - ) {} + private datasetApi = inject(DatasetApi); + private navigationService = inject(NavigationService); + private datasetService = inject(DatasetService); + private loggedUserService = inject(LoggedUserService); public commitEventToDataset(params: { accountId: string; diff --git a/src/app/dataset-view/dataset-view-header/dataset-view-header.component.ts b/src/app/dataset-view/dataset-view-header/dataset-view-header.component.ts index 16a46ae0f..2c8bdb824 100644 --- a/src/app/dataset-view/dataset-view-header/dataset-view-header.component.ts +++ b/src/app/dataset-view/dataset-view-header/dataset-view-header.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from "@angular/core"; +import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from "@angular/core"; import { SearchAdditionalHeaderButtonInterface } from "../../components/search-additional-buttons/search-additional-buttons.interface"; import { searchAdditionalButtonsEnum } from "../../search/search.interface"; import { NavigationService } from "src/app/services/navigation.service"; @@ -15,7 +15,7 @@ export class DatasetViewHeaderComponent { @Output() public showOwnerPageEmit = new EventEmitter(); @Output() public onClickSearchAdditionalButtonEmit = new EventEmitter(); - constructor(private navigationService: NavigationService) {} + private navigationService = inject(NavigationService); public searchAdditionalButtonsData: SearchAdditionalHeaderButtonInterface[] = [ { diff --git a/src/app/dataset-view/dataset-view-menu/dataset-view-menu.component.ts b/src/app/dataset-view/dataset-view-menu/dataset-view-menu.component.ts index b4c4303a4..4f5f08420 100644 --- a/src/app/dataset-view/dataset-view-menu/dataset-view-menu.component.ts +++ b/src/app/dataset-view/dataset-view-menu/dataset-view-menu.component.ts @@ -5,6 +5,7 @@ import { Component, ElementRef, HostListener, + inject, Input, OnInit, ViewChild, @@ -35,10 +36,8 @@ export class DatasetViewMenuComponent implements OnInit, AfterViewInit { private sideNavHelper: SideNavHelper; - constructor( - private datasetPermissionsServices: DatasetPermissionsService, - private widgetHeightService: WidgetHeightService, - ) {} + private datasetPermissionsServices = inject(DatasetPermissionsService); + private widgetHeightService = inject(WidgetHeightService); public ngAfterViewInit(): void { this.widgetHeightService.setWidgetOffsetTop( diff --git a/src/app/dataset-view/dataset.component.ts b/src/app/dataset-view/dataset.component.ts index 241c55657..fa7388846 100644 --- a/src/app/dataset-view/dataset.component.ts +++ b/src/app/dataset-view/dataset.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnDestroy, OnInit } from "@angular/core"; import { DatasetViewTypeEnum } from "./dataset-view.interface"; import { NavigationEnd, Router } from "@angular/router"; import { Node } from "@swimlane/ngx-graph/lib/models/node.model"; @@ -29,13 +29,9 @@ export class DatasetComponent extends BaseDatasetDataComponent implements OnInit private mainDatasetQueryComplete$: Subject = new ReplaySubject(1 /* bufferSize */); - constructor( - private datasetPermissionsServices: DatasetPermissionsService, - private router: Router, - private cdr: ChangeDetectorRef, - ) { - super(); - } + private datasetPermissionsServices = inject(DatasetPermissionsService); + private router = inject(Router); + private cdr = inject(ChangeDetectorRef); public ngOnInit(): void { const urlDatasetInfo = this.getDatasetInfoFromUrl(); diff --git a/src/app/dataset-view/dataset.service.ts b/src/app/dataset-view/dataset.service.ts index a3a26a050..bbce1152f 100644 --- a/src/app/dataset-view/dataset.service.ts +++ b/src/app/dataset-view/dataset.service.ts @@ -13,7 +13,7 @@ import { SetVocab, } from "../api/kamu.graphql.interface"; import { DatasetInfo } from "../interface/navigation.interface"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { Observable, Subject } from "rxjs"; import { DataRow, DatasetLineageNode, DatasetRequestBySql, DatasetSchema } from "../interface/dataset.interface"; import { @@ -41,13 +41,10 @@ import { parseCurrentSchema } from "../common/app.helpers"; @Injectable({ providedIn: "root" }) export class DatasetService { - constructor( - private datasetApi: DatasetApi, - private datasetSubsService: DatasetSubscriptionsService, - ) {} + private datasetApi = inject(DatasetApi); + private datasetSubsService = inject(DatasetSubscriptionsService); private currentSetVocab: SetVocab; - private dataset$: Subject = new Subject(); public get datasetChanges(): Observable { diff --git a/src/app/search/search.component.ts b/src/app/search/search.component.ts index a20debd29..191cf6bbc 100644 --- a/src/app/search/search.component.ts +++ b/src/app/search/search.component.ts @@ -1,7 +1,7 @@ import { NavigationEnd, Router, RouterEvent } from "@angular/router"; import { SearchService } from "./search.service"; import { DatasetSearchResult, SearchFilters } from "../interface/search.interface"; -import { ChangeDetectionStrategy, Component, OnInit } from "@angular/core"; +import { ChangeDetectionStrategy, Component, inject, OnInit } from "@angular/core"; import { BaseComponent } from "../common/base.component"; import { NavigationService } from "../services/navigation.service"; import { DatasetInfo } from "../interface/navigation.interface"; @@ -17,6 +17,10 @@ import { Observable } from "rxjs"; changeDetection: ChangeDetectionStrategy.OnPush, }) export class SearchComponent extends BaseComponent implements OnInit { + private navigationService = inject(NavigationService); + private searchService = inject(SearchService); + private router = inject(Router); + public searchValue = ""; public currentPage = 1; // TODO: Should be zero-based and only offset for display public tableData$: Observable = this.searchService.searchOverviewChanges; @@ -126,14 +130,6 @@ export class SearchComponent extends BaseComponent implements OnInit { }, ]; - constructor( - private navigationService: NavigationService, - private searchService: SearchService, - private router: Router, - ) { - super(); - } - public ngOnInit(): void { this.initTableData(); diff --git a/src/app/search/search.service.ts b/src/app/search/search.service.ts index 6f2de48d0..5e25a0820 100644 --- a/src/app/search/search.service.ts +++ b/src/app/search/search.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { Observable, Subject } from "rxjs"; import { SearchApi } from "../api/search.api"; import { DatasetAutocompleteItem, DatasetSearchResult } from "../interface/search.interface"; @@ -9,7 +9,7 @@ export class SearchService { private searchOverview$: Subject = new Subject(); private searchAutocomplete$: Subject = new Subject(); - constructor(private searchApi: SearchApi) {} + private searchApi = inject(SearchApi); private emitSearchOverviewChanged(searchData: DatasetSearchResult): void { this.searchOverview$.next(searchData); diff --git a/src/app/services/access-token.service.ts b/src/app/services/access-token.service.ts index 5f315ae3b..9b3b66d4d 100644 --- a/src/app/services/access-token.service.ts +++ b/src/app/services/access-token.service.ts @@ -1,5 +1,5 @@ import { MaybeNull } from "./../common/app.types"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { AccessTokenApi } from "../api/access-token.api"; import { Observable, map } from "rxjs"; import { @@ -15,10 +15,8 @@ import { ToastrService } from "ngx-toastr"; providedIn: "root", }) export class AccessTokenService { - constructor( - private accessTokenApi: AccessTokenApi, - private toastrService: ToastrService, - ) {} + private accessTokenApi = inject(AccessTokenApi); + private toastrService = inject(ToastrService); public listAccessTokens(params: { accountId: string; diff --git a/src/app/services/account.service.ts b/src/app/services/account.service.ts index ae474e679..0e734d08a 100644 --- a/src/app/services/account.service.ts +++ b/src/app/services/account.service.ts @@ -11,7 +11,7 @@ import { AccountFlowFilters, AccountFragment, FlowConnectionDataFragment } from import { AccountApi } from "../api/account.api"; import { Observable, combineLatest, forkJoin } from "rxjs"; import { DatasetApi } from "../api/dataset.api"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { DatasetsByAccountNameQuery } from "../api/kamu.graphql.interface"; import { DatasetsAccountResponse } from "../interface/dataset.interface"; import { map } from "rxjs/operators"; @@ -23,11 +23,9 @@ import { FlowsTableData } from "../common/components/flows-table/flows-table.typ providedIn: "root", }) export class AccountService { - constructor( - private datasetApi: DatasetApi, - private accountApi: AccountApi, - private toastrService: ToastrService, - ) {} + private datasetApi = inject(DatasetApi); + private accountApi = inject(AccountApi); + private toastrService = inject(ToastrService); public getDatasetsByAccountName(name: string, page: number): Observable { return this.datasetApi.fetchDatasetsByAccountName(name, page).pipe( diff --git a/src/app/services/dataset-evnironment-variables.service.ts b/src/app/services/dataset-evnironment-variables.service.ts index 75d7db436..c301bc1c7 100644 --- a/src/app/services/dataset-evnironment-variables.service.ts +++ b/src/app/services/dataset-evnironment-variables.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { EnvironmentVariablesApi } from "../api/environment-variables.api"; import { map, Observable } from "rxjs"; import { @@ -15,10 +15,8 @@ import { ToastrService } from "ngx-toastr"; providedIn: "root", }) export class DatasetEvnironmentVariablesService { - constructor( - private environmentVariablesApi: EnvironmentVariablesApi, - private toastrService: ToastrService, - ) {} + private environmentVariablesApi = inject(EnvironmentVariablesApi); + private toastrService = inject(ToastrService); public listEnvVariables(params: { accountName: string; diff --git a/src/app/services/engine.service.ts b/src/app/services/engine.service.ts index c2e61ab87..1a2343c1f 100644 --- a/src/app/services/engine.service.ts +++ b/src/app/services/engine.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { EngineApi } from "../api/engine.api"; import { Observable } from "rxjs"; import { EnginesQuery } from "../api/kamu.graphql.interface"; @@ -7,7 +7,7 @@ import { EnginesQuery } from "../api/kamu.graphql.interface"; providedIn: "root", }) export class EngineService { - constructor(private engineApi: EngineApi) {} + private engineApi = inject(EngineApi); public engines(): Observable { return this.engineApi.getEngines(); diff --git a/src/app/services/file-upload.service.ts b/src/app/services/file-upload.service.ts index 521c20a06..85ba755ac 100644 --- a/src/app/services/file-upload.service.ts +++ b/src/app/services/file-upload.service.ts @@ -1,6 +1,6 @@ import { AppConfigService } from "src/app/app-config.service"; import { HttpClient, HttpErrorResponse, HttpHeaders } from "@angular/common/http"; -import { Injectable, Injector } from "@angular/core"; +import { inject, Injectable, Injector } from "@angular/core"; import { Observable, Subject, catchError, finalize, first, of, switchMap, tap } from "rxjs"; import { MaybeUndefined } from "../common/app.types"; import { LocalStorageService } from "./local-storage.service"; @@ -19,15 +19,13 @@ import { FileUploadError } from "../common/errors"; providedIn: "root", }) export class FileUploadService { - constructor( - private http: HttpClient, - private localStorageService: LocalStorageService, - private appConfigService: AppConfigService, - private navigationService: NavigationService, - private datasetService: DatasetService, - private injector: Injector, - private protocolsService: ProtocolsService, - ) {} + private http = inject(HttpClient); + private localStorageService = inject(LocalStorageService); + private appConfigService = inject(AppConfigService); + private navigationService = inject(NavigationService); + private datasetService = inject(DatasetService); + private injector = inject(Injector); + private protocolsService = inject(ProtocolsService); private uploadFileLoading$ = new Subject(); diff --git a/src/app/services/navigation.service.ts b/src/app/services/navigation.service.ts index 2a0e0aceb..d6b3e9621 100644 --- a/src/app/services/navigation.service.ts +++ b/src/app/services/navigation.service.ts @@ -1,6 +1,6 @@ import { DatasetInfo, FlowDetailsNavigationParams } from "../interface/navigation.interface"; import { promiseWithCatch } from "src/app/common/app.helpers"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { Router } from "@angular/router"; import { DatasetNavigationParams, MetadataBlockNavigationParams } from "../interface/navigation.interface"; import ProjectLinks from "../project-links"; @@ -10,7 +10,7 @@ import { AccountSettingsTabs } from "../auth/settings/account-settings.constants @Injectable({ providedIn: "root" }) export class NavigationService { - constructor(private router: Router) {} + private router = inject(Router); public navigateToWebsite(url: string): void { window.open(url, "_blank"); diff --git a/src/app/services/protocols.service.ts b/src/app/services/protocols.service.ts index 6db31ebe0..c379ae990 100644 --- a/src/app/services/protocols.service.ts +++ b/src/app/services/protocols.service.ts @@ -1,5 +1,5 @@ import { MaybeUndefined } from "src/app/common/app.types"; -import { Injectable } from "@angular/core"; +import { inject, Injectable } from "@angular/core"; import { ProtocolsApi } from "../api/protocols.api"; import { Observable, map } from "rxjs"; import { DatasetEndpoints, DatasetProtocolsQuery } from "../api/kamu.graphql.interface"; @@ -9,7 +9,7 @@ import { DatasetInfo } from "../interface/navigation.interface"; providedIn: "root", }) export class ProtocolsService { - constructor(private protocolsApi: ProtocolsApi) {} + private protocolsApi = inject(ProtocolsApi); public getProtocols(datasetInfo: DatasetInfo): Observable> { return this.protocolsApi.getProtocols(datasetInfo).pipe( diff --git a/src/app/shared/editor/components/base-editor/base-editor.component.ts b/src/app/shared/editor/components/base-editor/base-editor.component.ts index abe4f91b8..b79b04b13 100644 --- a/src/app/shared/editor/components/base-editor/base-editor.component.ts +++ b/src/app/shared/editor/components/base-editor/base-editor.component.ts @@ -1,4 +1,4 @@ -import { Directive, EventEmitter, Input, OnChanges, Output, SimpleChanges } from "@angular/core"; +import { Directive, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from "@angular/core"; import { MaybeNull, MaybeUndefined } from "src/app/common/app.types"; import * as monaco from "monaco-editor"; @@ -19,7 +19,7 @@ export abstract class BaseEditorComponent implements OnChanges { public editorModel: monaco.editor.ITextModel; public getErrorDetails: (error: string) => EditorError = getDefaultError; - constructor(private monacoService: MonacoService) {} + private monacoService = inject(MonacoService); public ngOnChanges(changes: SimpleChanges) { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition diff --git a/src/app/sidenav/side-nav.directive.ts b/src/app/sidenav/side-nav.directive.ts index bf7223c08..8aa6ce02f 100644 --- a/src/app/sidenav/side-nav.directive.ts +++ b/src/app/sidenav/side-nav.directive.ts @@ -1,8 +1,8 @@ -import { Directive, ViewContainerRef } from "@angular/core"; +import { Directive, inject, ViewContainerRef } from "@angular/core"; @Directive({ selector: "[side-nav]", }) export class SideNavDirective { - public constructor(public container: ViewContainerRef) {} + public container = inject(ViewContainerRef); }