diff --git a/.commit b/.commit index 14769f1eb..5c9230a25 100644 --- a/.commit +++ b/.commit @@ -1 +1 @@ -6b6998cc884ef6dbb04b736e3e5ba964ba5e7db4 +8ed8069fa26715010b073311bfeb2dabb01734fb diff --git a/.sync-history b/.sync-history index f65e3fb2f..151204d41 100644 --- a/.sync-history +++ b/.sync-history @@ -1 +1 @@ -6b6998cc8 2026-04-17 Merged PR 91918: 703974 - Angular Web Portal: Additional column values are not loaded in grouped tables \ No newline at end of file +406dbad84 2026-04-20 Merged PR 92027: #704328 - Fix request filter \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d90979b6..2194ba0d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ + +### May 26, 2026 +- 710276: Fixing an issue with Operations Support portal Pending Provisioning Processes page load overlay error. +- 648928: Fixing an issue with user profile language not applied under certain circumstances. +- 707565: Fixing an issue with ordering a product where the service item has a mandatory image form field. +- 704328 (446299): Fixes an issue with adding a condition to a custom filter for system entitlements. + ### April 17, 2026 - 698600 (647825): Fixing an issue with an error on the Rule Violations page if the Riskindex config param is deactivated. - 494303: Fixes an issue with a missing badge for an active filter. @@ -5,7 +12,6 @@ - 703157: Fixes an issue with refactoring of the edit-fk.model.ts file. - 703180(697986): Fixes an issue with a missing warning if there are too many results for the search. - 496653: Adds support for decimal range report parameters. -- 704328 (446299): Fixes an issue with adding a condition to a custom filter for system entitlements. - 703974: Fixes an issue with additional column values that are not loaded into a grouped table. ### March 26, 2026 @@ -431,4 +437,4 @@ The v92 branch has been updated with fixes for the following issues. ### May 2, 2022 -The repository has been updated with the code changes for the Identity Manager 8.2.1 release. \ No newline at end of file +The repository has been updated with the code changes for the Identity Manager 8.2.1 release. diff --git a/imxweb/imx-modules/imx-api-aad.tgz b/imxweb/imx-modules/imx-api-aad.tgz index 4310f2ca5..dc984e518 100644 Binary files a/imxweb/imx-modules/imx-api-aad.tgz and b/imxweb/imx-modules/imx-api-aad.tgz differ diff --git a/imxweb/imx-modules/imx-api-aob.tgz b/imxweb/imx-modules/imx-api-aob.tgz index 24e80abcc..4deb59863 100644 Binary files a/imxweb/imx-modules/imx-api-aob.tgz and b/imxweb/imx-modules/imx-api-aob.tgz differ diff --git a/imxweb/imx-modules/imx-api-apc.tgz b/imxweb/imx-modules/imx-api-apc.tgz index ce4c4f519..fb75303cb 100644 Binary files a/imxweb/imx-modules/imx-api-apc.tgz and b/imxweb/imx-modules/imx-api-apc.tgz differ diff --git a/imxweb/imx-modules/imx-api-att.tgz b/imxweb/imx-modules/imx-api-att.tgz index 6460d1d37..63f7f6e7c 100644 Binary files a/imxweb/imx-modules/imx-api-att.tgz and b/imxweb/imx-modules/imx-api-att.tgz differ diff --git a/imxweb/imx-modules/imx-api-cpl.tgz b/imxweb/imx-modules/imx-api-cpl.tgz index 559ad70cb..31a662fa4 100644 Binary files a/imxweb/imx-modules/imx-api-cpl.tgz and b/imxweb/imx-modules/imx-api-cpl.tgz differ diff --git a/imxweb/imx-modules/imx-api-dpr.tgz b/imxweb/imx-modules/imx-api-dpr.tgz index ae870a323..0a95cd7a4 100644 Binary files a/imxweb/imx-modules/imx-api-dpr.tgz and b/imxweb/imx-modules/imx-api-dpr.tgz differ diff --git a/imxweb/imx-modules/imx-api-hds.tgz b/imxweb/imx-modules/imx-api-hds.tgz index aa791b536..b1770604f 100644 Binary files a/imxweb/imx-modules/imx-api-hds.tgz and b/imxweb/imx-modules/imx-api-hds.tgz differ diff --git a/imxweb/imx-modules/imx-api-o3e.tgz b/imxweb/imx-modules/imx-api-o3e.tgz index 1d78dd811..2e5feb1f1 100644 Binary files a/imxweb/imx-modules/imx-api-o3e.tgz and b/imxweb/imx-modules/imx-api-o3e.tgz differ diff --git a/imxweb/imx-modules/imx-api-o3t.tgz b/imxweb/imx-modules/imx-api-o3t.tgz index 1c3f05214..a41c7c25d 100644 Binary files a/imxweb/imx-modules/imx-api-o3t.tgz and b/imxweb/imx-modules/imx-api-o3t.tgz differ diff --git a/imxweb/imx-modules/imx-api-olg.tgz b/imxweb/imx-modules/imx-api-olg.tgz index 9f3732bc2..3ab16cfbe 100644 Binary files a/imxweb/imx-modules/imx-api-olg.tgz and b/imxweb/imx-modules/imx-api-olg.tgz differ diff --git a/imxweb/imx-modules/imx-api-pol.tgz b/imxweb/imx-modules/imx-api-pol.tgz index 0fa600c2a..6cfdbe18a 100644 Binary files a/imxweb/imx-modules/imx-api-pol.tgz and b/imxweb/imx-modules/imx-api-pol.tgz differ diff --git a/imxweb/imx-modules/imx-api-qbm.tgz b/imxweb/imx-modules/imx-api-qbm.tgz index 0fccbc55f..695ae9741 100644 Binary files a/imxweb/imx-modules/imx-api-qbm.tgz and b/imxweb/imx-modules/imx-api-qbm.tgz differ diff --git a/imxweb/imx-modules/imx-api-qer.tgz b/imxweb/imx-modules/imx-api-qer.tgz index a7ff59411..e221a7332 100644 Binary files a/imxweb/imx-modules/imx-api-qer.tgz and b/imxweb/imx-modules/imx-api-qer.tgz differ diff --git a/imxweb/imx-modules/imx-api-rmb.tgz b/imxweb/imx-modules/imx-api-rmb.tgz index fd398dbd5..59973f404 100644 Binary files a/imxweb/imx-modules/imx-api-rmb.tgz and b/imxweb/imx-modules/imx-api-rmb.tgz differ diff --git a/imxweb/imx-modules/imx-api-rms.tgz b/imxweb/imx-modules/imx-api-rms.tgz index 0bc912de1..ac25d220d 100644 Binary files a/imxweb/imx-modules/imx-api-rms.tgz and b/imxweb/imx-modules/imx-api-rms.tgz differ diff --git a/imxweb/imx-modules/imx-api-rps.tgz b/imxweb/imx-modules/imx-api-rps.tgz index 41dcb4107..61dda1b43 100644 Binary files a/imxweb/imx-modules/imx-api-rps.tgz and b/imxweb/imx-modules/imx-api-rps.tgz differ diff --git a/imxweb/imx-modules/imx-api-sac.tgz b/imxweb/imx-modules/imx-api-sac.tgz index 2909c5ea0..9fb25de07 100644 Binary files a/imxweb/imx-modules/imx-api-sac.tgz and b/imxweb/imx-modules/imx-api-sac.tgz differ diff --git a/imxweb/imx-modules/imx-api-tsb.tgz b/imxweb/imx-modules/imx-api-tsb.tgz index 00cbfa954..a8209c424 100644 Binary files a/imxweb/imx-modules/imx-api-tsb.tgz and b/imxweb/imx-modules/imx-api-tsb.tgz differ diff --git a/imxweb/imx-modules/imx-api-uci.tgz b/imxweb/imx-modules/imx-api-uci.tgz index a16904a12..5e3c03081 100644 Binary files a/imxweb/imx-modules/imx-api-uci.tgz and b/imxweb/imx-modules/imx-api-uci.tgz differ diff --git a/imxweb/imx-modules/imx-api.tgz b/imxweb/imx-modules/imx-api.tgz index 1d1ecfde3..f4e8b5815 100644 Binary files a/imxweb/imx-modules/imx-api.tgz and b/imxweb/imx-modules/imx-api.tgz differ diff --git a/imxweb/imx-modules/imx-qbm-dbts.tgz b/imxweb/imx-modules/imx-qbm-dbts.tgz index cd5522621..c7bf643cb 100644 Binary files a/imxweb/imx-modules/imx-qbm-dbts.tgz and b/imxweb/imx-modules/imx-qbm-dbts.tgz differ diff --git a/imxweb/package-lock.json b/imxweb/package-lock.json index 62528e539..d848b48f5 100644 --- a/imxweb/package-lock.json +++ b/imxweb/package-lock.json @@ -30,7 +30,7 @@ "applicationinsights-js": "^1.0.21", "billboard.js": "^3.11.3", "core-js": "^2.6.9", - "cytoscape": "^3.23.0", + "cytoscape": "^3.33.2", "cytoscape-edgehandles": "^4.0.1", "d3-hierarchy": "^3.1.2", "d3-scale": "^4.0.2", @@ -7222,8 +7222,9 @@ "license": "MIT" }, "node_modules/cytoscape": { - "version": "3.33.1", - "license": "MIT", + "version": "3.33.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.2.tgz", + "integrity": "sha512-sj4HXd3DokGhzZAdjDejGvTPLqlt84vNFN8m7bGsOzDY5DyVcxIb2ejIXat2Iy7HxWhdT/N1oKyheJ5YdpsGuw==", "engines": { "node": ">=0.10" } @@ -22097,7 +22098,9 @@ "dev": true }, "cytoscape": { - "version": "3.33.1" + "version": "3.33.2", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.2.tgz", + "integrity": "sha512-sj4HXd3DokGhzZAdjDejGvTPLqlt84vNFN8m7bGsOzDY5DyVcxIb2ejIXat2Iy7HxWhdT/N1oKyheJ5YdpsGuw==" }, "cytoscape-edgehandles": { "version": "4.0.1", diff --git a/imxweb/package.json b/imxweb/package.json index 2a2a510fd..fbd217520 100644 --- a/imxweb/package.json +++ b/imxweb/package.json @@ -50,7 +50,7 @@ "applicationinsights-js": "^1.0.21", "billboard.js": "^3.11.3", "core-js": "^2.6.9", - "cytoscape": "^3.23.0", + "cytoscape": "^3.33.2", "cytoscape-edgehandles": "^4.0.1", "d3-hierarchy": "^3.1.2", "d3-scale": "^4.0.2", diff --git a/imxweb/projects/qbm/src/lib/cdr/edit-image/edit-image.component.html b/imxweb/projects/qbm/src/lib/cdr/edit-image/edit-image.component.html index 0e611dd81..523128977 100644 --- a/imxweb/projects/qbm/src/lib/cdr/edit-image/edit-image.component.html +++ b/imxweb/projects/qbm/src/lib/cdr/edit-image/edit-image.component.html @@ -1,14 +1,16 @@ - + - + (change)="resetFileFormatErrorState(); file.click()" + (remove)="remove()" +> - + {{ validationErrorMessage }} diff --git a/imxweb/projects/qbm/src/lib/cdr/edit-image/edit-image.component.ts b/imxweb/projects/qbm/src/lib/cdr/edit-image/edit-image.component.ts index 0e234b66a..5f71641f3 100644 --- a/imxweb/projects/qbm/src/lib/cdr/edit-image/edit-image.component.ts +++ b/imxweb/projects/qbm/src/lib/cdr/edit-image/edit-image.component.ts @@ -28,19 +28,18 @@ import { Component, ElementRef, EventEmitter, OnDestroy, ViewChild } from '@angu import { UntypedFormControl, Validators } from '@angular/forms'; import { Subject, Subscription } from 'rxjs'; -import { ColumnDependentReference } from '../column-dependent-reference.interface'; -import { EditorBase } from '../editor-base'; -import { CdrEditor, ValueHasChangedEventArg } from '../cdr-editor.interface'; -import { EntityColumnContainer } from '../entity-column-container'; import { ServerError } from '../../base/server-error'; import { ClassloggerService } from '../../classlogger/classlogger.service'; -import { Base64ImageService } from '../../images/base64-image.service'; import { FileSelectorService } from '../../file-selector/file-selector.service'; - +import { Base64ImageService } from '../../images/base64-image.service'; +import { CdrEditor, ValueHasChangedEventArg } from '../cdr-editor.interface'; +import { ColumnDependentReference } from '../column-dependent-reference.interface'; +import { EditorBase } from '../editor-base'; +import { EntityColumnContainer } from '../entity-column-container'; /** * Provides a {@link CdrEditor | CDR editor} for editing / viewing image data columns. - * + * * To change its value, it uses an {@link ImageSelectComponent | image select component}. * When set to read-only, it uses an {@link ImageViewComponent | image view component} to display the content. */ @@ -48,6 +47,7 @@ import { FileSelectorService } from '../../file-selector/file-selector.service'; selector: 'imx-edit-image', templateUrl: './edit-image.component.html', styleUrls: ['./edit-image.component.scss'], + providers: [FileSelectorService], }) export class EditImageComponent implements CdrEditor, OnDestroy { /** @@ -106,11 +106,11 @@ export class EditImageComponent implements CdrEditor, OnDestroy { constructor( private readonly logger: ClassloggerService, private readonly imageProvider: Base64ImageService, - private readonly fileSelector: FileSelectorService + private readonly fileSelector: FileSelectorService, ) { this.subscriptions.push( this.fileSelector.fileFormatError.subscribe(() => (this.fileFormatError = true)), - this.fileSelector.fileSelected.subscribe((filepath) => this.writeValue(this.imageProvider.getImageData(filepath))) + this.fileSelector.fileSelected.subscribe((filepath) => this.writeValue(this.imageProvider.getImageData(filepath))), ); } @@ -138,7 +138,7 @@ export class EditImageComponent implements CdrEditor, OnDestroy { this.subscriptions.push( cdref.minlengthSubject.subscribe(() => { this.setValidators(); - }) + }), ); } this.subscriptions.push( @@ -151,7 +151,7 @@ export class EditImageComponent implements CdrEditor, OnDestroy { this.control.setValue(this.columnContainer.value, { emitEvent: false }); } this.valueHasChanged.emit({ value: this.control.value }); - }) + }), ); this.subscriptions.push( @@ -168,7 +168,7 @@ export class EditImageComponent implements CdrEditor, OnDestroy { } finally { } }); - }) + }), ); this.control.addValidators(EditorBase.hasServerError(this)); } @@ -219,7 +219,7 @@ export class EditImageComponent implements CdrEditor, OnDestroy { */ private async writeValue(value: string): Promise { this.logger.debug(this, 'writeValue called with value', value); - if (this.control.errors && Object.keys(this.control.errors).some((elem) => elem !== 'generalError')) { + if (this.control.errors && Object.keys(this.control.errors).some((elem) => elem !== 'generalError' && elem !== 'required')) { this.logger.debug(this, 'writeValue - client validation failed'); return; } diff --git a/imxweb/projects/qbm/src/lib/data-source-toolbar/filter-wizard/filter-wizard.component.ts b/imxweb/projects/qbm/src/lib/data-source-toolbar/filter-wizard/filter-wizard.component.ts index 2e27ce324..4c4b86021 100644 --- a/imxweb/projects/qbm/src/lib/data-source-toolbar/filter-wizard/filter-wizard.component.ts +++ b/imxweb/projects/qbm/src/lib/data-source-toolbar/filter-wizard/filter-wizard.component.ts @@ -156,7 +156,7 @@ export class FilterWizardComponent implements OnDestroy { } public get showSqlWizard(): boolean { - return this.sqlWizardSvc.implemented && !!this.data.settings?.entitySchema?.TypeName; + return this.sqlWizardSvc.implemented; } private async close(): Promise { diff --git a/imxweb/projects/qbm/src/lib/fk-advanced-picker/candidate-entity.ts b/imxweb/projects/qbm/src/lib/fk-advanced-picker/candidate-entity.ts index 7a949bdbd..fa8babf65 100644 --- a/imxweb/projects/qbm/src/lib/fk-advanced-picker/candidate-entity.ts +++ b/imxweb/projects/qbm/src/lib/fk-advanced-picker/candidate-entity.ts @@ -24,19 +24,18 @@ * */ -import { TypedEntity, EntitySchema, DisplayColumns, ValType } from 'imx-qbm-dbts'; +import { DisplayColumns, EntitySchema, TypedEntity, ValType } from 'imx-qbm-dbts'; export class CandidateEntity extends TypedEntity { - public static GetEntitySchema(): EntitySchema { - const columns = { - XObjectKey: { - Type: ValType.String, - ColumnName: 'XObjectKey' - } - }; + public static GetEntitySchema(tablename?: string): EntitySchema { + const columns = { + XObjectKey: { + Type: ValType.String, + ColumnName: 'XObjectKey', + }, + }; - columns[DisplayColumns.DISPLAY_PROPERTYNAME] = DisplayColumns.DISPLAY_PROPERTY; - - return { Columns: columns }; - } + columns[DisplayColumns.DISPLAY_PROPERTYNAME] = DisplayColumns.DISPLAY_PROPERTY; + return { Columns: columns, TypeName: tablename }; + } } diff --git a/imxweb/projects/qbm/src/lib/fk-advanced-picker/fk-selector.component.ts b/imxweb/projects/qbm/src/lib/fk-advanced-picker/fk-selector.component.ts index e3c47a287..70a292a74 100644 --- a/imxweb/projects/qbm/src/lib/fk-advanced-picker/fk-selector.component.ts +++ b/imxweb/projects/qbm/src/lib/fk-advanced-picker/fk-selector.component.ts @@ -24,31 +24,32 @@ * */ -import { Component, OnInit, ViewChild, Input, Output, EventEmitter } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { - TypedEntityBuilder, CollectionLoadParameters, - DisplayColumns, - ValType, - TypedEntity, - IForeignKeyInfo, - FilterType, CompareOperator, - DbObjectKey, + DataModel, DataModelFilter, + DbObjectKey, + DisplayColumns, + EntitySchema, FilterData, - DataModel, + FilterType, + IForeignKeyInfo, + TypedEntity, + TypedEntityBuilder, + ValType, } from 'imx-qbm-dbts'; -import { ClassloggerService } from '../classlogger/classlogger.service'; +import { BusyService } from '../base/busy.service'; import { MetadataService } from '../base/metadata.service'; +import { ClassloggerService } from '../classlogger/classlogger.service'; +import { ClientPropertyForTableColumns } from '../data-source-toolbar/client-property-for-table-columns'; import { DataSourceToolbarSettings } from '../data-source-toolbar/data-source-toolbar-settings'; -import { CandidateEntity } from './candidate-entity'; import { DataTableComponent } from '../data-table/data-table.component'; -import { ForeignKeyPickerData } from './foreign-key-picker-data.interface'; import { SettingsService } from '../settings/settings-service'; -import { ClientPropertyForTableColumns } from '../data-source-toolbar/client-property-for-table-columns'; -import { BusyService } from '../base/busy.service'; +import { CandidateEntity } from './candidate-entity'; +import { ForeignKeyPickerData } from './foreign-key-picker-data.interface'; @Component({ selector: 'imx-fk-selector', @@ -70,16 +71,16 @@ export class FkSelectorComponent implements OnInit { @Output() public selectedCandidatesChanges = new EventEmitter(); public busyService = new BusyService(); + public entitySchema: EntitySchema = CandidateEntity.GetEntitySchema(); private readonly builder = new TypedEntityBuilder(CandidateEntity); - private readonly entitySchema = CandidateEntity.GetEntitySchema(); private filters: DataModelFilter[]; private dataModel: DataModel; constructor( public readonly metadataProvider: MetadataService, private readonly settingsService: SettingsService, - private readonly logger: ClassloggerService + private readonly logger: ClassloggerService, ) {} public async ngOnInit(): Promise { @@ -89,6 +90,7 @@ export class FkSelectorComponent implements OnInit { this.logger.trace(this, 'Pre-select the first candidate table'); this.selectedTable = this.data.fkRelations.find((fkr) => fkr.TableName === this.data.selectedTableName) || this.data.fkRelations[0]; this.dataModel = await this.selectedTable.GetDataModel(); + this.entitySchema = CandidateEntity.GetEntitySchema(this.selectedTable.TableName); this.filters = this.dataModel.Filters; } diff --git a/imxweb/projects/qer-app-portal/src/app/app.component.ts b/imxweb/projects/qer-app-portal/src/app/app.component.ts index a2f7574bc..61972b656 100644 --- a/imxweb/projects/qer-app-portal/src/app/app.component.ts +++ b/imxweb/projects/qer-app-portal/src/app/app.component.ts @@ -101,7 +101,7 @@ export class AppComponent implements OnInit, OnDestroy { const systemInfo = await systemInfoService.get(); const groups = (await userModelService.getGroups()).map((group) => group.Name || ''); this.profileSettings = await this.qerClient.v2Client.portal_profile_get(); - const isUseProfileLangChecked = this.profileSettings.UseProfileLanguage ?? false; + const isUseProfileLangChecked = this.profileSettings.UseProfileLanguage ?? config.PersonConfig?.UseProfileCulture ?? false; // Set session culture if isUseProfileLangChecked is true, set browser culture otherwise if (isUseProfileLangChecked) { await this.translationProvider.init(sessionState.culture, sessionState.cultureFormat); diff --git a/imxweb/projects/uci/src/lib/changeview/change-view.component.ts b/imxweb/projects/uci/src/lib/changeview/change-view.component.ts index 7ec9fd209..6324b54a9 100644 --- a/imxweb/projects/uci/src/lib/changeview/change-view.component.ts +++ b/imxweb/projects/uci/src/lib/changeview/change-view.component.ts @@ -25,23 +25,15 @@ */ import { Component, OnInit } from '@angular/core'; -import { EuiSidesheetService } from '@elemental-ui/core'; +import { EuiLoadingService, EuiSidesheetService } from '@elemental-ui/core'; import { TranslateService } from '@ngx-translate/core'; +import { OverlayRef } from '@angular/cdk/overlay'; import { ManualChangeOperationData, OpsupportUciChangedetail, OpsupportUciChanges } from 'imx-api-uci'; -import { - CollectionLoadParameters, - DataModel, - DbObjectKey, - EntitySchema, - ExtendedTypedEntityCollection, - TypedEntity, - ValType, -} from 'imx-qbm-dbts'; +import { CollectionLoadParameters, DataModel, DbObjectKey, EntitySchema, ExtendedTypedEntityCollection, TypedEntity } from 'imx-qbm-dbts'; import { DataSourceToolbarFilter, DataSourceToolbarSettings, DataSourceWrapper, MetadataService } from 'qbm'; import { UciApiService } from '../uci-api-client.service'; import { ChangeSidesheetComponent } from './change-sidesheet.component'; -import { ChangeViewService } from './change-view.service'; @Component({ templateUrl: './change-view.component.html', @@ -54,13 +46,15 @@ export class ChangeViewComponent implements OnInit { public selectedChange: OpsupportUciChanges; public entitySchema: EntitySchema; private filterOptions: DataSourceToolbarFilter[] = []; + private busyIndicator: OverlayRef; + private busyCounter = 0; constructor( private readonly translator: TranslateService, private readonly uciApi: UciApiService, - private readonly changeviewService: ChangeViewService, private readonly sidesheet: EuiSidesheetService, - private readonly metadatasvc: MetadataService + private readonly metadatasvc: MetadataService, + private readonly busyService: EuiLoadingService, ) { this.entitySchema = this.uciApi.typedClient.OpsupportUciChanges.GetSchema(); } @@ -87,14 +81,14 @@ export class ChangeViewComponent implements OnInit { this.entitySchema, { dataModel: dataModel, - } + }, ); await this.getData({ state: '0' }, true); } public async getData(newState?: CollectionLoadParameters & { state?: string }, isInitialLoad: boolean = false): Promise { - this.changeviewService.handleOpenLoader(); + this.handleOpenLoader(); try { const s = await this.dstWrapper.getDstSettings(newState, undefined, isInitialLoad); @@ -105,7 +99,7 @@ export class ChangeViewComponent implements OnInit { this.dstSettings = s; } finally { - this.changeviewService.handleCloseLoader(); + this.handleCloseLoader(); } } @@ -115,13 +109,13 @@ export class ChangeViewComponent implements OnInit { } public async viewDetails(change: OpsupportUciChanges): Promise { - this.changeviewService.handleOpenLoader(); + this.handleOpenLoader(); var details: ExtendedTypedEntityCollection; try { const uidChange = change.GetEntity().GetKeys()[0]; details = await this.uciApi.typedClient.OpsupportUciChangedetail.Get(uidChange); } finally { - this.changeviewService.handleCloseLoader(); + this.handleCloseLoader(); } const result = await this.sidesheet @@ -144,4 +138,21 @@ export class ChangeViewComponent implements OnInit { public async getDataModel(): Promise { return this.uciApi.client.opsupport_uci_changes_datamodel_get(); } + + private handleOpenLoader(): void { + this.busyCounter++; + if (!this.busyIndicator) { + this.busyIndicator = this.busyService.show(); + } + } + + private handleCloseLoader(): void { + if (this.busyCounter > 0) { + this.busyCounter--; + } + if (this.busyCounter === 0 && this.busyIndicator) { + this.busyService.hide(this.busyIndicator); + this.busyIndicator = undefined; + } + } } diff --git a/imxweb/projects/uci/src/lib/changeview/change-view.service.ts b/imxweb/projects/uci/src/lib/changeview/change-view.service.ts deleted file mode 100644 index 7ea87617a..000000000 --- a/imxweb/projects/uci/src/lib/changeview/change-view.service.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * ONE IDENTITY LLC. PROPRIETARY INFORMATION - * - * This software is confidential. One Identity, LLC. or one of its affiliates or - * subsidiaries, has supplied this software to you under terms of a - * license agreement, nondisclosure agreement or both. - * - * You may not copy, disclose, or use this software except in accordance with - * those terms. - * - * - * Copyright 2023 One Identity LLC. - * ALL RIGHTS RESERVED. - * - * ONE IDENTITY LLC. MAKES NO REPRESENTATIONS OR - * WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED - * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, OR - * NON-INFRINGEMENT. ONE IDENTITY LLC. SHALL NOT BE - * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE - * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING - * THIS SOFTWARE OR ITS DERIVATIVES. - * - */ - -import { OverlayRef } from "@angular/cdk/overlay"; -import { Injectable } from "@angular/core"; -import { EuiLoadingService } from "@elemental-ui/core"; - -@Injectable({ - providedIn: 'root' -}) -export class ChangeViewService { - - constructor(private readonly busyService: EuiLoadingService) { } - - private busyIndicator: OverlayRef; - - public handleOpenLoader(): void { - if (!this.busyIndicator) { - setTimeout(() => this.busyIndicator = this.busyService.show()); - } - } - - public handleCloseLoader(): void { - if (this.busyIndicator) { - setTimeout(() => { - this.busyService.hide(this.busyIndicator); - this.busyIndicator = undefined; - }); - } - } -} \ No newline at end of file