Users.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import {f, dEvent} from "../main.js";
  2. export default class Users extends HTMLElement {
  3. constructor() {
  4. super();
  5. this.users = [];
  6. this.data = {};
  7. this.user = null;
  8. this.renderer = false;
  9. this.bindEvents();
  10. }
  11. connectedCallback() {
  12. if (!this.renderer) {
  13. this.render(this.getTemplateUsers());
  14. }
  15. }
  16. render(template) {
  17. this.renderer = true;
  18. this.innerHTML = template;
  19. this.users.forEach(e => {
  20. this.append(e);
  21. })
  22. }
  23. getTemplateUsers() {
  24. return `
  25. <h3>Пользователи</h3>
  26. <div class="message"></div>
  27. `
  28. }
  29. bindEvents() {
  30. console.log("BIND EVENT - " + this.constructor.name)
  31. document.addEventListener('user-login', (e) => {
  32. this.user = e.detail;
  33. this.loadUsers();
  34. this.render(this.getTemplateUsers());
  35. });
  36. document.addEventListener('user-out', () => {
  37. this.render(null);
  38. });
  39. }
  40. clear() {
  41. this.users = [];
  42. this.innerHTML = '';
  43. }
  44. addUser(user) {
  45. this.users.push(this.createUser(user));
  46. }
  47. createUser(data) {
  48. let user = document.createElement('shop-admin-user');
  49. user.dataset.id = data.id;
  50. user.dataset.name = data.name;
  51. user.dataset.status = data.status;
  52. user.dataset.group = data.group;
  53. return user;
  54. }
  55. async loadUsers() {
  56. let list = (await f('user', 'get', this.user.api_token)).data;
  57. // console.log(list)
  58. list.forEach(el => this.addUser(el));
  59. this.users.forEach(e => {
  60. this.append(e);
  61. })
  62. }
  63. }