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 9eece017e263a64835fc3095bf05744180f9f012..e244f55fa92329838f6743f52cea7a15f6203745 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 6149a231e6c8a18b9c8ca3b282229d6aeb29aa6d..9c3ccef6d0b54d45e25184f8dfe7587b73220524 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 a0f858eae8ac7256f2b3c969ca46d09c76462996..ea291b279708a56dd2bdb5aa473d8cc7b3287ea9 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 34843c6ceb53c7233b79311255413b958fa89648..e3fa9eb36ba011f7487b8fe05adffc6e196b903f 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 cc104cd21b3b19ae6a88eabef357d59168b536cb..5249d57e8ac0b053c91c3a5460cdd19c898783d9 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 532423d31fd23b8da17d8b37663ed3a1a9fed1be..beb8fbab0dc3bb4908f9f67726775b89b148cd12 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 05183dd42101b50b83a7ed8b7dc28528d0477fa8..856d2173b9b321680cc7420fc26ab7961aaedb70 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; + } }