Skip to content

Commit

Permalink
Automated sync from source branch v92
Browse files Browse the repository at this point in the history
  • Loading branch information
imx-sync-bot committed Mar 11, 2024
1 parent 1e63a14 commit a5a5ba6
Show file tree
Hide file tree
Showing 42 changed files with 369 additions and 230 deletions.
2 changes: 1 addition & 1 deletion .commit
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b00a5f060ee4690c7173491ceb2116c39f93ebb7
47d44c74207f3d773d1ffa718dc102fa887f1cab
7 changes: 1 addition & 6 deletions .sync-history
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
9259609ee 2024-02-16 Merged PR 64916: 445342 - Fix hyperivew navigation
4fd65a01d 2024-02-15 Merged PR 64883: 444602-account-sidesheet-filtering
102e1446b 2024-02-14 Merged PR 64891: 446290 - Fix edit fk autocomplete data loading
7675877fb 2024-02-13 Merged PR 64855: 446162 - Fix history comparison datepicker
ef7cca96b 2024-02-13 Merged PR 64848: 446188 - Fix history timeline bug
fcca26d50 2024-02-12 Merged PR 64833: Develop hyerpview navigation
41487b63c 2024-02-29 Merged PR 65170: #446439 - Develop new request url params
5 changes: 2 additions & 3 deletions imxweb/custom-theme/custom-theme.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ $theme_font_family: 'Source Sans Pro, "Helvetica Neue", sans-serif' !default;

@use 'sass:math';
@use '@angular/material' as mat;
@use '@elemental-ui/core/src/styles/theming/theme' as theme;

@import '@elemental-ui/core/src/styles/functions/to_number';

Expand Down Expand Up @@ -38,6 +39,4 @@ $theme: mat.define-light-theme(
)
);

.custom-theme {
@include mat.all-component-themes($theme);
}
@include theme.theme('custom-theme', $theme);
Binary file modified imxweb/imx-modules/imx-api-aad.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-aob.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-apc.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-att.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-cpl.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-dpr.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-hds.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-o3e.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-o3t.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-olg.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-pol.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-qbm.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-qer.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-rmb.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-rms.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-rps.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-sac.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-tsb.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api-uci.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-api.tgz
Binary file not shown.
Binary file modified imxweb/imx-modules/imx-qbm-dbts.tgz
Binary file not shown.
20 changes: 15 additions & 5 deletions imxweb/projects/att/src/lib/decision/attestation-case.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import {
BaseReadonlyCdr,
ClassloggerService,
ColumnDependentReference,
MetadataService,
SnackBarService,
SystemInfoService,
} from 'qbm';
Expand Down Expand Up @@ -107,6 +108,7 @@ export class AttestationCaseComponent implements OnDestroy, OnInit {
private readonly busyService: EuiLoadingService,
private readonly systemInfoService: SystemInfoService,
private readonly logger: ClassloggerService,
private readonly metadataService: MetadataService,
authentication: AuthenticationService
) {
this.case = data.case;
Expand Down Expand Up @@ -228,12 +230,20 @@ export class AttestationCaseComponent implements OnDestroy, OnInit {
});
}

public setRelatedOptions(): void {
public async setRelatedOptions(): Promise<void> {
this.relatedOptions =
this.data.case.data?.RelatedObjects.map((relatedObject) => {
const objectType = DbObjectKey.FromXml(relatedObject.ObjectKey);
return { ObjectKey: relatedObject.ObjectKey, Display: `${relatedObject.Display} - ${objectType.TableName}` };
}) || [];
(await Promise.all(
this.data.case.data?.RelatedObjects.map(async (relatedObject) => {
const objectType = DbObjectKey.FromXml(relatedObject.ObjectKey);
if (!this.metadataService.tables[objectType.TableName]) {
await this.metadataService.update([objectType.TableName]);
}
return {
ObjectKey: relatedObject.ObjectKey,
Display: `${relatedObject.Display} - ${this.metadataService.tables[objectType.TableName].DisplaySingular}`,
};
})
)) || [];
}

public setHyperviewObject(selectedRelatedObject: AttestationRelatedObject): void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -480,16 +480,8 @@ export class DataSourceToolbarComponent implements OnChanges, OnInit, OnDestroy
this.addSearchFilter(filter);
});

const tree = config?.Filter?.find((elem) => elem.ColumnName === this.columnForTree);
if (tree) {
const display = this.filterTreeItems.Elements.find((elem) => elem.Filter.Value1 === tree.Value1)?.Display;
this.currentFilterData = [{ display, filter: tree }];
if (this.settings.navigationState.filter) {
this.settings.navigationState.filter.push(tree);
} else {
this.settings.navigationState.filter = [tree];
}
}
this.addTreeFilterFromConfig(config);
this.addCustomFilterFromConfig(config);

if (config?.GroupBy) {
this.applyGroupBy(config);
Expand Down Expand Up @@ -1277,7 +1269,7 @@ export class DataSourceToolbarComponent implements OnChanges, OnInit, OnDestroy
if (filterdata) {
//Get all filter, that were not associaed with the tree filter
const otherFilter = (this.settings.navigationState.filter ?? []).filter(
(elem) => elem.ColumnName !== filterdata[0].filter.ColumnName
(elem) => elem.ColumnName !== filterdata[0].filter.ColumnName,
);
this.currentFilterData = filterdata;
this.filterTreeSelectionChanged.emit(this.currentFilterData.map((filter) => filter.filter).concat(otherFilter)); // combine the two filter again
Expand Down Expand Up @@ -1334,6 +1326,8 @@ export class DataSourceToolbarComponent implements OnChanges, OnInit, OnDestroy
if (this.filtersCurrentlyApplied) {
this.clearFilters(false);
}

this.filterWizardExpression = null;
if (emit) {
this.navigationStateChanged.emit(this.settings.navigationState);
}
Expand All @@ -1348,7 +1342,7 @@ export class DataSourceToolbarComponent implements OnChanges, OnInit, OnDestroy
this.currentFilterData = [];
if (emit) {
this.filterTreeSelectionChanged.emit(
this.settings.navigationState.filter?.filter((elem) => elem.ColumnName != currentTree.ColumnName)
this.settings.navigationState.filter?.filter((elem) => elem.ColumnName != currentTree.ColumnName),
);
}
}
Expand Down Expand Up @@ -1600,6 +1594,43 @@ export class DataSourceToolbarComponent implements OnChanges, OnInit, OnDestroy
this.settingsChanged.emit(this.settings);
}

/**
* @ignore Used internally
* Checks, if there is a tree filter defined in the config.
* If a tree filter is defined, it initializes the currentFilterData object and adds the parameter to the navigation.
* @param config the configuration, that should be loaded.
*/
private addTreeFilterFromConfig(config: DSTViewConfig): void {
const tree = config?.Filter?.find((elem) => elem.ColumnName === this.columnForTree);
if (tree) {
const display = this.filterTreeItems.Elements.find((elem) => elem.Filter.Value1 === tree.Value1)?.Display;
this.currentFilterData = [{ display, filter: tree }];
if (this.settings.navigationState.filter) {
this.settings.navigationState.filter.push(tree);
} else {
this.settings.navigationState.filter = [tree];
}
}
}

/**
* @ignore Used internally
* Checks, if there is a custom filter defined in the config.
* If a custom filter is defined, it initializes the filterWizardExpression object and adds the parameter to the navigation.
* @param config the configuration, that should be loaded.
*/
private addCustomFilterFromConfig(config: DSTViewConfig): void {
const expression = config?.Filter?.find((elem) => elem.Expression != null);
if (expression) {
this.filterWizardExpression = { Expression: expression.Expression };
if (this.settings.navigationState.filter) {
this.settings.navigationState.filter.push(expression);
} else {
this.settings.navigationState.filter = [expression];
}
}
}

/**
* @ignore Used internally
* Sets any initial values for the supplied filters and makes a call to update the navigation state
Expand Down Expand Up @@ -1720,6 +1751,7 @@ export class DataSourceToolbarComponent implements OnChanges, OnInit, OnDestroy
if (
this.isEnterDisabled ||
filter?.ColumnName === this.columnForTree ||
filter?.Expression != null ||
(!filter && (!this.searchControl.value || (!!this.searchControl.value && this.searchControl.value?.length === 0)))
) {
// Here we return early if there is nothing to search over
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<ng-container *ngFor="let filter of settings?.filters">
<ng-container *ngFor="let filter of filters">
<mat-card class="mat-elevation-z2" *ngIf="!hiddenFilterSet.has(filter.Name)">
<mat-card-content>
<h1 *ngIf="filter.Options.length > 1" class="imx-filter-title">{{ filter.Description || filter.Name }}</h1>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@
*/

import { AfterViewInit, Component, EventEmitter, Inject, Input, NgZone, OnDestroy, OnInit, Output, QueryList, ViewChildren } from '@angular/core';
import { FormBuilder } from '@angular/forms';
import { MatCardContent } from '@angular/material/card';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { MatSelectChange } from '@angular/material/select';
import { MatTableDataSource } from '@angular/material/table';
Expand All @@ -38,7 +36,7 @@ import { DataSourceToolbarSettings } from '../../data-source-toolbar-settings';
import { DSTViewConfig } from '../../data-source-toolbar-view-config.interface';
import { FilterFormState, FilterTypeIdentifier, FilterWizardSidesheetData } from '../filter-wizard.interfaces';
import { FilterWizardService } from '../filter-wizard.service';

import * as _ from 'lodash';
@Component({
selector: 'imx-predefined-filter',
templateUrl: './predefined-filter.component.html',
Expand Down Expand Up @@ -103,6 +101,8 @@ export class PredefinedFilterComponent implements OnInit, AfterViewInit, OnDestr
public hiddenFilterSet: Set<string> = new Set([]);
public filterOptionLengthThreshold = 5;

public filters: DataSourceToolbarFilter[] = [];

/**
* This is the mat table datasource.
*/
Expand Down Expand Up @@ -130,8 +130,9 @@ export class PredefinedFilterComponent implements OnInit, AfterViewInit, OnDestr
constructor(private readonly filterService: FilterWizardService, @Inject(EUI_SIDESHEET_DATA) public data?: FilterWizardSidesheetData) {
// this.hiddenFilters = ['namespace'];
this.id = data.id;
this.settings = data.settings;
this.settings = Object.create(data.settings);
this.selectedFilters = data.selectedFilters;
this.filters = _.cloneDeep(data.settings.filters);
this.internalSelectedFilters = Object.create(this.selectedFilters);
this.formState = { canClearFilters: this.selectedFilters.length > 0, dirty: false, filterIdentifier: FilterTypeIdentifier.Predefined };

Expand Down Expand Up @@ -241,7 +242,7 @@ export class PredefinedFilterComponent implements OnInit, AfterViewInit, OnDestr
* @returns the filter with the selected option
*/
public getSelectedFilterFromName(filterName: string, value: string): DataSourceToolbarSelectedFilter {
const filter = this.settings.filters?.find((filter) => filter.Name === filterName);
const filter = this.filters?.find((filter) => filter.Name === filterName);
if (filter) {
filter.CurrentValue = value;
const selectedOption = this.findFilterOptionFromValue(value, filter);
Expand Down Expand Up @@ -286,7 +287,7 @@ export class PredefinedFilterComponent implements OnInit, AfterViewInit, OnDestr
* Clears all selected filter values and updates and emits the new navigationState
*/
private clearFilters(emit = true): void {
this.settings.filters?.forEach((filter) => (filter.CurrentValue = undefined));
this.filters?.forEach((filter) => (filter.CurrentValue = undefined));
const containsCustomFilters = this.selectedFiltersContainsCustomFilters();
if (containsCustomFilters) {
this.customSelectedFilterRemoved.emit();
Expand Down Expand Up @@ -321,15 +322,17 @@ export class PredefinedFilterComponent implements OnInit, AfterViewInit, OnDestr
*/
private updateNavigateStateWithFilters(emit = true): void {
this.selectedFilters = Object.create(this.internalSelectedFilters);
this.settings.filters?.forEach((filter) => {
this.filters?.forEach((filter) => {
if (filter.CurrentValue) {
this.settings.navigationState[filter.Name] = filter.CurrentValue;
this.settings.filters.find(elem=>elem.Name === filter.Name).CurrentValue = filter.CurrentValue;
if (filter?.Column) {
// This is a local filter and we must filter over this column
this.localFilterState.filterColumns[filter.Column] = filter.CurrentValue;
}
} else {
delete this.settings.navigationState[filter.Name];
delete this.settings.filters.find((elem) => elem.Name === filter.Name).CurrentValue;
if (filter?.Column) {
delete this.localFilterState.filterColumns[filter.Column];
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
<mat-card [@expandDiv]="{ value: expandState, params: { expandWidth: expandWidth } }" class="snavigation" [ngClass]="{ 'snavigation--expanded': sideNavExpanded, 'mat-card--hidden': !showSidenavHeader}">
<mat-card
[@expandDiv]="{ value: expandState, params: { expandWidth: expandWidth } }"
class="snavigation"
[ngClass]="{ 'snavigation--expanded': sideNavExpanded, 'mat-card--hidden': !showSidenavHeader }"
>
<mat-sidenav-container>
<mat-sidenav mode="side" opened disableClose="true" [ngClass]="{ 'snavigation-side--expanded': sideNavExpanded }">
<div class="snavigation-side">
Expand All @@ -16,16 +20,17 @@ <h3 class="snavigation-side-toggle-header">{{ headerText }}</h3>
>
<eui-icon icon="search"></eui-icon>
</button>
<imx-data-source-toolbar #dst
*ngIf="dynamicDataSource?.dstSettings"
[@expandSearch]="{ value: searchState, params: { expandWidth: expandWidth } }"
[alwaysVisible]="true"
[settings]="dynamicDataSource.dstSettings"
[options]="['search']"
[searchBoxText]="'#LDS#Search' | translate"
[useThemedStyle]="true"
(search)="onSearch($event)"
(navigationStateChanged)="onSearch()"
<imx-data-source-toolbar
#dst
*ngIf="dynamicDataSource?.dstSettings"
[@expandSearch]="{ value: searchState, params: { expandWidth: expandWidth } }"
[alwaysVisible]="true"
[settings]="dynamicDataSource.dstSettings"
[options]="['search', 'filter']"
[searchBoxText]="'#LDS#Search' | translate"
[useThemedStyle]="true"
(search)="onSearch($event)"
(navigationStateChanged)="onSearch()"
></imx-data-source-toolbar>
<button
*ngIf="sideNavExpanded"
Expand Down Expand Up @@ -59,7 +64,7 @@ <h3 class="rotate-90">{{ headerText }}</h3>
<mat-card *ngIf="dataSource" class="snavigation-side-content">
<mat-tree *ngIf="!initializingData" [dataSource]="dataSource" [treeControl]="treeControl" class="tree">
<mat-tree-node *matTreeNodeDef="let node">
<div class="mat-tree-node" [ngClass]="{'mat-tree-node--selected': isSelected(node)}">
<div class="mat-tree-node" [ngClass]="{ 'mat-tree-node--selected': isSelected(node) }">
<button mat-icon-button disabled>
<eui-icon size="s"></eui-icon>
</button>
Expand All @@ -70,33 +75,27 @@ <h3 class="rotate-90">{{ headerText }}</h3>
</mat-tree-node>

<mat-nested-tree-node *matTreeNodeDef="let node; when: hasChild">
<div class="mat-tree-node" [ngClass]="{'mat-tree-node--selected': isSelected(node)}">
<button
mat-button
matTreeNodeToggle
class="mat-icon-button"
[attr.aria-label]="'#LDS#Expand' | translate"
data-imx-identifier="sidenav-tree-parent-toggle"
>
<eui-icon size="s" [icon]="treeControl.isExpanded(node) ? 'chevrondown' : 'chevronright'"></eui-icon>
</button>
<button mat-button class="tree-item-button" data-imx-identifier="sidenav-tree-parent-select" (click)="selectNode(node)">
<ng-container *ngTemplateOutlet="treeNodeTemplate; context: { $implicit: node, selected: isSelected(node)}"></ng-container>
</button>
</div>
<div [class.tree-invisible]="!treeControl.isExpanded(node)" role="group">
<ng-container matTreeNodeOutlet></ng-container>
</div>
<div class="mat-tree-node" [ngClass]="{ 'mat-tree-node--selected': isSelected(node) }">
<button mat-button matTreeNodeToggle class="mat-icon-button" [attr.aria-label]="'#LDS#Expand' | translate" data-imx-identifier="sidenav-tree-parent-toggle">
<eui-icon size="s" [icon]="treeControl.isExpanded(node) ? 'chevrondown' : 'chevronright'"></eui-icon>
</button>
<button mat-button class="tree-item-button" data-imx-identifier="sidenav-tree-parent-select" (click)="selectNode(node)">
<ng-container *ngTemplateOutlet="treeNodeTemplate; context: { $implicit: node, selected: isSelected(node) }"></ng-container>
</button>
</div>
<div [class.tree-invisible]="!treeControl.isExpanded(node)" role="group">
<ng-container matTreeNodeOutlet></ng-container>
</div>
</mat-nested-tree-node>
</mat-tree>
</mat-card>

<!-- Dynamic tree -->
<mat-card *ngIf="dynamicDataSource" class="snavigation-side-content" [ngClass]="{ 'snavigation-side-content--center': initializingData || !hasData}">
<mat-card *ngIf="dynamicDataSource && sideNavExpanded" class="snavigation-side-content" [ngClass]="{ 'snavigation-side-content--center': initializingData || !hasData }">
<mat-spinner *ngIf="initializingData" [diameter]="100" [attr.aria-label]="'#LDS#Loading...' | translate"></mat-spinner>
<div *ngIf="!initializingData && !hasData" class="imx-no-data">
<eui-icon icon="content-alert"></eui-icon>
<span>{{noResultText | translate}}</span>
<span>{{ noResultText | translate }}</span>
</div>
<mat-tree *ngIf="!initializingData" [dataSource]="dynamicDataSource" [treeControl]="treeControl" class="tree">
<mat-tree-node *matTreeNodeDef="let node" matTreeNodePadding matTreeNodePaddingIndent="20">
Expand All @@ -112,13 +111,7 @@ <h3 class="rotate-90">{{ headerText }}</h3>

<mat-tree-node *matTreeNodeDef="let node; when: hasChild" matTreeNodePadding matTreeNodePaddingIndent="20">
<div class="mat-tree-node" [ngClass]="{ 'mat-tree-node--selected': isSelected(node) }">
<button
mat-button
matTreeNodeToggle
class="mat-icon-button"
[attr.aria-label]="'#LDS#Expand' | translate"
data-imx-identifier="sidenav-tree-parent-toggle"
>
<button mat-button matTreeNodeToggle class="mat-icon-button" [attr.aria-label]="'#LDS#Expand' | translate" data-imx-identifier="sidenav-tree-parent-toggle">
<eui-icon size="s" [icon]="treeControl.isExpanded(node) ? 'chevrondown' : 'chevronright'"></eui-icon>
</button>
<button mat-button color="primary" class="tree-item-button" data-imx-identifier="sidenav-tree-parent-select" (click)="selectNode(node)">
Expand Down
4 changes: 2 additions & 2 deletions imxweb/projects/qbm/src/lib/sqlwizard/sqlwizard.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ import { MatButtonToggleChange } from '@angular/material/button-toggle';
selector: 'imx-sqlwizard',
})
export class SqlWizardComponent implements OnInit, OnChanges, AfterViewInit {
public readonly andConditionLabel = '#LDS#ALL';
public readonly orConditionLabel = '#LDS#ANY';
public readonly andConditionLabel = '#LDS#Condition_And';
public readonly orConditionLabel = '#LDS#Condition_Or';

public LogOp = _logOp;
public viewSettings: SqlViewSettings;
Expand Down
23 changes: 0 additions & 23 deletions imxweb/projects/qer-app-operationssupport/ToDo.txt

This file was deleted.

Loading

0 comments on commit a5a5ba6

Please sign in to comment.