From 87e20c86981fd4c755c5c25937ad176a5628b56f Mon Sep 17 00:00:00 2001 From: TINCU Sebastian-Ion <Sebastian-Ion.TINCU@ext.ec.europa.eu> Date: Tue, 6 Nov 2018 11:51:36 +0100 Subject: [PATCH] EDELIVERY-4014 "+" icon for Service metadata on search/edit page is Extract logic to controllers to allow them to step in when deciding if the row expander should be disabled or not even when the rows are not disabled themselves (e.g. when they were previously deleted). --- .../app/common/search-table/search-table-controller.ts | 7 +++++++ .../app/common/search-table/search-table.component.html | 4 ++-- .../src/app/common/search-table/search-table.component.ts | 4 ++++ smp-angular/src/app/domain/domain-controller.ts | 4 ++++ .../service-group-edit/service-group-edit-controller.ts | 5 +++++ .../service-group-search-controller.ts | 6 ++++++ smp-angular/src/app/user/user-controller.ts | 8 +++----- 7 files changed, 31 insertions(+), 7 deletions(-) diff --git a/smp-angular/src/app/common/search-table/search-table-controller.ts b/smp-angular/src/app/common/search-table/search-table-controller.ts index 9eece017e..e244f55fa 100644 --- a/smp-angular/src/app/common/search-table/search-table-controller.ts +++ b/smp-angular/src/app/common/search-table/search-table-controller.ts @@ -10,4 +10,11 @@ export interface SearchTableController { newRow(): SearchTableEntity; newDialog(config?: MatDialogConfig): MatDialogRef<any>; dataSaved(); + + /** + * Returns whether the row expander should be shown as disabled even when the actual row is not fully disabled. + * + * @param row the row for which the row expander should be disabled or not + */ + isRowExpanderDisabled(row: SearchTableEntity): boolean; } diff --git a/smp-angular/src/app/common/search-table/search-table.component.html b/smp-angular/src/app/common/search-table/search-table.component.html index 6149a231e..9c3ccef6d 100644 --- a/smp-angular/src/app/common/search-table/search-table.component.html +++ b/smp-angular/src/app/common/search-table/search-table.component.html @@ -85,8 +85,8 @@ </ng-template> <ng-template #rowExpand let-row="row" let-expanded="expanded" let-disabled="disabled" ngx-datatable-cell-template > - <span *ngIf="disabled || row.serviceMetadata?.length === 0">()</span> - <a *ngIf="!disabled && row.serviceMetadata?.length" class="table-button-expand" + <span *ngIf="isRowExpanderDisabled(row, disabled)">()</span> + <a *ngIf="!isRowExpanderDisabled(row, disabled)" class="table-button-expand" href="javascript:void(0)" title="Expand/Collapse Row" (click)="toggleExpandRow(row)">{{expanded?'(-)':'(+)'}} diff --git a/smp-angular/src/app/common/search-table/search-table.component.ts b/smp-angular/src/app/common/search-table/search-table.component.ts index a0f858eae..ea291b279 100644 --- a/smp-angular/src/app/common/search-table/search-table.component.ts +++ b/smp-angular/src/app/common/search-table/search-table.component.ts @@ -332,6 +332,10 @@ export class SearchTableComponent implements OnInit { return !(!this.submitButtonsEnabled || this.forceRefresh); } + isRowExpanderDisabled(row: any, rowDisabled: boolean): boolean { + return rowDisabled || this.searchTableController.isRowExpanderDisabled(row); + } + private editSearchTableEntity(rowNumber: number) { const row = this.rows[rowNumber]; const formRef: MatDialogRef<any> = this.searchTableController.newDialog({ diff --git a/smp-angular/src/app/domain/domain-controller.ts b/smp-angular/src/app/domain/domain-controller.ts index 34843c6ce..e3fa9eb36 100644 --- a/smp-angular/src/app/domain/domain-controller.ts +++ b/smp-angular/src/app/domain/domain-controller.ts @@ -61,4 +61,8 @@ export class DomainController implements SearchTableController { stringMessage: '', } } + + isRowExpanderDisabled(row: SearchTableEntity): boolean { + return false; + } } diff --git a/smp-angular/src/app/service-group-edit/service-group-edit-controller.ts b/smp-angular/src/app/service-group-edit/service-group-edit-controller.ts index cc104cd21..5249d57e8 100644 --- a/smp-angular/src/app/service-group-edit/service-group-edit-controller.ts +++ b/smp-angular/src/app/service-group-edit/service-group-edit-controller.ts @@ -8,6 +8,7 @@ import {ServiceGroupMetadataDialogComponent} from "./service-group-metadata-dial import {of} from "rxjs/internal/observable/of"; import {SearchTableValidationResult} from "../common/search-table/search-table-validation-result.model"; import {SearchTableEntity} from "../common/search-table/search-table-entity.model"; +import {ServiceGroupSearchRo} from "../service-group-search/service-group-search-ro.model"; export class ServiceGroupEditController implements SearchTableController { @@ -84,4 +85,8 @@ export class ServiceGroupEditController implements SearchTableController { } } + isRowExpanderDisabled(row: ServiceGroupEditRo): boolean { + const serviceGroup = <ServiceGroupEditRo>row; + return !(serviceGroup.serviceMetadata && serviceGroup.serviceMetadata.length); + } } diff --git a/smp-angular/src/app/service-group-search/service-group-search-controller.ts b/smp-angular/src/app/service-group-search/service-group-search-controller.ts index 532423d31..beb8fbab0 100644 --- a/smp-angular/src/app/service-group-search/service-group-search-controller.ts +++ b/smp-angular/src/app/service-group-search/service-group-search-controller.ts @@ -4,6 +4,7 @@ import {ServiceGroupSearchRo} from './service-group-search-ro.model'; import {of} from "rxjs/internal/observable/of"; import {SearchTableValidationResult} from "../common/search-table/search-table-validation-result.model"; import {SearchTableEntity} from "../common/search-table/search-table-entity.model"; +import {ServiceGroupEditRo} from "../service-group-edit/service-group-edit-ro.model"; export class ServiceGroupSearchController implements SearchTableController { @@ -39,4 +40,9 @@ export class ServiceGroupSearchController implements SearchTableController { stringMessage: message, } } + + isRowExpanderDisabled(row: SearchTableEntity): boolean { + const serviceGroup = <ServiceGroupSearchRo>row; + return !(serviceGroup.serviceMetadata && serviceGroup.serviceMetadata.length); + } } diff --git a/smp-angular/src/app/user/user-controller.ts b/smp-angular/src/app/user/user-controller.ts index 05183dd42..856d2173b 100644 --- a/smp-angular/src/app/user/user-controller.ts +++ b/smp-angular/src/app/user/user-controller.ts @@ -4,11 +4,8 @@ import {UserDetailsDialogComponent} from './user-details-dialog/user-details-dia import {UserRo} from './user-ro.model'; import {SearchTableEntityStatus} from '../common/search-table/search-table-entity-status.model'; import {GlobalLookups} from "../common/global-lookups"; -import {CertificateRo} from "./certificate-ro.model"; import {SearchTableEntity} from "../common/search-table/search-table-entity.model"; -import {of} from "rxjs/internal/observable/of"; import {SearchTableValidationResult} from "../common/search-table/search-table-validation-result.model"; -import {ServiceMetadataValidationEditRo} from "../service-group-edit/service-group-metadata-dialog/service-metadata-validation-edit-ro.model"; import {SmpConstants} from "../smp.constants"; import {HttpClient} from "@angular/common/http"; @@ -64,7 +61,8 @@ export class UserController implements SearchTableController { } } - - + isRowExpanderDisabled(row: SearchTableEntity): boolean { + return false; + } } -- GitLab