2019-11-25 13:34:51 +00:00
|
|
|
import { Component, Input, OnInit, ComponentFactoryResolver, ViewChild, SimpleChanges, ComponentFactory, Inject, Type} from '@angular/core';
|
|
|
|
import { Feature } from 'ol';
|
|
|
|
import { AbstractFeatureListFeatureComponent,FeatureListFeatureComponent } from '../feature-list-feature/feature-list-feature.component';
|
|
|
|
import { WidgetHostDirective } from '../widget-host/widget-host.directive';
|
|
|
|
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'fm-map-feature-list-feature-container',
|
|
|
|
template: `
|
|
|
|
<div>
|
|
|
|
<ng-template fm-map-widget-host></ng-template>
|
|
|
|
</div>
|
|
|
|
`
|
|
|
|
})
|
|
|
|
export class FeatureListFeatureContainerComponent {
|
|
|
|
|
|
|
|
constructor(private componentFactoryResolver: ComponentFactoryResolver, @Inject(AbstractFeatureListFeatureComponent) public featureLists: AbstractFeatureListFeatureComponent[] ) {
|
|
|
|
}
|
|
|
|
|
|
|
|
@Input() feature: Feature;
|
|
|
|
|
|
|
|
@ViewChild(WidgetHostDirective, { static: true }) widgetHost: WidgetHostDirective;
|
|
|
|
|
|
|
|
loadComponent() {
|
|
|
|
var componentFactory: ComponentFactory<AbstractFeatureListFeatureComponent> = this.componentFactoryResolver.resolveComponentFactory(FeatureListFeatureComponent); // default
|
2020-06-24 06:35:34 +00:00
|
|
|
|
|
|
|
let selected = -1;
|
|
|
|
let maxMatches =0;
|
|
|
|
for (let i = 0; i < this.featureLists.length; i++) {
|
|
|
|
let matches=0;
|
2019-11-25 13:34:51 +00:00
|
|
|
if (this.featureLists[i]['forItemType'] == this.feature.get("itemType")) {
|
2020-06-24 06:35:34 +00:00
|
|
|
matches++;
|
|
|
|
}
|
|
|
|
if(matches > maxMatches) {
|
|
|
|
selected=i;
|
|
|
|
maxMatches = matches;
|
2019-11-25 13:34:51 +00:00
|
|
|
}
|
2020-06-24 06:35:34 +00:00
|
|
|
}
|
|
|
|
if (selected >= 0) {
|
|
|
|
componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.featureLists[selected]['constructor'] as any);
|
|
|
|
}
|
|
|
|
|
2019-11-25 13:34:51 +00:00
|
|
|
const viewContainerRef = this.widgetHost.viewContainerRef;
|
|
|
|
viewContainerRef.clear();
|
|
|
|
|
|
|
|
const componentRef = viewContainerRef.createComponent(componentFactory);
|
|
|
|
(<AbstractFeatureListFeatureComponent>componentRef.instance).feature = this.feature;
|
|
|
|
}
|
|
|
|
|
|
|
|
ngOnChanges(changes: SimpleChanges) {
|
|
|
|
if (changes["feature"] && changes["feature"].currentValue) {
|
|
|
|
this.loadComponent();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|