login_bar.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { login_manager } from "./login_manager.js";
  2. import { login_prompt } from "./login_prompt.js";
  3. import { product_adder } from "./product_adder.js";
  4. import { import_products } from "./import_products.js";
  5. export class login_bar {
  6. #manager;
  7. constructor(target) {
  8. this.#manager = new login_manager();
  9. if (!this.#manager.logged_in) {
  10. this.#not_logged(target);
  11. return;
  12. }
  13. this.#logged(target);
  14. }
  15. #not_login_propertly() {
  16. this.#manager.logout();
  17. location.reload();
  18. }
  19. async #logged(target) {
  20. const user = await this.#manager.get_user();
  21. if (user === null) {
  22. this.#not_login_propertly();
  23. }
  24. const info_icon = document.createElement("span");
  25. info_icon.classList.add("icon");
  26. info_icon.classList.add("material-icons");
  27. info_icon.innerText = "account_circle";
  28. const info_content = document.createElement("span");
  29. info_content.innerText = user.nick;
  30. const info = document.createElement("p");
  31. info.classList.add("login-info");
  32. info.appendChild(info_icon);
  33. info.appendChild(info_content);
  34. target.appendChild(info);
  35. const logout_button = document.createElement("button");
  36. logout_button.innerText = "logout";
  37. logout_button.classList.add("logout-button");
  38. logout_button.classList.add("material-icons");
  39. target.appendChild(logout_button);
  40. const add_product_button = document.createElement("button");
  41. add_product_button.innerText = "add";
  42. add_product_button.classList.add("add-product-button");
  43. add_product_button.classList.add("material-icons");
  44. target.appendChild(add_product_button);
  45. const import_products_button = document.createElement("button");
  46. import_products_button.innerText = "dataset_linked";
  47. import_products_button.classList.add("material-icons");
  48. import_products_button.classList.add("import-products-button");
  49. target.appendChild(import_products_button);
  50. add_product_button.addEventListener("click", () => {
  51. new product_adder().show();
  52. });
  53. import_products_button.addEventListener("click", () => {
  54. new import_products().show();
  55. });
  56. logout_button.addEventListener("click", () => {
  57. this.#manager.logout();
  58. location.reload();
  59. });
  60. }
  61. #not_logged(target) {
  62. const login_button = document.createElement("button");
  63. login_button.innerText = "account_circle";
  64. login_button.classList.add("login-button");
  65. login_button.classList.add("material-icons");
  66. target.appendChild(login_button);
  67. new login_prompt(login_button);
  68. }
  69. }