Source: map/importer/ImporterWindow.js

  1. import { TabGroup } from "../../ui/TabGroup.js";
  2. import { Window } from "../../ui/Window.js";
  3. import { DwsUi } from "./ui/DwsUi.js";
  4. import { ServiceUi } from "./ui/ServiceUi.js";
  5. import { CatalogUi } from "./ui/CatalogUi.js";
  6. import { FileUi } from "./ui/FileUi.js";
  7. import { StaUi } from "./ui/StaUi.js";
  8. import "./ImporterWindow.css";
  9. export { ImporterWindow };
  10. /**
  11. * Tool for importing layers from different sources
  12. *
  13. * @memberof vef.map.importer
  14. */
  15. class ImporterWindow extends Window {
  16. constructor(target, options) {
  17. super(target, {
  18. draggable: true,
  19. title: "Data Importer",
  20. width: "500px",
  21. responsive: true
  22. });
  23. this.events["add_layers"] = [];
  24. this.events["show_info"] = [];
  25. this.options_ = Object.assign({
  26. "catalog": {},
  27. "service": {},
  28. "file": {},
  29. "dws": {},
  30. "sta": {}
  31. }, options || {});
  32. this.importers_ = [];
  33. this.tabGroup_ = new TabGroup();
  34. this.getElement().classList.add("importer-window");
  35. this.setContent(this.tabGroup_.getElement());
  36. this.initImporters_();
  37. }
  38. initImporters_() {
  39. const importers = {
  40. "service": ServiceUi,
  41. "dws": DwsUi,
  42. "catalog": CatalogUi,
  43. "file": FileUi,
  44. "sta": StaUi
  45. };
  46. for (let i in this.options_) {
  47. if (i in importers) {
  48. this.addImporter_(new importers[i](null, this.options_[i]));
  49. }
  50. }
  51. }
  52. addImporter_(importer) {
  53. this.importers_.push(importer);
  54. this.tabGroup_.addGroup(importer.title, importer.getElement());
  55. importer.on("add_layers", (layers) => {
  56. this.fire("add_layers", layers);
  57. });
  58. if ("show_info" in importer.events) {
  59. importer.on("show_info", layer => {
  60. this.fire("show_info", layer);
  61. });
  62. }
  63. if ("close" in importer.events) {
  64. importer.on("close", () => this.close());
  65. }
  66. }
  67. }