diff --git a/ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts b/ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts index 865a1b8c8b..0734114b81 100644 --- a/ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts +++ b/ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts @@ -17,6 +17,7 @@ import { CellActionDescriptorType, DateEntityTableColumn, + EntityLinkTableColumn, EntityTableColumn, EntityTableConfig } from '@home/models/entity/entities-table-config.models'; @@ -59,7 +60,7 @@ import { AlarmAssigneePanelData } from '@home/components/alarm/alarm-assignee-panel.component'; import { ComponentPortal } from '@angular/cdk/portal'; -import { isDefinedAndNotNull } from '@core/utils'; +import { getEntityDetailsPageURL, isDefinedAndNotNull } from '@core/utils'; import { UtilsService } from '@core/services/utils.service'; import { AlarmFilterConfig } from '@shared/models/query/query.models'; import { EntityService } from '@core/http/entity.service'; @@ -113,8 +114,9 @@ export class AlarmTableConfig extends EntityTableConfig this.columns.push( new DateEntityTableColumn('createdTime', 'alarm.created-time', this.datePipe, '150px')); this.columns.push( - new EntityTableColumn('originatorName', 'alarm.originator', '25%', - (entity) => entity.originatorName, entity => ({}), false)); + new EntityLinkTableColumn('originatorName', 'alarm.originator', '25%', + (entity) => entity.originatorName, + (entity) => getEntityDetailsPageURL(entity.originator.id, entity.originator.entityType as EntityType))); this.columns.push( new EntityTableColumn('type', 'alarm.type', '25%', entity => this.utilsService.customTranslation(entity.type, entity.type))); diff --git a/ui-ngx/src/app/modules/home/components/entity/entities-table.component.html b/ui-ngx/src/app/modules/home/components/entity/entities-table.component.html index 9d44404e8f..0704ddffac 100644 --- a/ui-ngx/src/app/modules/home/components/entity/entities-table.component.html +++ b/ui-ngx/src/app/modules/home/components/entity/entities-table.component.html @@ -165,7 +165,12 @@ [matTooltip]="cellTooltip(entity, column, row)" matTooltipPosition="above" [ngStyle]="cellStyle(entity, column, row)"> - + + + + + + diff --git a/ui-ngx/src/app/modules/home/components/entity/entities-table.component.ts b/ui-ngx/src/app/modules/home/components/entity/entities-table.component.ts index bdf35905bb..1eb2566029 100644 --- a/ui-ngx/src/app/modules/home/components/entity/entities-table.component.ts +++ b/ui-ngx/src/app/modules/home/components/entity/entities-table.component.ts @@ -48,6 +48,7 @@ import { CellActionDescriptorType, EntityActionTableColumn, EntityColumn, + EntityLinkTableColumn, EntityTableColumn, EntityTableConfig, GroupActionDescriptor, @@ -613,7 +614,7 @@ export class EntitiesTableComponent extends PageComponent implements IEntitiesTa columnsUpdated(resetData: boolean = false) { this.entityColumns = this.entitiesTableConfig.columns.filter( - (column) => column instanceof EntityTableColumn) + (column) => column instanceof EntityTableColumn || column instanceof EntityLinkTableColumn) .map(column => column as EntityTableColumn>); this.actionColumns = this.entitiesTableConfig.columns.filter( (column) => column instanceof EntityActionTableColumn) @@ -670,7 +671,7 @@ export class EntitiesTableComponent extends PageComponent implements IEntitiesTa } cellContent(entity: BaseData, column: EntityColumn>, row: number) { - if (column instanceof EntityTableColumn) { + if (column instanceof EntityTableColumn || column instanceof EntityLinkTableColumn) { const col = this.entitiesTableConfig.columns.indexOf(column); const index = row * this.entitiesTableConfig.columns.length + col; let res = this.cellContentCache[index]; diff --git a/ui-ngx/src/app/modules/home/models/entity/entities-table-config.models.ts b/ui-ngx/src/app/modules/home/models/entity/entities-table-config.models.ts index bcd8e793b3..614805ede5 100644 --- a/ui-ngx/src/app/modules/home/models/entity/entities-table-config.models.ts +++ b/ui-ngx/src/app/modules/home/models/entity/entities-table-config.models.ts @@ -79,7 +79,7 @@ export interface HeaderActionDescriptor { onAction: ($event: MouseEvent) => void; } -export type EntityTableColumnType = 'content' | 'action'; +export type EntityTableColumnType = 'content' | 'action' | 'link'; export class BaseEntityTableColumn> { constructor(public type: EntityTableColumnType, @@ -116,6 +116,16 @@ export class EntityActionTableColumn> extends BaseEnti } } +export class EntityLinkTableColumn> extends BaseEntityTableColumn { + constructor(public key: string, + public title: string, + public width: string = '0px', + public cellContentFunction: CellContentFunction = (entity, property) => entity[property] ? entity[property] : '', + public entityURL: (entity) => string) { + super('link', key, title, width, false); + } +} + export class DateEntityTableColumn> extends EntityTableColumn { constructor(key: string, title: string, @@ -131,7 +141,7 @@ export class DateEntityTableColumn> extends EntityTabl } } -export type EntityColumn> = EntityTableColumn | EntityActionTableColumn; +export type EntityColumn> = EntityTableColumn | EntityActionTableColumn | EntityLinkTableColumn; export class EntityTableConfig, P extends PageLink = PageLink, L extends BaseData = T> {