blob: a2ae6300f270fc16e9c508de9943fdeec691d0b7 [file] [log] [blame]
import {
Component, EventEmitter,
OnDestroy,
OnInit, Output,
} from '@angular/core';
import {
DetailsPanelBaseImpl,
FnService,
LionService,
LogService,
WebSocketService
} from 'org_onosproject_onos/web/gui2-fw-lib/public_api';
import {FormControl, FormGroup} from '@angular/forms';
import { MapObject } from '../../layer/maputils';
interface MapSelection {
order: string[];
maps: Object[];
}
@Component({
selector: 'onos-mapselector',
templateUrl: './mapselector.component.html',
styleUrls: ['./mapselector.component.css', './mapselector.theme.css', '../../topology.common.css']
})
export class MapSelectorComponent extends DetailsPanelBaseImpl implements OnInit, OnDestroy {
@Output() chosenMap = new EventEmitter<MapObject>();
lionFn; // Function
mapSelectorResponse: MapSelection = <MapSelection>{
order: [],
maps: []
};
form = new FormGroup({
mapid: new FormControl(this.mapSelectorResponse.order[0]),
});
constructor(
protected fs: FnService,
protected log: LogService,
protected wss: WebSocketService,
private lion: LionService
) {
super(fs, log, wss, 'topo');
if (this.lion.ubercache.length === 0) {
this.lionFn = this.dummyLion;
this.lion.loadCbs.set('topoms', () => this.doLion());
} else {
this.doLion();
}
this.log.debug('Topo MapSelectorComponent constructed');
}
ngOnInit() {
this.wss.bindHandlers(new Map<string, (data) => void>([
['mapSelectorResponse', (data) => {
this.mapSelectorResponse = data;
this.form.setValue({'mapid': this.mapSelectorResponse.order[0]});
}
]
]));
this.wss.sendEvent('mapSelectorRequest', {});
this.log.debug('Topo MapSelectorComponent initialized');
}
/**
* When the component is being unloaded then unbind the WSS handler.
*/
ngOnDestroy(): void {
this.wss.unbindHandlers(['mapSelectorResponse']);
this.log.debug('Topo MapSelectorComponent destroyed');
}
/**
* Read the LION bundle for panel and set up the lionFn
*/
doLion() {
this.lionFn = this.lion.bundle('core.view.Topo');
}
choice(mapid: Object): void {
if (mapid) {
this.chosenMap.emit(<MapObject>this.mapSelectorResponse.maps[mapid['mapid']]);
} else {
this.chosenMap.emit(<MapObject>{});
}
}
}