Home Reference Source Repository

src/app/core/application/header-menu.js

import { stageManager } from "./stage-manager";
import { FileParser } from "../parser/file-parser";
import { ParserOrchestrator } from "../parser/parser-orchestrator";
class HeaderMenu {
  constructor() { }
  bootstrap() {
    $("body").on("click", "#save", this.save.bind(this));
    $("body").on("click", "#open", this.open.bind(this));
    $("body").on("change", "#input-file", this.onFileChanged.bind(this));
  }
  save() {
    const layer = stageManager.getCurrentLayer();
    const file = layer.actionManager.save();
    const name = prompt("Sallet como", layer.name.replace(/ /g, "_").toLowerCase());
    if (name == undefined) return;
    const a = document.createElement("a"),
      url = URL.createObjectURL(file);
    a.href = url;
    a.download = `${name}.geo`;
    document.body.appendChild(a);
    a.click();
    setTimeout(function () {
      document.body.removeChild(a);
      window.URL.revokeObjectURL(url);
    }, 0);
  }
  open() {
    $("#input-file").click();
  }
  onFileChanged() {
    const files = $("#input-file")[0].files;
    if (files == undefined || files.length === 0) return;
    const reader = new FileReader();
    reader.onload = function () {
      const result = reader.result;
      const parser = new FileParser(result);
      const map = parser.parse();
      const orchestrator = new ParserOrchestrator(map);
      orchestrator.orchestrate();
    };
    reader.readAsText(files[0]);
  }
}
export const headerMenu = new HeaderMenu();