import { TabGroup } from "../../ui/TabGroup.js";
import { Window } from "../../ui/Window.js";
import { DwsUi } from "./ui/DwsUi.js";
import { ServiceUi } from "./ui/ServiceUi.js";
import { CatalogUi } from "./ui/CatalogUi.js";
import { FileUi } from "./ui/FileUi.js";
import { StaUi } from "./ui/StaUi.js";
import "./ImporterWindow.css";
export { ImporterWindow };
/**
* Tool for importing layers from different sources
*
* @memberof vef.map.importer
*/
class ImporterWindow extends Window {
constructor(target, options) {
super(target, {
draggable: true,
title: "Data Importer",
width: "500px",
responsive: true
});
this.events["add_layers"] = [];
this.events["show_info"] = [];
this.options_ = Object.assign({
"catalog": {},
"service": {},
"file": {},
"dws": {},
"sta": {}
}, options || {});
this.importers_ = [];
this.tabGroup_ = new TabGroup();
this.getElement().classList.add("importer-window");
this.setContent(this.tabGroup_.getElement());
this.initImporters_();
}
initImporters_() {
const importers = {
"service": ServiceUi,
"dws": DwsUi,
"catalog": CatalogUi,
"file": FileUi,
"sta": StaUi
};
for (let i in this.options_) {
if (i in importers) {
this.addImporter_(new importers[i](null, this.options_[i]));
}
}
}
addImporter_(importer) {
this.importers_.push(importer);
this.tabGroup_.addGroup(importer.title, importer.getElement());
importer.on("add_layers", (layers) => {
this.fire("add_layers", layers);
});
if ("show_info" in importer.events) {
importer.on("show_info", layer => {
this.fire("show_info", layer);
});
}
if ("close" in importer.events) {
importer.on("close", () => this.close());
}
}
}