Merge pull request #9650 from rusikv/enhancement/alarm-table-entity-links
Added entity links to alarm table originator column
This commit is contained in:
commit
d689bab1b2
@ -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<AlarmInfo, TimePageLink>
|
||||
this.columns.push(
|
||||
new DateEntityTableColumn<AlarmInfo>('createdTime', 'alarm.created-time', this.datePipe, '150px'));
|
||||
this.columns.push(
|
||||
new EntityTableColumn<AlarmInfo>('originatorName', 'alarm.originator', '25%',
|
||||
(entity) => entity.originatorName, entity => ({}), false));
|
||||
new EntityLinkTableColumn<AlarmInfo>('originatorName', 'alarm.originator', '25%',
|
||||
(entity) => entity.originatorName,
|
||||
(entity) => getEntityDetailsPageURL(entity.originator.id, entity.originator.entityType as EntityType)));
|
||||
this.columns.push(
|
||||
new EntityTableColumn<AlarmInfo>('type', 'alarm.type', '25%',
|
||||
entity => this.utilsService.customTranslation(entity.type, entity.type)));
|
||||
|
||||
@ -165,7 +165,12 @@
|
||||
[matTooltip]="cellTooltip(entity, column, row)"
|
||||
matTooltipPosition="above"
|
||||
[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-container [ngSwitch]="column.actionCell.type">
|
||||
<ng-template [ngSwitchCase]="cellActionType.COPY_BUTTON">
|
||||
|
||||
@ -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<BaseData<HasId>>);
|
||||
this.actionColumns = this.entitiesTableConfig.columns.filter(
|
||||
(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) {
|
||||
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];
|
||||
|
||||
@ -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<T extends BaseData<HasId>> {
|
||||
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> {
|
||||
constructor(key: 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> {
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user