Browse Source

UI: alarm table originator colums now links to entity

pull/9650/head
rusikv 3 years ago
parent
commit
bcf9317032
  1. 8
      ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts
  2. 7
      ui-ngx/src/app/modules/home/components/entity/entities-table.component.html
  3. 5
      ui-ngx/src/app/modules/home/components/entity/entities-table.component.ts
  4. 14
      ui-ngx/src/app/modules/home/models/entity/entities-table-config.models.ts

8
ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts

@ -17,6 +17,7 @@
import { import {
CellActionDescriptorType, CellActionDescriptorType,
DateEntityTableColumn, DateEntityTableColumn,
EntityLinkTableColumn,
EntityTableColumn, EntityTableColumn,
EntityTableConfig EntityTableConfig
} from '@home/models/entity/entities-table-config.models'; } from '@home/models/entity/entities-table-config.models';
@ -59,7 +60,7 @@ import {
AlarmAssigneePanelData AlarmAssigneePanelData
} from '@home/components/alarm/alarm-assignee-panel.component'; } from '@home/components/alarm/alarm-assignee-panel.component';
import { ComponentPortal } from '@angular/cdk/portal'; 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 { UtilsService } from '@core/services/utils.service';
import { AlarmFilterConfig } from '@shared/models/query/query.models'; import { AlarmFilterConfig } from '@shared/models/query/query.models';
import { EntityService } from '@core/http/entity.service'; import { EntityService } from '@core/http/entity.service';
@ -113,8 +114,9 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
this.columns.push( this.columns.push(
new DateEntityTableColumn<AlarmInfo>('createdTime', 'alarm.created-time', this.datePipe, '150px')); new DateEntityTableColumn<AlarmInfo>('createdTime', 'alarm.created-time', this.datePipe, '150px'));
this.columns.push( this.columns.push(
new EntityTableColumn<AlarmInfo>('originatorName', 'alarm.originator', '25%', new EntityLinkTableColumn<AlarmInfo>('originatorName', 'alarm.originator', '25%',
(entity) => entity.originatorName, entity => ({}), false)); (entity) => entity.originatorName,
(entity) => getEntityDetailsPageURL(entity.originator.id, entity.originator.entityType as EntityType)));
this.columns.push( this.columns.push(
new EntityTableColumn<AlarmInfo>('type', 'alarm.type', '25%', new EntityTableColumn<AlarmInfo>('type', 'alarm.type', '25%',
entity => this.utilsService.customTranslation(entity.type, entity.type))); entity => this.utilsService.customTranslation(entity.type, entity.type)));

7
ui-ngx/src/app/modules/home/components/entity/entities-table.component.html

@ -165,7 +165,12 @@
[matTooltip]="cellTooltip(entity, column, row)" [matTooltip]="cellTooltip(entity, column, row)"
matTooltipPosition="above" matTooltipPosition="above"
[ngStyle]="cellStyle(entity, column, row)"> [ngStyle]="cellStyle(entity, column, row)">
<span [innerHTML]="cellContent(entity, column, row)"></span> <ng-container *ngIf="column.type == 'link'; else defaultContent">
<a [routerLink]="column.entityURL(entity)" [innerHTML]="cellContent(entity, column, row)" (click)="$event.stopPropagation();"></a>
</ng-container>
<ng-template #defaultContent>
<span [innerHTML]="cellContent(entity, column, row)"></span>
</ng-template>
<ng-template [ngIf]="column.actionCell"> <ng-template [ngIf]="column.actionCell">
<ng-container [ngSwitch]="column.actionCell.type"> <ng-container [ngSwitch]="column.actionCell.type">
<ng-template [ngSwitchCase]="cellActionType.COPY_BUTTON"> <ng-template [ngSwitchCase]="cellActionType.COPY_BUTTON">

5
ui-ngx/src/app/modules/home/components/entity/entities-table.component.ts

@ -48,6 +48,7 @@ import {
CellActionDescriptorType, CellActionDescriptorType,
EntityActionTableColumn, EntityActionTableColumn,
EntityColumn, EntityColumn,
EntityLinkTableColumn,
EntityTableColumn, EntityTableColumn,
EntityTableConfig, EntityTableConfig,
GroupActionDescriptor, GroupActionDescriptor,
@ -613,7 +614,7 @@ export class EntitiesTableComponent extends PageComponent implements IEntitiesTa
columnsUpdated(resetData: boolean = false) { columnsUpdated(resetData: boolean = false) {
this.entityColumns = this.entitiesTableConfig.columns.filter( this.entityColumns = this.entitiesTableConfig.columns.filter(
(column) => column instanceof EntityTableColumn) (column) => column instanceof EntityTableColumn || column instanceof EntityLinkTableColumn)
.map(column => column as EntityTableColumn<BaseData<HasId>>); .map(column => column as EntityTableColumn<BaseData<HasId>>);
this.actionColumns = this.entitiesTableConfig.columns.filter( this.actionColumns = this.entitiesTableConfig.columns.filter(
(column) => column instanceof EntityActionTableColumn) (column) => column instanceof EntityActionTableColumn)
@ -670,7 +671,7 @@ export class EntitiesTableComponent extends PageComponent implements IEntitiesTa
} }
cellContent(entity: BaseData<HasId>, column: EntityColumn<BaseData<HasId>>, row: number) { cellContent(entity: BaseData<HasId>, column: EntityColumn<BaseData<HasId>>, row: number) {
if (column instanceof EntityTableColumn) { if (column instanceof EntityTableColumn || column instanceof EntityLinkTableColumn) {
const col = this.entitiesTableConfig.columns.indexOf(column); const col = this.entitiesTableConfig.columns.indexOf(column);
const index = row * this.entitiesTableConfig.columns.length + col; const index = row * this.entitiesTableConfig.columns.length + col;
let res = this.cellContentCache[index]; let res = this.cellContentCache[index];

14
ui-ngx/src/app/modules/home/models/entity/entities-table-config.models.ts

@ -79,7 +79,7 @@ export interface HeaderActionDescriptor {
onAction: ($event: MouseEvent) => void; onAction: ($event: MouseEvent) => void;
} }
export type EntityTableColumnType = 'content' | 'action'; export type EntityTableColumnType = 'content' | 'action' | 'link';
export class BaseEntityTableColumn<T extends BaseData<HasId>> { export class BaseEntityTableColumn<T extends BaseData<HasId>> {
constructor(public type: EntityTableColumnType, constructor(public type: EntityTableColumnType,
@ -116,6 +116,16 @@ export class EntityActionTableColumn<T extends BaseData<HasId>> extends BaseEnti
} }
} }
export class EntityLinkTableColumn<T extends BaseData<HasId>> extends BaseEntityTableColumn<T> {
constructor(public key: string,
public title: string,
public width: string = '0px',
public cellContentFunction: CellContentFunction<T> = (entity, property) => entity[property] ? entity[property] : '',
public entityURL: (entity) => string) {
super('link', key, title, width, false);
}
}
export class DateEntityTableColumn<T extends BaseData<HasId>> extends EntityTableColumn<T> { export class DateEntityTableColumn<T extends BaseData<HasId>> extends EntityTableColumn<T> {
constructor(key: string, constructor(key: string,
title: string, title: string,
@ -131,7 +141,7 @@ export class DateEntityTableColumn<T extends BaseData<HasId>> extends EntityTabl
} }
} }
export type EntityColumn<T extends BaseData<HasId>> = EntityTableColumn<T> | EntityActionTableColumn<T>; export type EntityColumn<T extends BaseData<HasId>> = EntityTableColumn<T> | EntityActionTableColumn<T> | EntityLinkTableColumn<T>;
export class EntityTableConfig<T extends BaseData<HasId>, P extends PageLink = PageLink, L extends BaseData<HasId> = T> { export class EntityTableConfig<T extends BaseData<HasId>, P extends PageLink = PageLink, L extends BaseData<HasId> = T> {

Loading…
Cancel
Save