|
|
@ -23,12 +23,15 @@ import { |
|
|
OnDestroy, |
|
|
OnDestroy, |
|
|
OnInit, |
|
|
OnInit, |
|
|
Output, |
|
|
Output, |
|
|
ViewChild |
|
|
ViewChild, |
|
|
|
|
|
ViewChildren, |
|
|
|
|
|
QueryList, |
|
|
|
|
|
ContentChildren, AfterViewInit |
|
|
} from '@angular/core'; |
|
|
} from '@angular/core'; |
|
|
import { PageComponent } from '@shared/components/page.component'; |
|
|
import { PageComponent } from '@shared/components/page.component'; |
|
|
import { Store } from '@ngrx/store'; |
|
|
import { Store } from '@ngrx/store'; |
|
|
import { AppState } from '@core/core.state'; |
|
|
import { AppState } from '@core/core.state'; |
|
|
import { EntityTableConfig } from '@shared/components/entity/entities-table-config.models'; |
|
|
import { EntityTableConfig } from '@home/models/entity/entities-table-config.models'; |
|
|
import { BaseData, HasId } from '@shared/models/base-data'; |
|
|
import { BaseData, HasId } from '@shared/models/base-data'; |
|
|
import { |
|
|
import { |
|
|
EntityType, |
|
|
EntityType, |
|
|
@ -36,11 +39,12 @@ import { |
|
|
EntityTypeTranslation |
|
|
EntityTypeTranslation |
|
|
} from '@shared/models/entity-type.models'; |
|
|
} from '@shared/models/entity-type.models'; |
|
|
import { NgForm } from '@angular/forms'; |
|
|
import { NgForm } from '@angular/forms'; |
|
|
import { EntityComponent } from '@shared/components/entity/entity.component'; |
|
|
import { EntityComponent } from './entity.component'; |
|
|
import { TbAnchorComponent } from '@shared/components/tb-anchor.component'; |
|
|
import { TbAnchorComponent } from '@shared/components/tb-anchor.component'; |
|
|
import { EntityAction } from '@shared/components/entity/entity-component.models'; |
|
|
import { EntityAction } from '@home/models/entity/entity-component.models'; |
|
|
import { Subscription } from 'rxjs'; |
|
|
import { Subscription } from 'rxjs'; |
|
|
// import { AuditLogMode } from '@shared/models/audit-log.models';
|
|
|
import { MatTabGroup, MatTab } from '@angular/material'; |
|
|
|
|
|
import { EntityTabsComponent } from '@home/components/entity/entity-tabs.component'; |
|
|
|
|
|
|
|
|
@Component({ |
|
|
@Component({ |
|
|
selector: 'tb-entity-details-panel', |
|
|
selector: 'tb-entity-details-panel', |
|
|
@ -48,7 +52,7 @@ import { Subscription } from 'rxjs'; |
|
|
styleUrls: ['./entity-details-panel.component.scss'], |
|
|
styleUrls: ['./entity-details-panel.component.scss'], |
|
|
changeDetection: ChangeDetectionStrategy.OnPush |
|
|
changeDetection: ChangeDetectionStrategy.OnPush |
|
|
}) |
|
|
}) |
|
|
export class EntityDetailsPanelComponent extends PageComponent implements OnInit, OnDestroy { |
|
|
export class EntityDetailsPanelComponent extends PageComponent implements OnInit, AfterViewInit, OnDestroy { |
|
|
|
|
|
|
|
|
@Input() entitiesTableConfig: EntityTableConfig<BaseData<HasId>>; |
|
|
@Input() entitiesTableConfig: EntityTableConfig<BaseData<HasId>>; |
|
|
|
|
|
|
|
|
@ -62,6 +66,7 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit |
|
|
entityAction = new EventEmitter<EntityAction<BaseData<HasId>>>(); |
|
|
entityAction = new EventEmitter<EntityAction<BaseData<HasId>>>(); |
|
|
|
|
|
|
|
|
entityComponent: EntityComponent<BaseData<HasId>>; |
|
|
entityComponent: EntityComponent<BaseData<HasId>>; |
|
|
|
|
|
entityTabsComponent: EntityTabsComponent<BaseData<HasId>>; |
|
|
detailsForm: NgForm; |
|
|
detailsForm: NgForm; |
|
|
|
|
|
|
|
|
isEditValue = false; |
|
|
isEditValue = false; |
|
|
@ -71,6 +76,12 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit |
|
|
|
|
|
|
|
|
@ViewChild('entityDetailsForm', {static: true}) entityDetailsFormAnchor: TbAnchorComponent; |
|
|
@ViewChild('entityDetailsForm', {static: true}) entityDetailsFormAnchor: TbAnchorComponent; |
|
|
|
|
|
|
|
|
|
|
|
@ViewChild('entityTabs', {static: true}) entityTabsAnchor: TbAnchorComponent; |
|
|
|
|
|
|
|
|
|
|
|
@ViewChild(MatTabGroup, {static: true}) matTabGroup: MatTabGroup; |
|
|
|
|
|
|
|
|
|
|
|
@ViewChildren(MatTab) inclusiveTabs: QueryList<MatTab>; |
|
|
|
|
|
|
|
|
translations: EntityTypeTranslation; |
|
|
translations: EntityTypeTranslation; |
|
|
resources: EntityTypeResource; |
|
|
resources: EntityTypeResource; |
|
|
entity: BaseData<HasId>; |
|
|
entity: BaseData<HasId>; |
|
|
@ -94,6 +105,9 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit |
|
|
set isEdit(val: boolean) { |
|
|
set isEdit(val: boolean) { |
|
|
this.isEditValue = val; |
|
|
this.isEditValue = val; |
|
|
this.entityComponent.isEdit = val; |
|
|
this.entityComponent.isEdit = val; |
|
|
|
|
|
if (this.entityTabsComponent) { |
|
|
|
|
|
this.entityTabsComponent.isEdit = val; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
get isEdit() { |
|
|
get isEdit() { |
|
|
@ -125,6 +139,19 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit |
|
|
this.entityActionSubscription = this.entityComponent.entityAction.subscribe((action) => { |
|
|
this.entityActionSubscription = this.entityComponent.entityAction.subscribe((action) => { |
|
|
this.entityAction.emit(action); |
|
|
this.entityAction.emit(action); |
|
|
}); |
|
|
}); |
|
|
|
|
|
this.buildEntityTabsComponent(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
buildEntityTabsComponent() { |
|
|
|
|
|
if (this.entitiesTableConfig.entityTabsComponent) { |
|
|
|
|
|
const componentTabsFactory = this.componentFactoryResolver.resolveComponentFactory(this.entitiesTableConfig.entityTabsComponent); |
|
|
|
|
|
const viewContainerRef = this.entityTabsAnchor.viewContainerRef; |
|
|
|
|
|
viewContainerRef.clear(); |
|
|
|
|
|
const componentTabsRef = viewContainerRef.createComponent(componentTabsFactory); |
|
|
|
|
|
this.entityTabsComponent = componentTabsRef.instance; |
|
|
|
|
|
this.entityTabsComponent.isEdit = this.isEdit; |
|
|
|
|
|
this.entityTabsComponent.entitiesTableConfig = this.entitiesTableConfig; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
reload(): void { |
|
|
reload(): void { |
|
|
@ -133,6 +160,9 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit |
|
|
(entity) => { |
|
|
(entity) => { |
|
|
this.entity = entity; |
|
|
this.entity = entity; |
|
|
this.entityComponent.entity = entity; |
|
|
this.entityComponent.entity = entity; |
|
|
|
|
|
if (this.entityTabsComponent) { |
|
|
|
|
|
this.entityTabsComponent.entity = entity; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
|
@ -145,6 +175,9 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit |
|
|
this.isEdit = isEdit; |
|
|
this.isEdit = isEdit; |
|
|
if (!this.isEdit) { |
|
|
if (!this.isEdit) { |
|
|
this.entityComponent.entity = this.entity; |
|
|
this.entityComponent.entity = this.entity; |
|
|
|
|
|
if (this.entityTabsComponent) { |
|
|
|
|
|
this.entityTabsComponent.entity = this.entity; |
|
|
|
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
this.selectedTab = 0; |
|
|
this.selectedTab = 0; |
|
|
} |
|
|
} |
|
|
@ -157,6 +190,9 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit |
|
|
(entity) => { |
|
|
(entity) => { |
|
|
this.entity = entity; |
|
|
this.entity = entity; |
|
|
this.entityComponent.entity = entity; |
|
|
this.entityComponent.entity = entity; |
|
|
|
|
|
if (this.entityTabsComponent) { |
|
|
|
|
|
this.entityTabsComponent.entity = entity; |
|
|
|
|
|
} |
|
|
this.isEdit = false; |
|
|
this.isEdit = false; |
|
|
this.entityUpdated.emit(this.entity); |
|
|
this.entityUpdated.emit(this.entity); |
|
|
} |
|
|
} |
|
|
@ -164,4 +200,17 @@ export class EntityDetailsPanelComponent extends PageComponent implements OnInit |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ngAfterViewInit(): void { |
|
|
|
|
|
if (this.entityTabsComponent) { |
|
|
|
|
|
this.entityTabsComponent.entityTabsChanged.subscribe( |
|
|
|
|
|
(entityTabs) => { |
|
|
|
|
|
if (entityTabs) { |
|
|
|
|
|
this.matTabGroup._tabs.reset([...this.inclusiveTabs.toArray(), ...entityTabs]); |
|
|
|
|
|
this.matTabGroup._tabs.notifyOnChanges(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |