@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
44 lines (43 loc) • 1.43 kB
JavaScript
import GirafeSingleton from '../../base/GirafeSingleton';
export default class ComponentManager extends GirafeSingleton {
constructor() {
super(...arguments);
Object.defineProperty(this, "components", {
enumerable: true,
configurable: true,
writable: true,
value: {}
});
Object.defineProperty(this, "registeredCallbacks", {
enumerable: true,
configurable: true,
writable: true,
value: []
});
Object.defineProperty(this, "registeredCallbacksClasses", {
enumerable: true,
configurable: true,
writable: true,
value: []
});
}
registerComponent(component) {
if (this.components[component.name] == undefined) {
this.components[component.name] = [];
}
this.components[component.name].push(component);
for (let i = 0; i < this.registeredCallbacksClasses.length; i++) {
if (component instanceof this.registeredCallbacksClasses[i]) {
this.registeredCallbacks[i].forEach((callback) => callback(component));
}
}
}
getComponents(type) {
return Object.values(this.components)
.flat()
.filter((c) => c instanceof type);
}
getComponentsByName(name) {
return this.components[name];
}
}