core.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { search } from "./search.js";
  2. import { pixel, percent, auto } from "./size.js";
  3. import { position, place_top, place_left } from "./position.js";
  4. import { sticky } from "./sticky.js";
  5. import { loader } from "./loader.js";
  6. import { database } from "./database.js";
  7. import { logo } from "./logo.js";
  8. import { chooser } from "./chooser.js";
  9. import { workspace } from "./workspace.js";
  10. document.addEventListener("DOMContentLoaded", async () => {
  11. const container = document.querySelector(".container");
  12. const parser = new loader("./database", "project.json");
  13. await parser.load();
  14. const store = new database(parser.loaded);
  15. const top_bar_builder = new sticky();
  16. top_bar_builder.width = new percent(100);
  17. top_bar_builder.height = new auto();
  18. top_bar_builder.position = new place_top();
  19. const top_bar = top_bar_builder.element;
  20. top_bar.className = "top-bar";
  21. top_bar.appendChild(document.createElement("div"));
  22. const search_bar = new search(store);
  23. top_bar.appendChild(search_bar.ui);
  24. const name = new logo(store.content.name);
  25. top_bar.appendChild(name.ui);
  26. const left_bar_builder = new sticky();
  27. left_bar_builder.width = new pixel(240);
  28. left_bar_builder.height = new percent(100);
  29. left_bar_builder.position = new place_left();
  30. const left_bar = left_bar_builder.element;
  31. left_bar.className = "left-bar";
  32. const center = new workspace();
  33. center.update(store.content.first_submission);
  34. const workspace_updater = (target) => {
  35. center.update(target);
  36. };
  37. const choose = new chooser(store, workspace_updater);
  38. left_bar.appendChild(choose.ui);
  39. container.appendChild(top_bar);
  40. container.appendChild(left_bar);
  41. container.appendChild(center.ui);
  42. });