financial-assistant

Форк
0
76 строк · 2.1 Кб
1
import KnowledgeBase from "./knowledgeBase/knowledgeBase";
2
import Home from "./home/home";
3
import Assistant from "./assistant/assistant";
4
import DataType from "../contracts/types";
5
import { TableData } from "../contracts/interfaces";
6
import EventObserver from "../observer/observer";
7
import { EventTypes } from "../contracts/enums";
8
class View {
9
  private home: Home;
10
  private assistant: Assistant;
11
  private observer: EventObserver;
12
  public knowledgeBase: KnowledgeBase;
13

14
  private mainTag: HTMLElement;
15
  public prevPageButton: HTMLElement;
16

17
  constructor(observer: EventObserver) {
18
    this.observer = observer;
19
    this.home = new Home(observer);
20
    this.knowledgeBase = new KnowledgeBase();
21
    this.assistant = new Assistant(observer);
22

23
    this.mainTag = this.home.main;
24
    this.prevPageButton = this.setPrevPageButton();
25
  }
26

27
  private setPrevPageButton(): HTMLElement {
28
    const button = document.createElement("div");
29
    button.classList.add("main__prev-page");
30
    this.mainTag.appendChild(button);
31

32
    button.addEventListener("click", () => {
33
      this.observer.notify(EventTypes.CHANGE_PAGE);
34
    });
35
    return button;
36
  }
37

38
  private removePrevPageButton(): void {
39
    const prevPageButton = document.querySelector(".main__prev-page");
40
    prevPageButton?.remove();
41
  }
42

43
  public renderStartPage(): void {
44
    this.home.renderStartPage();
45
    this.updateMainTag(this.home.tag);
46
    this.removePrevPageButton();
47
  }
48

49
  public renderAssistantPage(): void {
50
    this.assistant.renderAssistantPage();
51
    this.updateMainTag(this.assistant.tag);
52
  }
53

54
  public renderKnowledgeBasePage(
55
    data: DataType[] | [],
56
    isList?: boolean
57
  ): void {
58
    this.knowledgeBase.drawButtons(data, isList);
59
    this.updateMainTag(this.knowledgeBase.tag);
60
  }
61

62
  public renderKnowledgeBaseTable(data: TableData[] | []): void {
63
    this.knowledgeBase.fillTable(data);
64
  }
65

66
  private updateMainTag(newTag: HTMLElement | undefined) {
67
    while (this.mainTag.firstChild) {
68
      this.mainTag.removeChild(this.mainTag.firstChild);
69
    }
70

71
    if (newTag) this.mainTag.appendChild(newTag);
72
    this.setPrevPageButton();
73
  }
74
}
75

76
export default View;
77

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.