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